Calliope mini - Spaß durch Programmieren

Entwicklungsumgebungen

Eck′ bloß nicht an, Calli:bot!

Ziel:

Der Calli:bot bewegt sich in einem beliebigen Raum, ohne irgendwo anzustoßen. Erkennt er ein Hindernis, läuft die folgende Programmfolge ab:

Roboterkonfiguration

Bevor mit dem Calli:bot gearbeitet werden kann, muss er in der Roboterkonfiguration eingebunden werden. Wird der Block aus Aktion herausgezogen, ist er automatisch mit dem Anschluss A0 verbunden.

Die Bezeichnungen wie C, M, M3 ... können geändert werden. Im Folgenden werden aber die Voreinstellungen benutzt.

 

Calliope mini Calli:bot

Anhalten

Der Calli:bot fährt, solange der Ultraschallsensor eine Entfernung meldet, die größer als 10 cm ist.

Aufgabe: An der Unterseite des Calli:bot befinden sich 4 RGB-LEDs. Wenn der Calli:bot fährt, sollen sie in Grün leuchten. Hält er an, leuchten sie in Rot.

Calliope mini Calli:bot

Der Calli:bot muss nach dem Bremsen eine sehr kurze Zeit warten, ansonsten geht das Programm nicht richtig weiter. Das ist so! 30 ms sind ausreichend. Wenn es nicht funktioniert, kann die Zeit etwas größer gemacht werden.

Nach dem Stoppen fährt der Calli:bot ein Stück rückwärts. Dazu wird die Geschwindigkeit als negativer Wert eingegeben. Die eigentliche Fahrzeit wird über den Wartebefehl realisiert.

Aufgabe:Ändere das Programm so, dass der Calli:bot bis auf 5 cm an das Hindernis heranfährt, dann stoppt und nur noch halb so weit wie bisher zurückfährt.

Calliope mini Calli:bot

Damit beim Stoppbefehl die notwendige Wartezeit nicht vergessen wird, schreibt man dafür eine Funktion. Die enthält das Bremsen und das Warten.

Calliope mini Calli:bot

Nach dem Rückwärtsfahren dreht sich der Calli:bot nach rechts. Dazu fährt das linke Rad vorwärts und das rechte Rad rückwärts. Insgesamt wird as eine Drehung nach rechts.
Die Wartezeit von 500 ms bis zum Stoppen des Motors legt fest, wie weit sich der Calli:bot dreht.

Aufgabe: Verdopple die Zeit auf 1000 ms und beobachte, was passiert.

Aufgabe: Lass den Calli:bot in die andere Richtung drehen.

Aufgabe: Damit sich der Calli:bot nicht immer um den gleichen Winkel dreht, wird die Wartezeit bis zum Stoppen des Motor durch eine Zufallszahl bestimmt. Probiere aus, zwischen welchen zufälligen Wartezeiten ein sinnvolles Drehen zu Stande kommt.

Calliope mini Calli:bot

Wenn alles gut programmiert wurde, erkennt der Calli:bot Hindernisse und stößt nicht dagegen. Perfekt funktioniert das aber nicht. Dazu müssten vorn weitere Sensoren angebracht werden.

Roboterkonfiguration

Bevor mit dem Calli:bot gearbeitet werden kann, muss er in der Roboterkonfiguration eingebunden werden. Das geht über Fortgeschritten, Erweiterungen...

Dann muss in der Suchzeile callibot eingetragen werden und die Erweiterung erscheint. Sie ist leider nicht in den voreingestellten Erweiterungen vorhanden. 😟

Die Anzahl der Befehle ist nicht groß, reicht aber aus.

Calliope mini Calli:bot

Anhalten

Der Calli:bot fährt, solange der Ultraschallsensor eine Entfernung meldet, die größer als 10 cm ist.

Aufgabe: An der Unterseite des Calli:bot befinden sich 4 RGB-LEDs. Wenn der Calli:bot fährt, sollen sie in Grün leuchten. Hält er an, leuchten sie in Rot.

Calliope mini Calli:bot

Nach dem Stoppen fährt der Calli:bot soweit rückwärts, bis die Entfernung zum Hindernis größer als 15 cm ist.

Hinweis: Die Pause von 30 ms vor dem Rückwärtsfahren ist nicht unbedingt notwendig. Es hat sich aber gezeigt, dass einige Calli:bot ohne diese kurze Pause nicht rückwärts fahren. Sie müssen sich kurz ausruhen.

Aufgabe: Ändere das Programm so, dass der Calli:bot bis auf 5 cm an das Hindernis heranfährt, dann stoppt und nur noch halb so weit wie bisher zurückfährt.

Calliope mini Calli:bot

Nach dem Rückwärtsfahren dreht sich der Calli:bot nach rechts. Dazu fährt das linke Rad vorwärts und das rechte Rad rückwärts. Insgesamt wird das eine Drehung nach rechts.
Die Wartezeit von 300 ms bis zum Stoppen des Motors legt fest, wie weit sich der Calli:bot dreht.

