Calliope mini - Spaß durch Programmieren

Entwicklungsumgebungen

Eck′bloß nicht an, MotionKit!

Ziel:

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

Roboterkonfiguration

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

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

MotionKit 2.0

Anhalten

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

Hinweis: Die Geschwindigkeit lässt sich bis 255 einstellen. Das ist aber zum Anfahren zu schnell, das Auto geht vorn hoch.

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.

MotionKit 2.0

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

MotionKit 2.0

Nach dem Rückwärtsfahren dreht sich der Roboter 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 400 ms bis zum Stoppen des Motors legt fest, wie weit sich das Fahrzeug dreht.

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

Aufgabe: Lass das Auto in die andere Richtung drehen.

Aufgabe: Damit sich das Auto 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.

MotionKit 2.0

Damit der Roboter 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.

MotionKit 2.0

Roboterkonfiguration

 

Bevor mit dem MotionKitV2 gearbeitet werden kann, muss das Modul mit den Befehlen dem Projekt hinzugefügt werden. Dazu geht man im Python-Editor auf Projekt, Module hinzufügen..., und wählt das entsprechende Modul aus. Falls man sehen möchte, welche Programmzeilen im Modul stecken, muss man nach dem Klick auf den Modulnahmen die Bearbeitung von Modulen von Drittanbietern erlauben.

Calliope mini Calli:bot

Im Hauptprogramm main.py wird das neue Modul importiert. Nun kann das MotionKitV2 angesteuert werden.

Calliope mini Calli:bot

Fahren und Anhalten

Wie man im Modul 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).

MotionKit

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). Das Autofä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, das Auto fährt rückwärts.
  6. Ist der Abstand größer als 15 ch, werden die Motoren gestoppt.
  7. Das Auto 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 das Fahrzeug 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 das MotionKit 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