Guten Abend zusammen,
ich bastle momentan an einem "Batterietester" und habe nun ein problem im Code, wo ich nicht mehr weiter weiß.
Zum Prinzip: Man legt eine AA-Batterie in das Rohr, ein Servo drückt einen Kontakt gegen die batterie, welche sich dadurch mit dem anderen Kontakt berührt. Ich kann also die Spannung der Batterie über zwei feste Kabel messen. (siehe Video) Wenn sie zwischen 1,5 und 1,8 Volt hat sollte eine grüne LED leuchten. Das messen funktioniert auch mit dem Arduino super und ich sehe immer die aktuelle Spannung im seriellen Monitor. Wenn ich den Wert aber als Bedingung nehme (siehe Code) leuchtet die LED immer für eine Sekunde, sobald der Servo in der ausgefahrenen Position ist. Auch, wenn sich keine oder eine leere Batterie zwischen den Kontakten befindet.
Hier ist der Code: Ich vermute dass ich irgendwas in der If-Bedingung falsch gemacht habe. Kann das sein und wenn ja was? Danke schonmal im Voraus!
#include <Servo.h>
Servo Kontaktservo;
void setup() {
Serial.begin(9600);
Kontaktservo.attach(9);
pinMode(13, OUTPUT);
}
void loop() {
Kontaktservo.write(104); //fährt Servo mit Kontaktpin an Batterie
delay(200);
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0); //soll Spannung messen & berechnen
Serial.println(voltage); //bis hierhin funktioniert alles
int data = Serial.read();
if (data > '1,5' && data < '1,8'); //prüft ob Spannung zwischen 1,5 & 1,8V liegt
{
digitalWrite(13, HIGH); //wenn ja, leuchtet kurz eine grüne LED auf
delay(1000);
digitalWrite(13, LOW);
}
Kontaktservo.write(78); //servo fährt von der batterie weg -> batterie kann entnommen werden
delay(5000);
}
Gruß Nicki