Wird in Ardublock der "Delay Block" verwendet, dann kann das Programm nichts anderes machen außer WARTEN. In dieser Zeit können keine Eingänge abgefragt oder andere Blöcke verarbeitet werden. Das Programm steht still. Um diesem Problem beim programmieren zu entgehen gibt es den Block "solange (millis)". Dieser übernimmt für uns das zählen bzw. ersetzt die "Delay" Blöcke. Es ist zwar etwas arbeit aber dieser Mehraufwand lohnt sich.
Als Beispiel: wird dieses Programm auf dem Arduino ausgeführt (bitte einfach mal hochlanden) dann blinken die beiden LEDs wunderbar im wechsel. Der Taster wird aber nur alle zwei Sekunden abgefragt. Während des blinkens hat der Taster keinerlei Funktion.
Um das zu ändern schauen wir uns doch mal den Block "solange (millis)" an. Im Feld "Millisekunden" kann eingestellt werden wie oft gezählt wird. Alles was unter dem Block ist wird alle 100 Millisekunden 1 mal ausgeführt. Alles was im Block "Mache" ist wird unabhängig davon permanent ausgeführt.
Werden allerdings "Delay" Zeiten im "Mache" Teil eingefügt, dann wartet das Programm hier und die Zählung stimmt nicht mehr.
Am besten das Programm unten auf den Arduino landen und den Serial Monitor starten, dann wird es deutlich was das Programm macht. Wie man sieht wird der Block mit dem "serial" permanent abgefragt. Die Zahl ändert sich aber nur jede zehntel Sekunde. Der Block unter dem "solange (millis)" wird also nur so oft abgefragt wie "Millisekunden" eingetragen sind.
Was bringt uns das? Schauen wir uns das Programm mit dem beiden LEDs noch mal an. Der Taster ist im "Mache" Teil und wird somit immer abgefragt, wird der Taster gedrückt gehen die LEDs aus, egal welche gerade an ist.
Damit die LEDs blinken wird die Variable unter dem Block, wie oben im Beispiel hoch gezählt. Bei 10 schaltet die LED 1 ein und LED 2 aus. Bei 20 schalten die LEDs genau umgekehrt. Bei 20 setze ich die Variable zudem auf 0 zurück, damit läuft das Programm immer im "Kreis" und die LEDs blinken.
Damit kann man nun LEDs blinken lassen und alles wofür man einen Zähler braucht aus dem Hauptprogramm heraus nehmen.
- Für unterschiedliche aufgaben, können mehrere unterschiedliche Variablen gezählt werden
- Es können in einem Programm mehrer "solange (millis)" gesetzt werden. Damit kann zum Beispiel in einem (teste, solange) Block weitergezählt werden