Calliope mini - Spaß durch Programmieren

Entwicklungsumgebungen

Eine einfache Fernsteuerung für den Calli:bot

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

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

Calli:both fahren lassen

Die Motorsteuerung erfolgt über eine Entscheidung. Die Entscheidung wird über das + zu Beginn der Schleife erweitert.

Die kleine Wartezeit zum Ende des Programms ist notwendig, damit das Programm ordentlich funktioniert. Erklärt werden kann das nicht.

Sender

Erweiterungen laden

Zum Übertragen der Informationen über Bluetooth und zum Ansteuern des Calli:bot 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 Calli:bot 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

Calli:both fahren lassen

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

Im der Praxis reagiert der Calli:bot im Gegensatz zum Programm aus dem OpenRobertaLab etwas zeitverzögert.

Sender

Vor- und rückwärts fahren

Damit der Calli:bot 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 erkennen.

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

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.

Empfänger

Calli:both fahren lassen

Wie in Eck' bloß nicht an beschrieben, wird das Modul für den Calli:bot eingebunden.

Nun werden nicht laufend die Motoren mit Informationen versorgt, sondern nur dann, wenn sich der Zustand ändert. Dazu wird nach einer empfangegen Nachricht

  1. geprüft, ob die Nachricht mit der aktuellen Richtung überenstimmt.Falls das der Fall ist, passiert nichts. Wenn die beiden Werte nicht gleich sind,geht es weiter
  2. Die aktuelle Richtung wird auf die in der Nachticht enthaltene Richtung gesetzt
  3. Der Zustand der Motoren wird auf die aktuelle Richtung gesetzt.

Bei jeder neuen Nachricht wird nun wieder geprüft, ob sie der aktuellen richtung entspricht.

Sender

Vor- und rückwärts fahren

Damit der Calli:bot 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 erkennen.

Bisher hat der Sender nur Ziffern übertragen. Vielleicht ist schon aufgefallen, dass bei der Übertragung nur Strings gesendet werden, Zahlen sind nicht möglich. Um nun mehr Informationen vom Sender zum Empfänger zu übertragen, kann man zur Vereinfachung der Auswertung auf dem Sender strukturierte Strings senden.

Der Sender sendet nicht nur Ziffern, sondern in Abhängigkeit von den gedrückten Könpfen m:0, m:1 usw. Das m steht für Motor. Der Empfäger zerlegt den String am Doppelpunkt und erhält ein Array, das aus zwei Elementen besteht.

h=nachricht.split(':')

In h[0] steht ein m und in h[1] die jeweilige Ziffer. (h für Hilfsvariable)

Wenn man das so eingearbeitet hat, sollte der Calli:bot wie bisher fahren, es ändert sich also erstmal nichts.

Sender
Der Sender kennzeichnet die Motorsteuerung durch ein vorangestelltes m, der Doppelpunkt trennt die beiden Informationen.
Sender
Im Empfänger wird der String am Doppelpunkt zerlegt. Das m kennzeichnt die Informationen für die Steuerung der Motoren.

Der Sender überträgt mit r:0 oder r:1 jeweils eine Information zur Richtung. Dazu wird der Beschleunigungssensor ausgelesen.

Das Empfängerprogramm bedarf eines größeren Umbaus. An die Motoren muss jetzt eine neue Information geschickt werden, wenn sich die gedrückten Knöpfe oder die Richtung geändert haben. Deshalb wird noch eine Variable neu definiert, die auf 1 gesetzt wird, wenn sich entweder die Richtung oder die Motoren geändert haben. Ist sie 1, werden die Motoren neu versorgt. Die Variable neu wird dann auf 0 gesetzt, damit die Motoren nicht laufend angesprochen werden.

Sender
Im Sender werden am Ende noch vier Zeilen eingefügt, die die Richtungsinformation senden.
Sender
Im Empfänger sind etwas mehr Umbauten notwendig.

Der Calli:bot reagiert sofort auf die Tasten und Neigung des Senders.Da er unten noch vier RGB-LEDs hat, kann man ihn noch beleuchten. Grün lässt sich z.B. mit callibot2.rgbAll(0,255,0) einschalten.

zurück