Aufgabe: Verdopple die Zeit auf 600 ms und beobachte, was passiert.

Aufgabe: Lass den Calli:bot in die andere Richtung drehen.

Aufgabe: Damit sich der Calli:bot nicht immer um den gleichen Winkel dreht, wird die Wartezeit bis zum Stoppen des Motor durch eine Zufallszahl bestimmt. Probiere aus, zwischen welchen zufälligen Wartezeiten ein sinnvolles Drehen zu Stande kommt.

Calliope mini Calli:bot

Damit der Calli:bot nicht nur in eine Richtung dreht, überlassen wir die Drehrichtung dem Zufall. In einer Entscheidung wird gewürfelt, ob er nach rechts oder links dreht. Nebenbei kann man auch noch etwas mit den Farben der LED an der Unterseite spielen.

Calliope mini Calli:bot

Wenn alles gut programmiert wurde, erkennt der Calli:bot Hindernisse und stößt nicht dagegen. Perfekt funktioniert das aber nicht. Dazu müssten vorn weitere Sensoren angebracht werden.

Roboterkonfiguration

Die Anleitungen in Python funktionieren nur mit dem Calli:bot2 und dem Calliope mini Version 3!

Bevor mit dem Calli:bot gearbeitet werden kann, muss das Modul mit den Befehlen für den Calli:bot2 hinzugefügt werden. Zur Zeit (Dezember 2025) gibt es in Python nur das Modul für MotionKitV2. Joris Bakker aus Leipzig hat dieses Modul für den Calli:bot2 umgeschrieben. Vielen Dank.

Dokumentation

callibot2.txt

Die Datei callibot2.txt muss auf dem Rechner gespeichert und dann in callibot2.py umbenannt werden. (.py-Dateien werden von einigen Browsern als Programme interpretiert, die ausgeführt werden sollen). Danach wird in Datei in ein neues Python-Projekt eingebunden. Dazu geht man im Python-Editor auf Projekt, Datei öffnen...

Hat man die callibot2.py gefunden, darf man den nächsten Dialog nicht einfach durchwinken, sondern muss auf das unscheinbare Icon am rechten Rand klicken. Dort wählt man Datei hinzufügen callibot2.py. Damit besteht das Prjekt dann aus zwei Dateien, der main.py und der callibot2.py.

Calliope mini Calli:bot

Im Hauptprogramm main.py wird das neue Modul importiert. Nun kann der Calli:bot2 angesteuert werden.

Calliope mini Calli:bot

Fahren und Anhalten

Wie man in der Dokumentation sieht, werden die beiden Motoren einzeln angesteuert. Wenn man einfach nur geradeaus fahren möchte, muss man immer beide Motoren bedienen. Um das zu vereinfachen, werden zwei Funktionen für Geradeausfahren und Stoppen zu Beginn in das Programm eingefügt.

Der Funktion gerade(r,v) werden zwei Parameter übergeben: r ist die Richtung (0 vorwärts, 1 rückwärts) und v ist die Geschwindigkeit (0...255).

Calliope mini Calli:bot

Das Programm in der unendlichen Schleife macht folgendes:

  1. Fahre gerade vorwärts mit der Geschwindigkeit 100.
  2. Solange der Abstand zu einem Hindernis größer als 10cm ist, ändere am Programmablauf nichts (pass). Der Calli:bot2 fährt also.
  3. Ist der Abstand nicht mehr größer als 10 cm, verlässt das Programm die while-Schleife und stoppt die Motoren.
  4. Die Motoren beginnen sich rückwärts mit der Geschwindigkeit 100 zu drehen.
  5. Solange der Abstand kleiner als 15 cm ist, passiert wieder nichts, der Calli:bot2 fährt rückwärts.
  6. Ist der Abstand größer als 15 ch, werden die Motoren gestoppt.
  7. Der Calli:bot2 fährt wieder gerade aus.
Calliope mini Calli:bot

Dreh dich...

Zum Drehen müssen sich die beiden Motoren in verschieden Richtungen drehen. Zur Vereinfachung wird wieder eine Funktion geschrieben, die sich um die Drehung kümmert.
Der Funktion übergibt man die Richtung r, die Geschwindigkeit v und die Drehzeit t.
Da die Motoren zur Zeit (Dezember 2025) noch keine Rückmeldung über die gedrehten Winkel liefern, muss der Drehwinkel über die Drehzeit gesteuert werden.

Ein einfacher Drehbefehl nach dem Stoppen lässt den Calli:bot2 eine Sekunde lang nach rechts drehen.

Calliope mini Calli:bot

Calliope mini Calli:bot

Mit dem Modul random für die Zufallszahlen lässt sich der Calli:bot2 nach der Hinderniserkennung nach rechts oder nach links drehen. Der Drehwinkel wird über die Drehzeit auch zufällig bestimmt.

Calliope mini Calli:bot

zurück