Ein kleiner Fortschritt, nämlich dass die Schranke hoch/runter fährt, lässt sich im Wokwi-Sketch wie folgt erreichen:
// Bei den Deklarationen oben
boolean SchrankeOben = false;
// ...
// In der loop():
if (SchrankeOben) {
while(digitalRead(T_S) == LOW) //Start Schranke schließen
{
S(0);
SchrankeOben = false;
}
} else {
while(digitalRead(T_S) == LOW) //Start Schranke öffnen
{
S(1);
SchrankeOben = true;
}
}
Ohne die Unterscheidung der Zustände ist es Zufall, welchen der beiden
while(digitalRead(T_S) == LOW) {}
Schleifen der Controller erwischt.
Das mit dem Blinken muss ich mir noch anschauen ...
Ok, in dem u.a. aus Deinem Projekt abgeleiteten Wokwi klappt das meiste. Es gibt noch einen kleinen "Glitch": Nach dem Neustart blinken die LED beim allerersten Tastendruck während die Schranke unten bleibt. Das sollte sich noch beheben lassen:
https://wokwi.com/arduino/projects/322612732669985364
Ansonsten ist die Tastenabfrage etwas fragwürdig:
- Tastenabfrage mit digitalread() ohne Debouncing (Entprellen) wird mit realen Tastern sehr wahrscheinlich zu äußerst merkwürdigem Verhalten führen!
- Die Funktionen in der while-Schleife werden immer wieder (als Vielfach!) ausgeführt, solange die Taste gedrückt ist ...
Auch wenn der Sketch mit den kleinen Verbesserungen "gerettet" scheint, müssen diese Funktionen überarbeitet werden.
Muss für heute Schluss machen ... ![]()