Hey, ich würde gerne meine Ampel mit zwei Buttons versehen wo davon einer alles abschaltet und der andere dann alles wieder anschaltet.
Da das mit Delay aber nicht funktioniert wollte ich fragen ob mir das jemand auf Millis umändern kann oder mir erklären kann wie ich es selbst mache?
Der Code:
Hallo,
und warum soll die Grüne LED so oft blinken ?
Also eigentlich ist die Denke bei Verwendung von millis() etwas anders. Das kann man nicht so einfach mit delay vergleichen.
bei der Verwendung von millis() wird immer nachgesehen ob eine Zeit bereits vergangen ist. Wenn ja mach was.
Es gibt ein gutes Beispiel in der IDE dazu "BlinkWithoutDelay" und die Erklärung zum Nachtwächter hier im Forum. Für Ampeln gibt es sicher unzählige Beispiele. Such mal nach Schrittkette, Statemaschine, Endlicher Automat.
schau dir einfach das Beispiel "Blink Without Delay" an. So funktioniert es mit nicht blockierenden Aktivitätten die nacheinander abgearbeitet werden sollen.
Wenn du eine Verkehrsampel mit Österreichischem Ablauf /grün blinken machen willst, kannst du auch einfach meinen Toolkit für LEDs verwenden, da ist das schon - nicht blockierend / mit millis() - fertig.
Das IDE-Beispiel blink without delay ist ein schlechtes Beispiel wenn man die Funktionsweise von nicht-blockierendem Timing verstehen will.
Aus folgenden Gründen:
KEIN Hinweis: Es gibt KEINEN Hinweis auf den absolut fundamentalen Unterschied zwischen delay und nicht-blockierendem Timing.
So lange man sich unter "millis() versucht etwas ähnliches vorzustellen wie delay() hat man EXTREME Schwierigkeiten es zu verstehen weil nicht-blockierendes Timing nun mal gaaanz anders arbeitet. Man kann es einfach nicht mit delay zur Deckung bringen!
Die gegebenen Erklärungen sind dann vergleichsweise dürftig
Die gewählte Grundkonstruktion im Code mit verteilten Variablen macht es zusätzlich schwer es zu verstehen
Die gewählten Variablennamen sind nicht besonders gut selbsterklärend
Und all das macht es schwerer als nötig das Grundkonzept zu verstehen.
Das mindestete wäre das Nachwächter-Beispiel zu erwähnen.
Und noch besser verständlich wird es wenn man den Code-Ablauf mit einfach nachvollziehbaren Zahlen beschreibt.