Arduino if Bedinung mit 2 Werten ?
ich schreibe gerade einen Sketch das man mit einem Taster 4 LEDS weiterschalten
und wen der 2 Taster gedrückt wird blinken die anderen LEDS .
aber bei der if Bedingung bei der beide werte überprüft werden funktioniert es nicht
Weiß da jemand weiter
Das ist der Sketch:
int taster1=7;
int taster2=8;
int tasterstatus1=0;
int tasterstatus2=0;
int led1=12;
int led2=11;
int led3=10;
int led4=9;
bool oldButtonState = HIGH;
bool newButtonState;
int count = 0;
void setup() {
pinMode (taster1,INPUT);
pinMode (taster2,INPUT_PULLUP);
pinMode (led1,OUTPUT);
pinMode (led2,OUTPUT);
pinMode (led3,OUTPUT);
pinMode (led4,OUTPUT);
}
void loop() {
newButtonState = digitalRead(taster1);
tasterstatus2 = digitalRead(taster2);
if (oldButtonState == HIGH && newButtonState == LOW) {
count++;
oldButtonState = newButtonState;
if (count == 3) {
digitalWrite(led1, HIGH);
}
if (count == 4) {
digitalWrite(led1, LOW);
digitalWrite (led2,HIGH);
}
if (count == 5 ){
digitalWrite (led2,LOW);
digitalWrite (led3,HIGH);
}
if (count == 6){
digitalWrite (led3,LOW);
digitalWrite (led4,HIGH);
}
if (count == 7){
digitalWrite (led4,LOW);
}
if ((tasterstatus2 == HIGH && count == 3)){
digitalWrite (led1,HIGH);
delay (1000);
digitalWrite (led1,LOW);
digitalWrite (led2,HIGH);
delay (1000);
digitalWrite (led2,LOW);
digitalWrite (led3,HIGH);
delay (1000);
digitalWrite (led3,LOW);
digitalWrite (led4,HIGH);
delay (1000);
digitalWrite (led4,LOW);
}
if ((tasterstatus2 == HIGH) && (count == 4)){
digitalWrite (led2,HIGH);
delay (1000);
digitalWrite (led2,LOW);
digitalWrite (led3,HIGH);
delay (1000);
digitalWrite (led3,LOW);
digitalWrite (led4,HIGH);
delay (1000);
digitalWrite (led4,LOW);
digitalWrite (led1,HIGH);
delay (1000);
digitalWrite (led1,LOW);
}
delay(100);
} else if (oldButtonState == LOW && newButtonState == HIGH) {
oldButtonState = newButtonState;
}
}
1 Antwort
Hallo,
sobald du den taster nach Programm-Start drückst werden die variablen oldButtonState auf High und newButtonState auf Low richtig geschrieben..der counter zählt auf 1 und das wars. Die LEDs leuchten nicht weil diese erst ab count 3 anfangen zu leuchten.
sobald du den taster loslässt, werden beide variablen oldButtonState und newButtonState auf HIGH gesetzt. da du hier nirgends eine bedingung dazu hast, wird auch nie wieder was passieren im Code.
Nutze bitte auch hier für den ersten taster Input_Pullup..ist sehr wichtig für µC um zu unterscheiden ob du diesen nun drückst oder nicht.
Im Allgemeinen nutze bitte fürs Debug Serial-Ausgabe. Du kannst da die zwischenschritte anzeigen lassen wie z.B. wie der count ist, wie die Taster sind usw..
somit würdest du hier auch schnell den Fehler finden.
ICh vermute..weil du den ersten taster kein pullup aktiv hast, zählt dieser bereits den counter >10 und schon passiert hier nix..
Im Code fehlt dass der counter zurückgesetzt wird auf 0
Vielen Dank für die Hilfreiche Antwort.
ich zähle mit den ersten Taster, wen dann count auf 3 ist leuchtetet LED 1.
Ist count auf 4 leuchtet LED 2 und so weiter.
Das klappt.
Ich hab das bis jetzt mit der Reset Funktion genutzt das count auf 0 zurückgesetzt wird.
ich möchte dan nur das wen led 2 leuchtet (also count == 4) und der 2 Taster gedrückt wird leuchten nacheinander led3, led4, und dan led1