In der unendlichen Schleife wird in jeder Runde der Inhalt einer Variablen mit dem Zeitgeber verglichen. Ist der Inhalt des Zeitgebers größer als der Inhalt der Variablen, wird die Variable neu gesetzt und eine Funktion für den Countdown aufgerufen.
Zuerst wird diese Zeitfunktion realisiert und zur Kontrolle nur die LED ein- und ausgeschaltet. Setzt man die Wartezeit z.B. auf 1000, blinkt die LED im Sekundentakt.
Zu Beginn des Programms wird der Bildschirm wieder komplett eingeschaltet. In der Funktion wird die linke obere LED nach der Wartezeit ausgeschaltet und die Spalte um 1 erhöht. Das darf natürlich nur erfolgen, wenn die Spalte kleiner als 5 ist.
Im nächsten Schritt wird der gesamte Bildschirm Zeile für Zeile gelöscht. Bei jedem Funktionsaufruf wird die Zeilennummer überprüft und die beiden Variablen für Zeile und Spalte geändert.
Gleichzeitig wird eine weiter Variable zaehler erhöht, um zu erkennen, wenn der Bildschirm komplett gelöscht ist. Das würde auch ohne zusätzliche Variable aus der Kombination von Zeile und Spalte gehen. Ist der Bildschirm gelöscht, wird die boolsche Variable countdown_an auf falsch gesetzt. Sie wird im Hauptprogram verwendet, um im Zusammenspiel mit der Zeitvariablen die Countdown-Funktion aufzurufen oder nicht.
Die LED wird beim Start des Programms auf Rot geschaltet und wird zum Ende des Bildschirmlöschens auf Grün gesetzt. Damit kann man kontrollieren, ob alles ordentlich funktioniert.
Beim CountDown mit den Wartebefehlen lässt sich während der Wartezeiten der Calliope mini nicht bedienen, er reagiert z.B. nicht auf den Druck einer Taste. Damit sind Wartebefehle für die Programmierung von Spielen ungeeignet. Durch den Einsatz des Zeitgebers können mit den beiden Tasten Aktionen durchgeführt werden.
In Make Code lässt sich das Warten einfacher vermeiden als im OpenRobertaLap. Es gibt eine Funktion, die im Hintergrund nach einer eingestellten Zeit den Code ausführt.
In der Funktion, die alle 0,5 s aufgerufen wird, werden die Zeile und die Spalte so geändert, dass LED für LED nacheinander ausgeschaltet werden.
Bisher wird noch nicht überprüft, ob die Zeilenvariable einen größeren Wert als 4 erreicht. Nachdem alle LED gelöscht sind, dürfen die Variablen ja nicht weiter erhöht werden. Das würde zwar den CountDown nicht stören, aber die Variablen laufen unkontrolliert weiter hoch. Deshalb wird der Code zum Zählen nur dann ausgeführt, wenn die Zeilenvariable kleiner als 5 ist.
Auch wenn das Vermeiden von Wartezeiten in Make Code sehr einfach zu realisieren ist, hat es doch einen Makel: Die Zeit zwischen zwei Ereignissen lässt sich nicht verändern. Gibt man als Zeit zwischen zwei Aufrufen 500 ms ein, bliebt diese Zeit unveränderlich erhalten. Der gezeigte Programmteil ändert bei jedem Aufruf die Wartezeit um 100. Das funktioniert aber nicht, der Aufruf erfolgt stur alle 200 ms.
In der unendlichen Schleife wird in jeder Runde der Inhalt einer Variablen mit dem Zeitgeber verglichen. Ist der Inhalt des Zeitgebers größer als der Inhalt der Variablen, wird die Variable neu gesetzt und eine Funktion für den Countdown aufgerufen.
Es ist jetzt möglich, die Wartezeit bei jedem Schritt kleiner zu machen, was beim Ablaufen des Programmes deutlich zu erkenn ist.
Die Funktion schritt prüft zuerst, ob überhaupt noch LED eingeschaltet sind. Dazu wird die Variable zaehler verwendet, die bei jedem Schritt um eins erhöht wird. Hat sie den Wert 25 erreicht, wird der Programmteil zum Ausschalten der LEDs nicht mehr durchgeführt.
Wenn jetzt alles richtig funktioniert, wird jede Zeile schneller als die Zeile darüber gelöscht.
Der Bildschirm besteht aus 25 LED, die man von 0 bis 24 durchnummerieren kann. Damit ist zum Ansprechen jeder einzelnen LED nur eine Schleife notwendig, die von 0 bis 24 durchläuft.
Man kann nun aus dem Schleifenzähler i die Spalten- und Zeilennummer jeder einzelnen LED berechnen: