#define DRIVE_PIN 5
#define SENSE_PIN A0
#define R_SENSE 10.0
#define VCC 5.0
#define SAMPLES 32
void setup() {
Serial.begin(115200);
pinMode(DRIVE_PIN, OUTPUT);
digitalWrite(DRIVE_PIN, LOW);
delay(100);
Serial.println("Current-sense ohmmeter");
}
void loop() {
digitalWrite(DRIVE_PIN, HIGH);
delay(3);
float sum = 0;
for (int i = 0; i < SAMPLES; i++) {
sum += analogRead(SENSE_PIN);
delayMicroseconds(500);
}
digitalWrite(DRIVE_PIN, LOW);
float adc = sum / SAMPLES;
float Vmeas = adc * VCC / 1023.0;
float I = (VCC - Vmeas) / R_SENSE;
if (I <= 0.00001) {
Serial.println("Open / wiring issue");
} else {
float Rx = Vmeas / I;
Serial.print("Vmeas=");
Serial.print(Vmeas, 4);
Serial.print("V I=");
Serial.print(I, 4);
Serial.print("A Rx=");
Serial.print(Rx, 4);
Serial.println(" ohm");
}
delay(300);
}