Die Robo4Earth kann auch in der Entwicklungsumgebung Microsoft MakeCode für den Micro:bit programmiert werden.
In dieser Umgebung hast du mehr Möglichkeiten: Du kannst eigene Sensoren oder Aktoren einbinden und deine Robo4Earth nicht nur mit Anweisungsblöcken, sondern auch mit Python oder JavaScript programmieren.
Diese Anleitung richtet sich an fortgeschrittene Nutzer:innen.
Grundlegende Konzepte wie „Was ist ein Programm?“, „Was ist eine Schleife oder Bedingung?“ oder „Wie funktioniert eine Funktion?“ werden hier nicht im Detail erklärt.
In der MakeCode-Entwicklungsumgebung kannst du deine Robo4Earth mit Blöcken, Python oder JavaScript programmieren. Um die Robo4Earth richtig anzusteuern, brauchst du unsere eigene Erweiterung – damit kannst du die Motoren steuern, Melodien abspielen und vieles mehr.
Nach dem erfolgreichen Laden findest du die Robo4Earth-Kategorie in der Blockleiste. Von dort kannst du alle neuen Blöcke per Drag & Drop in dein Programm ziehen.
Das folgende Beispiel zeigt, wie du deine Robo4Earth auf laute Geräusche reagieren lässt:
Zusätzlich wird die Funktion schuettel_dich() aufgerufen, wenn ein lautes Geräusch erkannt wird. Die Robo4Earth schaut dabei „böse“ und beginnt zu wackeln.
Hinweis: Verwende beim Programmieren keine Umlaute oder Sonderzeichen in Funktionsnamen – deshalb wird „ü“ zu „ue“.
Du kannst dein Programm in Blöcken, JavaScript oder Python anzeigen lassen. So funktioniert der Wechsel:
Wenn du eine Programmiersprache ausgewählt hast, kannst du dir durch Klicken auf einen Block anzeigen lassen, wie der entsprechende Funktionsaufruf aussieht – inklusive kurzer Beschreibung der Parameter.
Beispiel: Der Block „fahre in Richtung direction mit Tempo speed für seconds Sekunden“ entspricht im
Code: roboearth.drive(direction, speed, seconds)
Wenn du dein Programm getestet hast, kannst du es als HEX-Datei auf den echten Micro:bit übertragen:
Beim Übertragen blinkt die gelbe LED – danach startet das Programm automatisch.
Für den Einsatz in der Schule kannst du den Micro:bit auch direkt mit MakeCode verbinden. So wird das Programm beim Klicken auf „Herunterladen“ direkt übertragen.
So funktioniert es:
Der Name deiner HEX-Datei wird automatisch aus dem Programmnamen generiert. Dabei werden Leerzeichen durch Bindestriche ersetzt. Beispiel:
Ein Projekt namens „test all“ wird zu microbit-test-all.hex.
Wenn du den Namen ändern möchtest, gib einen neuen Namen ins weiße Feld neben dem Herunterladen-Button ein.
Speichere dein Projekt mit dem Disketten-Symbol oben links.
Um das Programm übersichtlicher zu machen und sich das Suchen von Fehlern zu erleichtern, sollte man Funktionen für Code erstellen. Das bietet sich vor allem an, wenn derselbe Code öfter im Programm wiederholt wird. Die erstellten Funktionen kann man an den benötigten Stellen im Code aufrufen.
Um eine Funktion zu erstellen, klicke auf die Kategorie Fortgeschritten. Klicke dann auf die dunkelblaue Kategorie Funktionen und auf Funktion erstellen.
Funktion bearbeiten Fenster
Um Parameter (Eingabewerte) zur Funktion hinzuzufügen, klicke auf den gewünschten Datentyp (Text, Bool, Zahl,…).
Der Funktionsname soll zeigen, was die Funktion macht, zum Beispiel “zählePunkte” oder “stoppeMotoren”. Schreibe den Namen anstatt macheEtwas in den Funktionsblock. Funktionsnamen sollten keine Leerzeichen, Sonderzeichen oder Umlaute haben. Üblicherweise wird für Funktionsnamen die Camelcase Schreibweise benutzt (kleinAmAnfangDannGroßbuchstabenAmWortanfang) oder die Snake Case Schreibweise (alles_klein_und_durch_unterstriche_getrennt). Du kannst dir aussuchen, was dir besser gefällt und bleibe dann wenn möglich bei einer Variante.
FUnktion aufrufen
Um deine Funktion aufzurufen, klicke mit Rechtsklick auf die Funktion im Programmbereich und wähle “Erstelle Aufruf Funktionsname” ganz unten. Du bekommst dann einen Funktionsbaustein, den du in dein Programm einbauen kannst. Alternativ kannst du den Aufruf-Block deiner Funktion aus der Kategorie Funktionen in den Programmierbereich ziehen.
Funktionen kann man mit Pfeilen auf- und zuklappen. Damit kannst du sie platzsparend am Bildschirm anordnen.
Es wurde die Funktion schuettle_dich_so_oft erstellt. Der Name zeigt an, dass sich die Robo4earth schüttelt und dass die eingegebene Zahl die Wiederholungen vorgibt. Den Parameter (num = eine Zahl) kann man per Drag & Drop innerhalb der Funktion einsetzen, hier wurde er für die Wiederholung in der Schleife eingesetzt.
Programm: Zeige beim Start ‚Hi!‘. Zeige dauerhaft, wenn Lautstärke über 120: Symbol ‚böser Blick‘, Aufruf schuettle_dich_so_oft zwei Mal, dann Bildschirminhalt löschen
Beim Aufruf der Funktion kannst du die gewünschten Werte als Parameter einsetzen. Hier wurde 2 statt 1 in den Funktionsaufruf geschrieben. Der Roboter schüttelt sich also zweimal und schaut böse wenn es zu laut ist.
Für das Programmieren von Sensoren und Aktoren sind Variablen sehr praktisch. In diesen können Werte und Zustände gespeichert werden. Das Programm wird durch den Einsatz von Variablen weniger anfällig für Fehler und verständlicher. Unter der roten Kategorie Variablen können eigene Variablen erstellt werden. Die erstellten Variablen können wie Werte (abgerundete Blöcke) im Programm eingesetzt werden oder mit den beiden Bausteinen setze variable auf und ändere variable um bearbeitet werden.
Programm ‚HindernisErkannt‘
Im ersten Beispiel wird die Variable hindernisErkannt verwendet, um den Sensorwert eines Infrarotsensors zu speichern und anzuzeigen. Der Sensor gibt 0 aus, wenn ein Hindernis erkannt wird. In der Programmierung steht 0 auch für False (Falsch) und 1 für True (Wahr). Daher wird in der Variable hindernisErkannt eine 1 gespeichert wenn ein Hindernis erkannt wird und eine 0 wenn der Weg frei ist.
Setze Zähler auf 0 bei Start, wenn Knopf A geklickt, dann ändere Zähler um 1, zeige die Zahl des Zähelers an. Micro:bit zeigt nun die Zahl ‚2‘ an.
Eine Variable kann zum Beispiel auch als Zähler eingesetzt werden. Das ist sehr praktisch bei der Programmierung von Punkteständen in Spielen oder zum Herunterzählen von Leben (ändere variable um -1).
Bei der Programmierung von Mikrocontrollern ist zu beachten, dass es im Gegensatz zu einem “normalen” Computerprogramm kein Programmende gibt. Stattdessen gibt es meistens eine optionale Setup-Funktion, die zum Start ausgeführt wird und ein Hauptprogramm, welches in Dauerschleife wiederholt wird. In Makecode gibt es dafür die Bausteine beim Start und dauerhaft in der hellblauen Kategorie Grundlagen.
In der Setup Funktion werden Variablen initialisiert und Sensoren kalibriert sowie Motoren, wenn nötig, in die richtige Ausgangsposition gebracht. Man kann auch ein Bild anzeigen oder einen Klang zur Begrüßung abspielen. Daran kann man beim Einschalten erkennen, ob das Programm gestartet wurde und es ist praktisch, um zu kontrollieren, ob das richtige Programm am Micro:bit läuft.
Die Dauerschleife wird immer wiederholt, solange der Mikrocontroller Strom bekommt. In der Dauerschleife kann der Mikrocontroller auf Eingangssignale reagieren oder Werte einlesen und verarbeiten. Man sollte darauf achten, dass nur zuvor initialisierte Variablen hier verwendet werden. Sonst könnte es passieren, dass ein Roboter beim Einschalten sofort losfährt, was zu Verletzungen und der Beschädigung von Bauteilen führen kann.
Die Makecode IDE bietet eine Micro:bit Simulation. Man sollte diese Simulation nach jeder Änderung im Programm nutzen, und ein erstelltes Programm immer ausreichend testen, bevor man es auf den Mikro:bit lädt.
Beispielprogramm: erklärt im Text
In dem gezeigten Beispielprogramm zeigt der Micro:bit beim Starten ein Bild für 2 Sekunden an. In der Dauerschleife reagiert er auf die Knöpfe A und B.
Es gibt die Möglichkeit, Ereignisse (Events) zu generieren, auf die das Programm reagiert. Ein Ereignis kann zum Beispiel das Drücken eines Knopfes sein oder ein bestimmtes Eingangssignal eines Sensors. Die sogenannten Event-Handler sind Funktionen, die auf ein Ereignis reagieren. Diese können außerhalb der Dauerschleife definiert werden und werden immer dann ausgeführt, wenn das jeweilige Ereignis eintrifft. In dem folgenden Beispielcode wurde die Dauerschleife durch Event-Handler ersetzt. Diese sind pinke Bausteine aus der Kategorie Eingabe, welche keine Kerbe oben und unten haben (Stand-Alone Funktionen wie “beim Start” und “dauerhaft”).
Mit Sensoren kann sich der Roboter im Raum lokalisieren und er kann die Welt um sich herum wahrnehmen, mit Aktoren kann er etwas tun, Dinge um sich herum manipulieren oder sich bewegen. Sensoren liefern Input-Signale, Aktoren werden durch Output-Signale gesteuert. Die Anschlüsse für Ein- und Ausgangssignale am Mikrocontroller nennt man “Pins”. Ein Signal kann entweder digital oder analog sein.
Ein digitales Signal hat genau zwei mögliche Zustände: 1 und 0 bzw. An und Aus. Ein Beispiel für ein digitales Eingangssignal ist zum Beispiel ein Schalter. Ein Beispiel für ein digitales Ausgangssignal ist zum Beispiel das Ein-/und Ausschalten einer LED. Du kannst zum Beispiel das Eingangssignal eines Schalters verwenden, um eine LED ein- und auszuschalten.
Bei einem Mikrocontroller zeigt ein digitales Signal an, ob Spannung an einem Pin anliegt (1) oder nicht (0).
Ein analoges Signal nimmt kontinuierlich Werte innerhalb eines bestimmten Intervalls ein. Das kann zum Beispiel bei einem Sensor die Temperatur von –30°C bis +60°C sein oder der Abstand zu einem Hindernis in cm (von 3cm bis 300cm zum Beispiel). Mit einem analogen Ausgangssignal kann man zum Beispiel die Geschwindigkeit von Motoren steuern oder eine LED dimmen.
Am Micro:bit liegt bei einem analogen Signal eine Spannung zwischen 0V und 3V an. Diese Eingangsspannung wird in eine Zahl zwischen 0 und 1023 umgewandelt, welche im Programm weiterverarbeitet werden kann. Umgekehrt muss ein Ausgangssignal an einen Aktor als Zahl zwischen 0 und 1023 ausgegeben werden. Diese Zahl wird vom Micro:bit in eine Spannung von 0V bis 3V umgewandelt, die dann am entsprechenden Pin anliegt.
Der Micro:bit hat eine 5×5 LED-Matrix, die auch als Lichtsensor programmiert werden kann. Ebenso hat der Micro:bit ein Mikrofon und seit Version 2 auch einen eingebauten Lautsprecher. 2 programmierbare Buttons A und B und ein kapazitiver Berührungssensor im Micro:bit Logo (ab Version 2) sind ebenfalls integriert. Der Micro:bit enthält weiters einen Bewegungssensor inklusive Beschleunigungssensor und Kompass und einen Temperatursensor. Die Onboard Sensoren können mit den Blöcken der pinken Kategorie Eingabe verwendet werden. Für die Audioausgabe und die LED-Matrix gibt es eigene Kategorien Musik und LED.
