Calliope mini - Spaß durch Programmieren

Entwicklungsumgebungen

MotionKit - Ferngesteuert

Ziel: Das Auto wird durch die Neigung eines Calliope mini ferngesteuert.

Sender

Ein Calliope mini arbeitet als Sender. Er überträgt über Bluetooth ununterbrochen in drei Wertepaaren die x- und die y-Neigung sowie eine Information über die Aktivität. Damit man mit Bluetooth arbeiten kann, muss die Erweiterung radio-broadcast geladen werden.

Die Aktivität lässt sich über A oder B ein- und ausschalten. Damit vermeidet man, dass das MotionKit unkontrolliert fährt.

Die Anzeige der Funkgruppe dient nur zur Kontrolle.

MotionKit-Empfang
Das Programm für den Sender auf Kanal 7.

Übertragung testen

Bevor der Calli:both losfährt, wird überprüft, ob die Werte übertagen werden. Das dargestellte Programm prüft das empfangene Datenpaket auf den Namen aktiv und setzt dann die Variable aktiv auf wahr oder falsch. In der dauerhaft-Schleife wird nur die LED auf die entsprechende Farbe gesetzt.

MotionKit-Empfang
Der erste Teil des Programms für den Empfänger.

Jeder Druck auf Taste A oder B lässt die LEDs am Sender und Empfänger in Grün aufleuchten. Am Sender wird zur Kontrolle noch der Funkkanal angezeigt.

Als nächstes muss man herausfinden, welche Werte der Sender bei welcher Neigung sendet. Da die Anzeige auf dem Calliope mini-Display sehr träge ist, übernimmt der serielle Monitor in der Entwicklungsumgebung diese Funktion.

Achtung:Die Funktion funktioniert nicht mit dem Firefox (Stand November 2025). Der Firefox blockiert aus Sicherheitsgründen die WebUSB-Schnittstelle. Damit ist er ein sehr sicherer Browser, aber hier leider nicht zu verwenden. Chrome und Opera sind da die bessere Wahl.

MotionKit-Empfang
Der x-Wert wird als serielle Text ausgegeben.

Schließt man den Empfänger auf dem Auto über USB am Rechner an, sendet er die empfangenen X-Werte an die Entwicklungsumgebung zurück, in der sie angezeigt werden. Neigt man den Sender zu sich hin, werden Werte zwischen 0° (waagerecht) bis 90° (senkrecht) gesendet Kippt man ihn weiter, gehen die Werte auch über 90° hinaus.

Kippt man den Sender von sich weg, werden die X-Werte negativ.

Das gleiche Verfahren verwendet man, um die y-Wert zu bestimmen.

x- und y-Werte übernehmen

Bevor die Motoren angesteuert werden, müssen die x- und y-Werte aus dem empfangenen Signal Variablen zugeordnet werden. Das erfolgt am Ende des Blocks "wenn Datenpaket über Funk empfangen..."

MotionKit-Empfang

Motoren steuern

MotionKit-Empfang

Aus den beiden Werten für x und y müssen nun die Werte berechnet werden, mit denen die Motoren angesteuert werden. Nach einigen Experimenten hat sich bewährt, den rechten Motor aus der Summe der beiden Werte und den linken Motor aus der Differenz von y und x zu bestimmen. Mit dem faktor kann die Reaktionsstärke gesteuert werden. Mit -0.5 wird das Auto ruhiger, mit -2 hektischer.Man kann den Wert aber auch weglassen oder einfach 1 setzen.

Zur Sicherheit kann man die beiden Motorwerte wieder im seriellen Motor anzeigen lassen.

Da die Motoren nur positive Tempowerte zwischen 0 und 255 vertragen, werden immer nur die Beträge verwendet. An Hand der Vorzeichen der Motorwerte wird über vor- oder rückwärts entschieden.

Das gezeigte Programm hat sich bewährt. Eine schöne Übung ist z.B. das Rückwärts einparken in eine Parklücke. Einfach ausprobieren!

Hinweis: Man sollte noch darauf achten, dass die Tempowerte für die Motoren den Wert 255 nicht überschreiten. Dann reagieren die Motoren nämlich seltsam.

MotionKit-Empfang

zurück