Das hatten wir doch vor kurzem schon mal?
Dein Problem ist ganz einfach: Geschwindigkeit!
Deine beiden Abfragen wissen nichts voneinander.
Drückst du Taster 1, dann wird hier
1 | if (tasterstatus1 == HIGH) {
|
2 | digitalWrite(ausgang1, LOW);
|
3 |
|
4 | }
|
5 | else {
|
6 | digitalWrite(ausgang1, HIGH);
|
7 | }
|
die LED zwar eingeschaltet, aber gleich darauf wird hier
1 | tasterstatus2 = digitalRead(eingang2);
|
2 |
|
3 | if (tasterstatus2 == HIGH) {
|
4 | digitalWrite(ausgang1, LOW);
|
5 | }
|
6 | else {
|
7 | digitalWrite(ausgang1, HIGH);
|
8 | }
|
die LEd sofort wieder ausgeschaltet, weil ja Taster 2 nicht gedrückt
ist.
Und das ganz auch umgekehrt:
Drückst du Taster 2, dann wird mit dessen if die LED zwar eingeschaltet,
aber gleich darauf (weil ja loop() sofort wieder aufgerufen wird), wird
die LED auch wieder ausgeschaltet, weil ja Taster 1 nicht gedrückt ist.
Und das ganze (deswegen Problem: Geschwindigkeit) passiert ein paar
Zehntausend mal in der Sekunde, wesegen du nicht siehst, dass dein LED
zwar eingschaltet aber gleich darauf auch wieder ausgeschaltet wird.
Du musst die beiden Taster miteinander in Beziehung setzen!
1 | wenn( Taster1 gedrückt ODER Taster2 gedrückt
|
oder was aufs gleiche rauskommt
1 | wenn( Taster1 nicht gedrückt UND Taster2 nicht gedrückt )
|
1 | void loop()
|
2 | {
|
3 | tasterstatus1 = digitalRead(eingang1);
|
4 | tasterstatus2 = digitalRead(eingang2);
|
5 |
|
6 | // sind beide Taster auf HIGH, dann ist keiner von beiden gedrückt
|
7 | if (tasterstatus1 == HIGH && tasterstatus2 == HIGH) {
|
8 | digitalWrite(ausgang1, LOW);
|
9 | }
|
10 | else {
|
11 | digitalWrite(ausgang1, HIGH);
|
12 | }
|
13 | }
|