Microsoft Make:Code

Robo4earth programmieren

Die Robo4earth kann auch in der Makecode Entwicklungsumgebung für Micro:bit programmiert werden. Hier können die jungen Programmierer*innen weitere Sensoren oder Aktoren in ihre Programme einbinden und die Robo4earth mit Anweisungsblöcken, Python oder JavaScript programmieren.

Header Image Robo4eart Educational Robotics

Robo4earth in Make:Code programmieren

Die Robo4earth kann auch in der Makecode Entwicklungsumgebung für Micro:bit programmiert werden. Hier können die jungen Programmierer*innen weitere Sensoren oder Aktoren in ihre Programme einbinden und die Robo4earth mit Anweisungsblöcken, Python oder JavaScript programmieren.

Diese Anleitung versteht sich als Hilfestellung für Fortgeschrittene. Daher werden grundsätzliche Programmierkonzepte wie zum Beispiel
Was ist ein Programm?, Was ist eine Funktion?, Was ist eine Schleife/Bedingung? hier nicht näher erläutert.


Über die Robo4earth Erweiterung


Erweiterung einbinden - Programmierbeispiel - Programmiersprachen - Autovervollständigung

Robo4earth Erweiterung einbinden

Wir stellen eine Makecode Erweiterung für die Programmierung der Robo4earth in der Makecode Entwicklungsumgebung zur Verfügung. Mit der Erweiterung kann man die Motoren der Robo4earth ansteuern und Melodien abspielen. Um die Makecode Erweiterung zu einem Makecode Projekt hinzuzufügen, befolge folgende Schritte:

  1. Öffne https://makecode.microbit.org/
  2. Klicke auf + Neues Projekt und benenne dein Projekt.
  3. In der Kategorie-Leiste klicke auf + Erweiterungen
  4. Gib https://github.com/zimdaustria/pxt-r4e im Suchfeld ein.
  5. Importiere die angezeigte Erweiterung, indem du darauf klickst.

Wenn das Laden der Erweiterung erfolgreich war, erscheint danach die Robo4earth Erweiterung in deinen Kategorien. Die Robo4earth Blöcke können dann wie alle anderen Blöcke per Drag & Drop in den Arbeitsbereich gezogen werden.

Programmierbeispiel

Das ist ein Programmierbeispiel: Nachdem Start gedrückt wird,wird der Schwellenwert für 'laut' auf 128 gesetzt, ein Herz wird angezeigt und die Robo4earth fährt 5 Sekunden lang vorwärts, dann 5 Sekunden rückwärts, anschließend wird der Bildschirminhalt gelöscht.

In diesem Beispiel-Programm reagiert die Robo4earth auf laute Geräusche. Dafür wird beim Einschalten der Robo4earth ein Schwellenwert für die Lautstärke gesetzt. Wenn es lauter als der Schwellenwert ist schaut die Robo4earth böse und schüttelt sich. Dafür wurde die Funktion schüttel dich erstellt.

Achtung: Beim Programmieren ist es immer besser, keine Umlaute oder Sonderzeichen für Benennungen zu verwenden. Daher wurde der Umlaut ü im Funktionsnamen durch ue ersetzt.

Programmiersprachen Ansicht

MakeCode Programmiersprache auswählen

Sieh dir den Code in einer Programmiersprache an. Schalte dafür von Blöcke zu JavaScript um, indem du auf JavaScript in der blauen Navigationsleiste am oberen Rand klickst.

Makecode Programm in Javascript anzeigen

Sieh dir den Code in einer Programmiersprache an. Schalte dafür von Blöcke zu JavaScript um, indem du auf JavaScript in der blauen Navigationsleiste am oberen Rand klickst.

Python Code in Makecode anzeigen lassen

Sieh dir den Code auch in Python an. Klicke dafür auf den kleinen Pfeil neben JavaScript und wähle Python aus:

Makecode Python als Programmiersprache auswählen
Makecode Python als Programmiersprache auswählen

Hat man eine Programmiersprache anstatt der Blöcke ausgewählt, kann man sich die Funktionsblöcke genauer ansehen. Wenn man auf einen Block in der Kategorie klickt, wird der jeweilige Funktionsaufruf angezeigt und genaue Beschreibungen der Funktionsparameter.

Die Funktion fahre in Richtung direction mit Tempo speed für seconds Sekunden , wird mit roboearth.drive(direction, speed, seconds) aufgerufen. Die Eingangsparameter direction, speed und seconds werden nachfolgend genau erklärt.

Autovervollständigung

Beispiel für Autovervollständigung in MakeCode
Beispiel für Autovervollständigung

