int num=6;//number of resitance used
unsigned long resistances[6]={100,1000,10000,51000,100000,220000};//values of resistances
int readpins[2]={A0,A1};//resistance connected to pins
const byte interruptPin=2;
int resistance_count=0;
int readpin_count=0;
float unknown_resistance;
float raw_value;
float known_voltage;
float min_ADC_value=27;
float max_ADC_value=1021;//can be changed if being used for some other microcontrollers
float total_voltage=5;
float convertToVoltage(float raw_value)
{
known_voltage=((raw_value-min_ADC_value)/(max_ADC_value-min_ADC_value))*total_voltage;//converts the adc value back to voltage
return known_voltage;
}
float find_resistance(float known_voltage, float known_resistance)
{
unknown_resistance=(total_voltage-known_voltage)*known_resistance/known_voltage;
return unknown_resistance;//using voltage divider rule find the unknown resistance
}
void readValue(){
Serial.println("");
raw_value=analogRead(readpins[readpin_count]);//read value on analog pin on the index i
Serial.print("Reading pin: ");
Serial.print(readpins[readpin_count]);
Serial.print(" raw_value: ");
Serial.println(raw_value);
known_voltage=convertToVoltage(raw_value);
Serial.print("Known_voltage: ");
Serial.println(known_voltage);
unknown_resistance=find_resistance(known_voltage,resistances[resistance_count]);
Serial.print("Known resistance: ");
Serial.print(resistances[resistance_count]);
Serial.print(" Unknown resistance: ");
Serial.println(unknown_resistance);
resistance_count++;
if(resistance_count==5){
readpin_count++;
}
if(resistance_count==num){
resistance_count=0;
readpin_count=0;
}
}
void setup() {
for (int i=0;i<num;i++)
{
pinMode(readpins[i], INPUT);
}
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(interruptPin),readValue,RISING);//when pin 2 is rising run the function readPin()
}
void loop() {
}