Hatte mir das am Anfang alles ein wenig leichter vorgestellt
Bei jeder Steuerungslogik steckt der Teufel im Detail ... ![]()
Mein erstes Programm nur für die eine Treppe und drei Balken funktionierte mit delays auch recht gut. Aber mit der zweiten Treppe ist das ja nicht mehr möglich...
Mehrere "Schalt-Programme" gleichzeitig geht, wenn man statt delay() millis() nimmt, und sich jeweils Zustand und Startzeit merkt.
Wenn die Treppen komplett unabhängig voneinander sind und du jurs' EVA magst, kannst du auch beliebig mehrere davon verwenden.
void loop() {
Treppe1();
Treppe2();
Treppe3();
}
void Treppe1 () {
Erfassung1();
Verarbeitung1();
Ausgabe1();
}
...
wobei ich es nicht soo unübersichtlich finde, in einem Schaltprogramm wie Treppe1()
die zwei digitalRead Aufrufe am Anfang gleich hinzuschreiben.
Solange eine Schaltfolge läuft, weitere Schaltbefehle ignorieren
Ich denke, die Schluss-Sequenz (x+60 ff) macht nur Sinn, wenn zwischenzeitlich keine neue Anforderung (von unten oder oben) kam ... ![]()
Vermutlich ist es einfacher, nachdem eine Zeitlang nichts mehr los war , das Licht auszumachen (auf- oder abwärts je nach letztem PIR -Signal)