int num=6;//number of resitance used
unsigned long resistances[6]={100,1000,10000,51000,100000,220000};//values of resistances
int readpins[6]={A0,A1,A2,A3,A4,A5};//resistance connected to pins
const byte interruptPin=2;
int i=0;
float unknown_resistance;
float raw_value;
float known_voltage;
float max_ADC_value=1023;//can be changed if being used for some other microcontrollers
float total_voltage=5;
float convertToVoltage(float raw_value)
{
known_voltage=(raw_value/max_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[i]);//read value on analog pin on the index i
Serial.print("Reading pin: ");
Serial.print(readpins[i]);
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[i]);
Serial.print("Known resistance: ");
Serial.print(resistances[i]);
Serial.print(" Unknown resistance: ");
Serial.println(unknown_resistance);
i++;
if(i>num){
i=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() {
}