jein.
geh den Code Schrittweise durch, der Controller machts auch nicht anders.
der loop läuft
if (digitalRead(buttonPin) == HIGH) {
ist der erste if true, werden die blaue und rote Zeile ausgeführt.
millis sagen wir hat zu dem Zeitpunkt den wert 2000 also steht in previousMillis auch 2000.
Dann komm es zum zweiten if
millis wird vieleicht schon auf 2002 stehen,
if (millis() - previousMillis > 60 * 1000UL && digitalRead(ledPin) == HIGH) // wenn Zeit abgelaufen und die
(2002 - 2000 > 60 * 1000UL)
also
(2 > 60000)
nein ist nicht. Daher wird der if nicht ausgeführt.
Wir kommen ans ende von loop.
Daher beginnt es wieder von vorne:
erster grüner If ... der Taster ist nicht gedrückt, der Controller geht also drüber
zweiter if
millis hat jetzt etwa 2015
also
if (2015-2000 > 60000)
nein ist immer noch nicht erfüllt.
Zum Ende von loop.
Wieder an den Anfang von loop.
erster If
Zweiter if
etc
Das passiert viele tausende male.
Bis millis mindestens 62.001 ist
ab dann wird diese Bedinung true:
if (62001- 2000 > 60000)
ausrechnen:
60001 > 60000
Bingo! der if ist erfüllt.
JETZT nach 60001 Millisekunden, gehen wir in den zweiten If und schalten die LED aus.
"Systemzeit" ist also 62001, eingeschaltet haben wir um 2000. Also passt. Nach einer Wartezeit von 60 Sekunden haben wir die LED ausgeschaltet.
So, jetzt erfindest einen neuen Zeitstempel wann du die Taste drückst und spielst es selber 60TSD mal durch