Calliope mini - Spaß durch Programmieren

Entwicklungsumgebungen

Eine einfache Fernsteuerung für das MotionKit

Ziel: Mit den Tasten A und B auf einem Calliope mini werden über die Bluetooth-Schnittstelle ein Auto gesteuert.

Erweiterungen laden

Zum Übertragen der Informationen über Bluetooth und zum Ansteuern des MotionKit müssen zwei Erweiterungen geladen werden. Dazu wird das Blockmenü über Fortgeschritten erweitert und über Erweiterungen die Blöcke nachgeladen. Danach findet man die Einträge Funk und MotionKit 2 im Blockmenü.

Sender Sender

Vier Zustände übertragen

Ein Calliope mini als Sender überträgt einem zweiten Calliope mini die Information, welche der beiden Tasten gedrückt sind. Mit zwei Tasten sind vier verschiedene Zustände möglich. Jedem Zustand wird eine Zahl zugeordnet, die laufend gesendet wird.

Taste A Taste B Zahl
nicht gedrückt nicht gedrückt 0
gedrückt nicht gedrückt 1
nicht gedrückt gedrückt 2
gedrückt gedrückt 3

Der Programmausschnitt zeigt das Senden der ersten beiden Zustände. Der Rest muss noch ergänzt werden. Beachte: Der Kanal darf im Umkreis nur einmal vergeben sein.

Sender

Am zweiten Calliope mini werden die übertragenen Zahlen angezeigt. Erst wenn das funktioniert, können dann die Motoren gesteuert werden.

Sender

MotionKit fahren lassen

Die Motorsteuerung erfolgt über eine Entscheidung. Die Entscheidung wird über das + am Ende der Schleife erweitert.

Vorsicht: Durch das Anzeigen der empfangenen Zahl zu Beginn des Programmteils arbeitet es sehr verzögert. Falls man so unvorsichtig ist und das Auto auf einem Tisch fahren lässt, ist es viel schneller abgestürzt, als man greifen kann. Deshalb sollten, nachdem es funktioniert, alle Befehle "zeige Zahl..." entfernt werden. Man will ja fahren und nicht Zahlen gucken.

Sender

Vor- und rückwärts fahren

Damit das Auto vor- und rückwärts fahren kann, muss eine weitere Information übertragen werden. Die beiden Tasten sind mit den vier Möglichkeiten bereits ausgeschöpft. Der Calliope mini kann aber durch seinen Lagesensor die Neigung erkenen.

Der Programmteil des Senders schickt je nach Ausrichtung ein Wertepaar zum Empfänger. Das Paar besteht immer aus dem Schlüsselwort "richtung" und einer 0 oder einer 1.

Sender

Im Empfänger wird eine Variable mit Namen richung je nach empfangenem Wert auf 0 oder 1 gesetzt. Im Motorteil muss dann an Hand dieser Variablen entschieden werden, ob der Motor vor- oder rückwärts dreht.

Sender

Module importieren und Funkkanal einschalten

Zum Übertragen der Informationen über Bluetooth muss neben der üblichen Calliopemini-Erweiterung auch noch das radio-Modul importiert werden. Dann wird die Funkübertragung eingeschaltet und der Kanal auf 10 gestellt.

Sind mehrer Fernsteuerungen im Raum, muss für jede ein anderer Kanal eingestellt werden. Es sind genügend vorhanden: 0...255!

Sender

Vier Zustände übertragen

Ein Calliope mini als Sender überträgt einem zweiten Calliope mini die Information, welche der beiden Tasten gedrückt sind. Mit zwei Tasten sind vier verschiedene Zustände möglich. Jedem Zustand wird eine Zahl zugeordnet, die laufend gesendet wird.

Taste A Taste B Zahl
nicht gedrückt nicht gedrückt 0
gedrückt nicht gedrückt 1
nicht gedrückt gedrückt 2
gedrückt gedrückt 3

Der Programmausschnitt zeigt das Senden der ersten beiden Zustände. Der Rest muss noch ergänzt werden.

Sender

Am zweiten Calliope mini werden die übertragenen Zahlen angezeigt. Erst wenn das funktioniert, können dann die Motoren gesteuert werden.

In der unendlichen Schleife wird laufend an der Funk-Schnittstelle gelauscht. Wenn eine Nachricht empfangen wurde, wird sie der Variablen e zugewiesen. Da nur Informationen vom Datentype String übertragen werden können, wird die Nachricht in eine Ganzzahl über int umgewandelt. Das ist zwar nicht unbedingt notwendig, sieht dann aber besser aus.

Wenn alles perfekt läuft, muss am zweiten Calliope mini die gleiche Zahl wie am Sender angezeigt werden. Erst jetzt kann man den Roboter fahren lassen.

Sender

MotionKit fahren lassen

Zuerst muss das Modul zum Ansteuern des Motion Kit importiert werden. Dazu geht man im Empfänger-Programm auf Projekt und wählt Module hinzufügen. In der folgenden Auswahl wält man MotionKitV2 aus. Dadurch wird in das Projekt eine neue Datei mit Namen MotionKitV2.py eingefügt.

Zu Beginn des Programms muss das Modul importiert werden.

Einen Stopp-Befehl gibt es nicht. Die Motoren halten an, wenn die Geschwindigkeit auf 0 gesetzt wird.

 

Sender

Mit den beiden Tasten lässt sich der Roboter steuern. Im Gegensatz zu MakeCode stört hier die Anzeige der übertragenen Zahlen nicht. Sie können aber auch gelöscht werden.

Vor- und rückwärts fahren

Damit das Auto vor- und rückwärts fahren kann, muss eine weitere Information übertragen werden. Die beiden Tasten sind mit den vier Möglichkeiten bereits ausgeschöpft. Der Calliope mini kann jedoch durch seinen Lagesensor die Neigung erkenen.

Der Sendebefehl kann immer nur einen String, also eine Zeichenkette senden. In der Zeichenketten werden die beiden Informationen für die Motoren (m) und die Richtung (r) in Zeile 20 verbunden. Das Trennzeichen ist hier willkürlich der Doppelpunkt. Zur Kontrolle wird noch der Inhalt von r angezeigt.

Sender

Im Empfänger wird die Nachricht am Doppelpunkt getrennt (Zeile 10). Die beiden Teile werden in einem Array (e) abgelegt. e[0] ist die Information für den Motor (m) und e[1] enthält die Richtungsinformation (r). Die kann direkt in den Motorbefehl integriert werden.

Sender

Der Wechsel der Richtung erfolgt dann, wenn der Sender etwa 45° nach oben geneigt ist.

zurück