Warum ein Arduino oder ZUM immer nur eine Sache gleichzeitig machen kann und wie ihr ihn trotzdem dazu bringen könnt, mehrere Dinge im Kopf zu behalten, lernt ihr hier!

Probiert es hier aus bitbloq.bq.com

Bitbloq 2 ist eine Programmiersprache, mit der ihr aus Blöcken einfache oder komplexe Programme für Arduino-kompatible Plattformen, wie den BQ ZUM erstellen könnt! Damit könnt ihr alle Fähigkeiten der C++ Sprache umsetzen, auf der Arduino basiert, ohne die komplizierte Syntax, Komma- und Klammerregeln der Sprache auswendig lernen zu müssen.

Mit Bitbloq 2 kann jeder ab 8 Jahren die Grundlagen der Programmierung und Robotik lernen!


In der letzten Lektion haben wir uns angesehen, wie wir eine LED zum Blinken bringen können – mit einer LED ist das relativ einfach, was aber wenn wir zwei oder mehr LEDs haben, die gleichzeitig, abwechselnd oder versetzt blinken sollen? Sieht einfach aus, hat aber ein paar Tücken, die man nicht auf den ersten Blick sieht. Das einfachste Beispiel ist erst einmal, zwei unabhängige LED s gleichzeitig blinken zu lassen. Dazu bauen wir zuerst das Programm aus dem vorigen Video nochmal nach, dieses Mal aber mit zwei LEDs. Wenn ihr das Programm in Bitbloq noch offen hab, könnt ihr es auch einfach mit einer zweiten LED erweitern. Jetzt ist es wirklich wichtig, den Komponenten auch eindeutige Namen zu geben. Im ZUM Kit ist eine blaue und eine grüne LED dabei, also nennen wir die LEDs am besten auch so – grueneLED und blaueLED. Umlaute und Leerzeichen könnt ihr für die Namen nicht verwenden, also habe ich die Namen wieder als ein Wort und mit dem Umlaut ü als ue geschrieben.

Mehrere LEDs am ZUM

Im Software-Bereich können wir jetzt wieder das Blinken-Programm nachbauen, dieses Mal aber mit zwei LEDs. Weil wir beide LEDs genau gleich blinken lassen wollen, setzen wir einfach den LED Block je zweimal, einmal für jede LED beim Einschalten und beim Ausschalten. Aber was damit jetzt gemacht haben, ist nicht wirklich die LEDs gleichzeitig zu schalten, sie werden immer noch nacheinander geschalten. Bei zwei gleichzeitig blinkenden LEDs ist es absolut ok, dass der Prozessor hier drin nur jeweils eine Anweisung gleichzeitig abarbeiten kann und mit der nächsten erst danach anfangen. Was aber, wenn wir die LEDs so wie hier blinken lassen wollen?

Was auf alle Fälle nicht geht, ist einfach einen zweiten Pfad an Befehlen in den Loop zu bauen. Wann soll der Prozessor an den Anfang zurückspringen, wenn der eine oder andere Pfad fertig ist? Was passiert, wenn der eine Pfad die LED anschaltet und der andere Pfad die LED gleichzeitig ausschalten will? Auf die Fragen gibt es keine einfachen Antworten, darum beschränken sich die meisten Programme auf nur einen Pfad an Anweisungen. Ganz genauso BitBloq, dewegen sind die Anweisungen hier am Rand auch grau und werden gar nicht ausgeführt.

Bitbloq kann keine zwei Pfade "parallel" erstellen

Was können wir also machen, wenn wir die beiden LEDs versetzt blinken lassen wollen? Klar, auf alle Fälle müssen wir Alles in eine Sequenz packen und die Abläufe miteinander betrachten. Jede LED für sich blinkt im 1-Sekunden-Takt, was aber insgesamt passiert, ist das:

Zuerst geht die grüne LED an, eine halbe Sekunde später die blaue, nochmal eine halbe Sekunde später geht die grüne LED wieder aus, und anschließend die blaue. Dann wird das Ganze wiederholt.

Verschachteltes Blinken

Obwohl jede LED für sich jetzt im Sekundentakt blinkt, arbeitet unser Programm insgesamt im Halb-Sekunden-Takt.

Dieses Konzept der Verschachtelung werdet ihr noch öfter hernehmen können, alle Programme, die mehr als nur eine einzige Sache gleichzeitig machen, müssen so verschachtelt werden.

In der nächsten Lektion sehen wir uns an, wie ihr ein Programm erstellen könnt, das ihr mit einem Taster steuern könnt. Bis dann!