#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);
}