Batterietester

Hallo liebes Forum,
ich habe die folgende Aufgabe:
Man soll den Arduino als Batterietester verwenden. Dazu soll eine 1,5Volt Batterie angeschlossen werden. Ist die spannung der Batterie mindestens 1,4V, dann soll eine grüne LED leuchten, bei einer Spannung kleiner als 1,2V eine rote LED und für den Bereich dazwischen eine gelbe LED.
Ich habe nun das Problem, dass immer alle LEDs leuchten. Hat jemand von euch einen Tipp für mich.

int sensor=A0;  //analoger Eingang A0 wird mit der Variable sensor ausgelesen
int messwert;  //Variable messwert wir definiert 
int volt;  // Variable volt wird definiert 
int ledgruen = 12;
int ledgelb = 11;
int ledrot = 10;  
  
void setup(){ 
  Serial.begin(9600);  //Verbindung zum seriellen Monitor
}

void loop(){
  float messwert=analogRead(sensor); //wert von A0(sensor) wird in der Variable Messwert gespeichert
  float volt=messwert/1024*5;  //Variable volt wird berechnet durch: messwert: 1024* volt

  Serial.println(volt); //Ausgabe der Variable volt auf den seriellen Monitor
  delay(500); //Pause 500ms
  
  if(volt>=1,4){
    digitalWrite(ledgruen,HIGH);
  
    
  }
    if (volt<1,4&&volt>=1,2){
      digitalWrite(ledgelb,HIGH);

     
    }
  if(volt<1,2){
    digitalWrite(ledrot,HIGH);

}
}

Danke schon einmal

Du solltest die LED-Pins als Ausgang konfigurieren. Wie hast Du die LEDs angeschlossen?

Gruß Tommy

Hier einmal der Link zu Tinkercad:

Hallo,

f(volt>=1,4)

solllte ein pumt sein

f(volt>=1.4)

Heinz

Danke, jetzt funktioniert es besser Wenn ich die Spannung hochdrehe schalten sich die LEDs auch nacheinander an. Aber aus gehen sie nicht.

Das hast Du ja auch nicht programiert. Überlege mal wann die ledgruen ausgehen muss.

Gruß Tommy

Hallo,

klar weil du sie nicht ausschaltest.

jeweils eine ein und die beiden anderen aus.

Heinz

Aber aus gehen sie nicht.

Weil du sie nicht aus machst!

void loop()
{
  float messwert=analogRead(sensor); //wert von A0(sensor) wird in der Variable Messwert gespeichert
  float volt=messwert/1024*5;  //Variable volt wird berechnet durch: messwert: 1024* volt

  Serial.println(volt); //Ausgabe der Variable volt auf den seriellen Monitor
  digitalWrite(ledgruen,volt>=1.4);
  digitalWrite(ledgelb,volt<1.4&&volt>=1.2);
  digitalWrite(ledrot,volt<1.2);
  delay(500); //Pause 500ms
}

Danke euch. Ich habe es hinbekommen.

int sensor=A0;  //analoger Eingang A0 wird mit der Variable sensor ausgelesen
int messwert;  //Variable messwert wir definiert 
int volt;  // Variable volt wird definiert 
int ledgruen = 12;
int ledgelb = 11;
int ledrot = 10;  
  
void setup(){
 pinMode(ledgruen, OUTPUT);
  pinMode(ledgelb, OUTPUT);
  pinMode(ledrot, OUTPUT);
  Serial.begin(9600);  //Verbindung zum seriellen Monitor
}

void loop(){
   
  float messwert=analogRead(sensor); //wert von A0(sensor) wird in der Variable Messwert gespeichert
  float volt=messwert/1024*5;  //Variable volt wird berechnet durch: messwert: 1024* volt

  Serial.println(volt); //Ausgabe der Variable volt auf den seriellen Monitor
  delay(500); //Pause 500ms
  
  if(volt>=1.4){
    digitalWrite(ledgruen,HIGH);   
  }
   else{
     digitalWrite(ledgruen,LOW);
   }
  
    if (volt<1.4&&volt>=1.2){
      digitalWrite(ledgelb,HIGH);    
    }
   else{
    digitalWrite(ledgelb,LOW);
   }
  if(volt<1.2){
    digitalWrite(ledrot,HIGH);
  } else{
    digitalWrite(ledrot,LOW);
  }
}