Ich hab mit dem Programm ein wenig experimentiert. Bei mir hat AnalogIn0 ein anderes Verhalten, als die anderen. Vielleicht defekt? Auf jeden Fall funktioniert der Code so, wie er soll. (Hier AnalogIn 4 benutzt). Ich messe sowohl mit Arduino als auch mit Multimeter 1,44V an meiner Testbatterie.
Code:
#define LED_NEW 2
#define LED_OK 4
#define LED_OLD 6
#define VOLTAGE_IN 4
#define DELAY_LED 2000
// mit Multimeter gemessen: 5,07V zwischen GND-Pin und 5V-Pin
// mit Arduino gemessen: 1015 als Analogwert (A0) am 5V-Pin
#define VOLTAGE_FACTOR 5.07/1015
void setup() {
pinMode (LED_NEW, OUTPUT);
pinMode (LED_OK, OUTPUT);
pinMode (LED_OLD, OUTPUT);
Serial.begin(9600);
}
void switchLED(byte ledPin) {
digitalWrite(ledPin, HIGH);
delay(DELAY_LED);
digitalWrite(ledPin, LOW);
}
void loop() {
float voltage = VOLTAGE_FACTOR * analogRead(VOLTAGE_IN);
Serial.println(voltage);
if (voltage >= 1.5)
switchLED(LED_NEW);
else if (voltage < 1.5 && voltage > 1.4)
switchLED(LED_OK);
else
switchLED(LED_OLD);
}
Lesezeichen