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.
vgs