Beim Programmieren in Python oder JavaScript hilft die praktische Autovervollständigung. Wenn man anfängt zu tippen, zeigt diese an, welche Funktionen es gibt, die so anfangen. Man kann dann aus der Liste der angezeigten Funktionen auswählen.

Voreingestellte Parameter werden ausgewählt
Die Parameter müssen nun nur noch für die eigenen Zwecke anpassen

Ebenso werden die voreingestellten Parameter-Eingaben angezeigt, wenn man eine Funktion ausgewählt hat. Man muss die Parameter dann nur mehr für die eigenen Zwecke anpassen.


Programm ausführen


Simulation

Auf der linken Seite der Make:code Entwicklungsumgebung wird ein Micro:bit angezeigt. Wenn du ein Programm erstellt hast, wird hier automatisch eine Simulation dafür erstellt.

In unserem Beispiel wird ein Lautstärke Schwellenwert gesetzt. Deshalb wird in der Simulation ein Balken mit einem leuchtenden Mikrofon Symbol angezeigt.

Wenn die Simulation läuft, wird der Micro:bit farbig, sonst ist er grau. Drücke während der Simulation die Knöpfe am (virtuellen) Micro:bit oder verschiebe den Pegel des Lautstärke-Balkens und schau, was passiert. Die Motorfunktionen kannst du anhand der rot angezeigten Pins kontrollieren. An diesen liegt eine Spannung an, wenn sie rot angezeigt werden.

Microbit Bild 1 Microbit Bild 2

Nachdem du das Programm ausgiebig in der Simulation getestet hast, kannst du es auf den echten Micro:bit laden.

Programm auf Micro:bit laden

Erstellte Programme werden aus der Makecode Entwicklungsumgebung als HEX Datei heruntergeladen und auf den Micro:bit geladen. Befolge dafür folgende Schritte:

  1. Klicke auf den violetten Herunterladen-Button in der linken unteren Ecke des Makecode Fensters.
  2. Schließe den Micro:bit per USB-Kabel (Micro B) am Computer an.
    Der Micro:bit wird als externes Laufwerk im File Explorer angezeigt.
  3. Ziehe die HEX Datei aus deinem Download-Ordner per Drag & Drop auf das Micro:bit Laufwerk und lasse es los.
  4. Alternativ kannst du auf Windows per Rechtsklick auf die HEX Datei klicken. Dann senden an auswählen und das microbit(Laufwerk:) auswählen.

Micro:bit mit MakeCode verbinden

Man kann den Micro:bit auch direkt mit Makecode verbinden. Dies ist vor allem sinnvoll für den Einsatz in der Schule. Wenn du deinen Micro:bit verbunden hast, wird das Programm beim Drücken auf Herunterladen direkt auf den Micro:bit geladen.

Gerät/Micro:bit in MakeCode verbinden

Um deinen Micro:bit mit Makecode zu verbinden, klicke auf die drei Punkte neben dem Herunterladen Button und wähle Gerät verbinden aus. Folge danach den Anweisungen in den Pop-Up Fenstern.

Dateinamen ändern

Der Dateiname der geladenen HEX-Datei setzt sich aus dem Präfix "microbit-" und dem Namen des erstellten Programms zusammen. Leerzeichen werden durch Bindestriche ersetzt. Im gezeigten Beispiel heißt das Programm test all. Die geladene HEX Datei heißt microbit-test-all.hex.

Wenn du den Namen des Programms ändern willst, schreibe den neuen Namen in das weiße Eingabefeld neben dem violetten Herunterladen-Button. Dann speichere das Programm mit einem Klick auf das blaue Disketten-Symbol.


Für Fortgeschrittene


Funktionen

Auf Fortgeschrittene und dann auf Funktionen klicken

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.

Beispielfunktion

Beispielprogramm: Schüttel dich so oft - Drehe nach rechts mit Tempo 10, pausiere 500ms, drehe nach links mit Tempo 10, pausiere 500ms, stoppe Bewegung

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.

Variablen

Sensorwert wird verwendet, um Hindernisse zu erkennen und anzuzeigen

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).


Mikrocontroller (MC) programmieren


Mikrocontroller programmieren

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.

Ereignisse

MakeCode Beispielprogramm im Text erklärt

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”).

Signale

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.

Micro:bit Aktoren & Sensoren

Der Micro:bit hat eine 5x5 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.

Externe Aktoren & Sensoren

Um externe Aktoren oder Sensoren einzubinden, kann man die Bausteine der fortgeschrittenen Kategorie Pins verwenden. Dazu kannst du dir auf unserer Website unter Tutorials mehr Infos holen und Anleitungen ansehen.

Kennst du schon unsere Robo4earth (Progressive) Web App? - Hier findest du mehr Infos zum Programmieren mit unserer App!