ich brauche Hilfe bei einer LED-Schaltung mit 3 Taster, der eine soll 2 LEDs anschalten, der andere eine 3. und der 3. Schalter soll alle LEDs ausschalten. Man soll nach einer Eingabe erstmal den Reset Knopf drücken bevor man den anderen Taster verwenden kann.
Jetzt habe ich aber das Problem, dass der 3.Taster nichts macht, ich habe das mit der while schleife und mit einer dritten if Anweisung versucht aber nichts funktioniert und ich verstehe nicht warum, habe auch schon den Taster durchgetauscht also daran kann es nicht liegen.
int key1 {5};
int key2 {6};
int key3 {4};
int LEDgreen {8};
int LEDyellow {9};
int LEDred {10};
void setup(){
pinMode(key1, INPUT);
pinMode(key2, INPUT);
pinMode(key3, INPUT);
pinMode(LEDgreen, OUTPUT);
pinMode(LEDyellow, OUTPUT);
pinMode(LEDred, OUTPUT);
}
void loop(){
int orange = digitalRead(key1);
int green = digitalRead(key2);
int rest = digitalRead(key3);
if(orange==HIGH){
while(digitalRead(key3==0)){
digitalWrite(LEDred,HIGH);
digitalWrite(LEDyellow,HIGH);
digitalWrite(LEDgreen,LOW);
}
digitalWrite(LEDred,LOW);
digitalWrite(LEDyellow,LOW);
digitalWrite(LEDgreen,LOW);
}
if(green==HIGH){
while(digitalRead(key3==0)){
digitalWrite(LEDred,LOW);
digitalWrite(LEDyellow,LOW);
digitalWrite(LEDgreen,HIGH);
}
digitalWrite(LEDred,LOW);
digitalWrite(LEDyellow,LOW);
digitalWrite(LEDgreen,LOW);
}
}
Der Vergleich key3==0 hat als Parameter im digitalRead() nichts zu suchen. key3 ist 4, also wird der Vergleich immer mit false (0) enden. Dann steht da digitalRead(0), was vermutlich nicht der der Pin ist, von dem Du lesen willst.
Ja so meinte ich das, also ich wollte quasi nur dass man den 3. Taster drücken muss um die alle aus zu machen bevor man den anderen Taster benutzen kann
Der Pfeil im unteren "key3 == HIGH" Statuswechsel soll bestimmt auch zurück nach "Init" zeigen.
Was bei mehreren Tastern passiert, ist erstmal egal.
Im Zustand "Init" werden alle LED ausgeschaltet
@noiasca : Wokwi ist es egal, aber in echt wäre einen Tick klarer, die Pulldown, Widerstände direkt an den Pins anzuschließen (auch für den Fall, dass man keine Taster mit 4 Anschlüssen hat)
Sehr hübsch, deine Beispiellösung, übrigens.
Der TO hat es im Prinzip richtig nur logisch falsch..
Der Zustand der LED's ist egal.
Er fragt mit einer Abfrage :
If Taste 1 gedrückt ,
dann Stelle den Zustand her der Gewünscht wird.
Fertig ist.
Das man das kurze flackern einer LED nicht sieht, würde ich eine Funktion schreiben die ich aufrufe bevor der neue Zustand eingestellt wird. Diese Funktion löscht alle LED's .