Programmieranleitung für Kinder und Jugendliche

Diese Seite ist extra für Kinder und Jugendliche gemacht. Deshalb unterscheidet sich diese Seite vom Rest der Webpage.

Diese Anleitung hilft dir mit verschiedenen Übungen, den Roboter Thymio zu steuern. Dabei lernst du sowohl den Roboter Thymio zu programmieren als auch die LED-Lämpchen und den Motor zu kontrollieren. Wenn du diese Übung genau mitmachst, hast du schnell gelernt, ganz alleine einen Roboter zu kontrollieren und zu steuern. Viel Spass!

Diese Anleitung ist in verschiedene Abschnitte unterteilt. In jedem Abschnitt lernst du etwas Neues. Manchmal wirst du auch auf andere Seiten weitergeleitet. Es ist wichtig, dass du weisst, wie du wieder zurück auf diese Seite kommst. Eigentlich musst du dann nur zwei Klicks machen. Zuerst im linken Menu auf Programmieren und dann auf Übungsanleitung Thymio.

Entdecke den Roboter Thymio und die Programmiersprache Aseba

Als erstes nimmst du den Roboter vorsichtig näher zu dir. Auf dem Roboter siehst du mehrere Tasten. Indem du den mittleren, runden Knopf lange drückst, kannst du den Roboter einschalten. Mit den Pfeiltasten rund um die runde Knopf kannst du verschiedene, vorprogrammierte Verhaltensmuster auswählen. Auf dieser Website kommst du mit einem Klick auf die blauen Wörter auf eine neue Seite, welche dir genauere Informationen über das blau geschriebenene Wort gibt. Zum Beispiel kannst du auf Verhaltensmuster klicken und wirst dann auf eine Seite mit Informationen über Verhaltensmuster weitergeleitet. Auf jener Seite erfährst du, wie du mit den Pfeiltasten die Farbe des Roboters verändern kannst und welche vorprogrammierten Dinge der Roboter Thymio machen kann. Wenn du alle Übungen gut machst, dann kannst du ein neues Verhaltensmuster von Thymio programmieren.

Verbinde mit dem USB-Kabel den Roboter mit dem Computer. Nun startest du das Programm Aseba Studio, wo du bald den Steuerungs-Kode für den Roboter hineinschreiben wirst. Das Programm Aseba Studio sieht so aus:

asebalayoutEN.png
  1. Mit diesen Knöpfen kannst du dein eigener Kode auf den Roboter laden und starten.
  2. Dieses Fenster zeigt den Speicher des Roboters an: Die Werte der Sensoren, der Auslöser und der Variablen.
  3. Hier findest du die vorprogrammierten Funktionen, welche du in deinem Kode verwenden kannst.
  4. In die Mitte des Bildschirms, wird unser Kode geschrieben. Dieser Kode wird nachher das Verhalten vom Roboter steuern.
  5. Hier können Konstanten bestimmt werden.
  6. Hier können eigene Ereignisse hingeschrieben werden.
  7. Diese Linie zeigt an, ob der Kode richtig geschrieben ist.

Sensoren

Im linken Teil von Aseba Studio, siehst du die Werte der Sensoren vom Roboter. Ein Sensor kann zum Beispiel die Helligkeit des Lichts, die Lautstärke eines Tons, die Geschwindigkeit eines Fahrzeugs oder die Distanz von einem Hindernis. Bei einem Distanzsensor misst der Sensor zum Beispiel den Abstand bis zu einem Hindernis. Die Werte dieses Sensors kannst du dann im Speicher unter prox.horizontal ablesen. Wenn du deine Hand vor den Roboter bewegst und auf erneuern klickst, kannst du sehen, wie sich die Werte verändern.

proxmainEN.png proxrienEN.png

Im ersten Bild findet der Roboter nichts (0). Im zweiten Bild wurde eine Hand vor den Roboter gehalten und man sieht, dass die Sensoren des Roboters die Hand entdeckt haben, weil die Werte sehr hoch sind.

Der Roboter selbst zeigt mit der Helligkeit des Lichts an, wie weit entfernt ein Objekt ist.

Die LED-Lämpchen

Ein LED-Lämpchen ist ein Teil in einem Roboter, der Licht machen kann. Speziell ist, dass jedes LED-Lämpchen durch seine Farbe anzeigt, wie es gebaut wurde. Zum Beispiel zeigen die roten LED-Lämpchen beim Roboter Thymio nach vorn, die grünen nach oben, usw. Wie du schon weisst, kann man die Farbe des Roboters verändern. Dies ist möglich, weil jeweils drei einzelne LED-Lämpchen (rot, grün, blau) in einer Gruppe montiert wurden. Diese Basisfarben kannst du zu neuen Farben zusammenfügen. Wenn zum Beispiel das rote und das blaue LED-Lämpchen leuchten, entsteht daraus die Farbe violett. Eine Gruppe bestehend aus drei LED-Basisfarben heisst RGB LED. (RGB steht für rot, grün, blau).

LED-Lämpchen einschalten

Um ein LED-Lämpchen einzuschalten, musst du zuerst dem Roboter mit einem Befehl, einem so genannten Kode, sagen, was er machen soll.

Was ist ein Kode?

Ein Kode ist der Name von programmierten Befehlen. Wenn dein Kode in den Roboter geladen und gestartet wird, beginnt der Roboter deine programmierten Befehle zu befolgen. Es ist sehr wichtig, dass du die gleiche Sprache benutzt wie dein Roboter. Denn sonst vesteht der Roboter deinen Kode nicht und wird nicht das machen, was du möchtest.
Falls du die LED-Lämpchen steuern möchtest, klicke in vordefinierte Funktionen auf LEDs. Jetzt solltest du eine Liste von verschiedenen Funktionen sehen. (Funktionen ist der Name eines Befehls, welcher der Roboter versteht.) Diese Funktionen, die du in der Liste siehst, schalten die LED-Lämpchen ein und aus. Zum Beispiel schaltet die Funktion leds.top die obersten LED-Lämpchen ein.

functionsEN.png

In der Mitte von Aseba Studio kannst du deine Befehle, dein Kode eingeben. Damit die gleichen Kodes auf der ganzen Welt benutzt werden können, sind die Kodes in Englisch geschrieben. Schreibe jetzt auf Englisch deinen ersten Kode für den Roboter Thymio:

call leds.top(0,0,32)

Das Stichwort call heisst "aufrufen" und wird verwendet, um eine Funktion auszuführen. Wie du nun schon weisst, kontrolliert leds.top die obersten RGB LED-Lämpchen. In die Klammern werden Argumente, genauere Angaben zur Funktion, geschrieben. Übrigens: wenn du nicht genau weisst, was eine Funktion machen wird, kannst du lange mit der Maustaste auf dem Funktionsnamen bleiben und eine kurze Informationsbox über die Funktion wird angezeigt.

definition.png

Für leds.top gibt es drei Parameter, welche jeweils die Helligkeit der einzelnen RGB LED-Lämpchen, also rot, grün und blau, anzeigen. Lämpchen mit dem Wert 0 sind ausgeschaltet, das Maximum der Helligkeit der Lämpchen ist 32. Alle Werte zwischen 0 und 32 verändern die Helligkeit des Lämpchens. Wenn du also den Wert 16 eingibst, scheint das Lämpchen nur halb so stark als mit dem Wert 32.

Klicke nun auf Laden, und dann Ausführen. Der Roboter Thymio sollte nun dein Programm ausführen und die blauen LED-Lämpchen leuchten lassen.

Ändere den Kode nun zu:

call leds.top(32,0,0)

Jetzt hast du programmiert, dass die roten LED-Lämpchen leuchten. Probiere nun diesen Kode aus:

call leds.top(0,32,32)

Jetzt sollten deine LED-Lämpchen Cyanblau leuchten. Wenn du ein wenig mit den Werten herumspielst, kannst du neue Farben aufleuchten lassen.

Kommentare

Bis jetzt hat unser Kode nur aus Befehlen bestanden, die der Roboter verstehen kann. Man kann aber auch zusätzliche Informationen hinschreiben, ohne den Roboter zu verwirren. Diese zusätzlichen Informationen heissen in der Fachsprache Kommentare und sind vor allem wichtig, wenn man sich zusätzliche Notizen machen möchte, was das Programm genau in jenem Moment macht oder wenn mehrere Personen am gleichen Programm arbeiten. In diesem Fall kann man einfach ein # am Anfang der Kommentarzeile hinschreiben. Wenn der Kommentar länger als eine Zeile ist, muss man ihn am Anfang mit #* anschreiben und am Ende mit *#. Probier es aus, denn auch Profis benutzen solche Kommentare sehr oft.

#* schaltet das blaue LED-Lämpchen ein – 
der Roboter versteht diese Geheimsprache nicht*#
call leds.top(0,0,32)

Tipps & Tricks

In Aseba Studio kannst du Stichwörter in den Seitenfenster anklicken und ins mittlere Programmierfenster ziehen. Wenn du diesen Trick benutzt, musst du nicht mehr so viel schreiben.
Ausserdem kannst du auch in Aseba Zeilen anwählen und wie bei Windows mit Ctrl+c kopieren und mit Ctrl+v einfügen.

Bedingungen

Wenn du auf Ausführen in Aseba Studio klickst, startet der Roboter das in Aseba Studio eingegebene Programm. Zum Beispiel beginnen die LED-Lämpchen beim oben erwähnten Kode zu leuchten. Es ist auch möglich, einen Knopf auf dem Roboter zu bestimmen, der genau das Gleiche wie Ausführen macht. Um herauszufinden, welcher Knopf gerade gedrückt wird, kannst du die Variablen in buttons.binary im Speicher überprüfen.

buttonsEN.png

Hier siehst du, dass der Knopf, der nach Vorne zeigt (Nummer 3), gedrückt wird.

In diesem Fall wird die Bedingung, dass ein Knopf gedrückt wird, um das Programm zu starten folgendermassen geschrieben: Benutze die Bedingung if … then … else … end (wenn…dann…sonst…Ende). Dies sagt dem Roboter zum Beispiell WENN der Knopf (Nummer 3) gedrückt ist, DANN schalte das LED-Lämpchen ein. In Aseba Studio wird dies folgendermassen geschrieben:

if buttons.binary[3]==1 then    #wenn der Knopf nach vorne gedrückt (1) ist, 
    call leds.top(0,0,32)        #dann schalte das blaue LED-Lämpchen ein
else
    call leds.top(0,0,0)         #sonst schalte alle LED-Lämpchen aus
end

Dieser Kode sagt dem Roboter, dass er das blaue LED-Lämpchen einschalten soll, wenn die Bedingung erfüllt ist, dass der Knopf nach vorne (buttons.binary[3]) gedrückt ist. Falls die Bedingung nicht erfüllt wurde, soll das LED-Lämpchen nicht leuchten.

Wenn du nur diesen Kode eingibst, wirst du bemerken, dass der Kode nur am Anfang des Programms einmal funktioniert. Wenn du aber möchtest, dass das LED-Lämpchen jedes Mal aufleuchtet, wenn du den Knopf drückst, dann muss regelmässig überprüft werden, ob der Knopf gedrückt ist oder nicht. Dafür brauchst du ein Ereignis.

Ereignisse

Ein Ereignis ist ein Moment, wo bestimmte Bedingungen erfüllt werden müssen, damit die entsprechenden Kodes ausgeführt werden. Im linken Fenster in Aseba Studio siehst du eine Liste der lokale Ereignisse.

eventsEN.png

Die Taste Ereignis entspricht dem Moment, in dem überprüft wird, welche Knöpfe gerade gedrückt sind. Deshalb genügt es, eine einzige Zeile Kode zum bereits geschriebenen Kode hinzuzufügen.

#Jedes Mal, wenn die Knöpfe gedrückt sind
onevent button
if buttons.binary[3]==1 then    #wenn der Knopf nach vorne gedrückt (1) ist, 
    call leds.top(0,0,32)        #dann schalte das blaue LED-Lämpchen ein
else
    call leds.top(0,0,0)         #sonst schalte alle LED-Lämpchen aus
end

Nun kannst du den Kode testen mit Laden und Ausführen. Die LED-Lämpchen des Roboters sollten nun immer blau werden, wenn der Knopf nach vorne gedrückt wird und sonst sollten das blaue LED-Lämpchen nicht leuchten.
Es gibt noch viele andere Ereignisse: Motor für die Motoren, acc für den Beschleuniger usw.

Motoren

Für die Motoren gibt es 3 verschiedene Variablen im Speicher. Zu Beginn werden wirst du nur die erste Variable benützen, nämlich motor.target. Dies wird benutzt, um die Geschwindigkeit des Motors zu bestimmen. Unter motor.speed siehst du die momentane Geschwindigkeit.

motor.png

Die aktuelle Geschwindigkeit (motor.speed) unterscheidet sich ein wenig von der gewollten Geschwindigkeit (motor.target).

Jetzt kannst du einen Kode schreiben, bei welchem die Knöpfe direkt die Motoren anschalten.

#Jedes Mal, wenn die Knöpfe gedrückt sind
onevent button
if buttons.binary[3]==1 then    #wenn der Knopf nach vorne gedrückt (1) ist, 
    call leds.top(0,0,32)        #sonst schalte alle LED-Lämpchen aus
else
    call leds.top(0,0,0)         #sonst schalte alle LED-Lämpchen aus
end

if buttons.binary[3]==1 then
    motor.target[0]=200 
    motor.target[1]=200 
end

if buttons.binary[2]==1 then 
    motor.target[0]=0 
    motor.target[1]=0 
end

if buttons.binary[0]==1 then 
    motor.target[0]=-200 
    motor.target[1]=-200 
end

if buttons.binary[1]==1 then 
    motor.target[0]=-200 
    motor.target[1]=200 
end

if buttons.binary[4]==1 then 
    motor.target[0]=200 
    motor.target[1]=-200
end

Nun solltest du den Roboter mit den Knöpfen steuern können. (Vergiss aber nicht, vorher das Programm auf den Roboter zu Laden und Auszuführen.

Sensoren benutzen

Um zu verhindern, dass der Roboter vom Tisch fällt, kannst du die Distanzsensoren benutzen. Der Roboter Thymio II hat insgesamt neun Distanzsensoren: 5 nach vorne, 2 nach hinten und 2 nach unten. Die Distanzsensoren, welche den Abstand nach unten messen, können benutzt werden, um die Ecke eines Tisches zu bemerken und den Roboter anzuhalten.

Distanzsensor

Ein Distanzsensor misst den Abstand zu nahen Hindernissen. Dafür benötigt ein Distanzsensor zwei verschiedene Techniken: einen Infrarotlicht-Strahler und einen Infrarotlicht-Empfänger. Der Infrarotlicht-Strahler sendet rotes Licht aus, welches auch für das menschliche Auge sichtbar ist. Der Infrarotlicht-Empfänger misst das an Hindernissen zurückgestrahlte, reflektierte Licht, welches für das menschliche Auge nicht sichtbar ist. Wenn ein Hindernis sehr nahe ist, wird viel Licht reflektiert. Je weiter weg das Hindernis ist, desto weniger Licht wird zurückgestrahlt. Mit der Messung des zurückgestrahlten Lichts ist es möglich, den Abstand zu Hindernissen zu messen.

Um zu verhindern, dass der Roboter vom Tisch fällt, benutzt du am Besten die Distanzsensoren nach unten. Bevor du nun programmierst, lerne die Distanzsensoren ein wenig besser kennen. Stelle jetzt den Roboter auf den Tisch und klicke immer wieder auf erneuern, um die Werte in prox.ground.delta zu überprüfen.

proxtable.png

Überprüfe nun die Werte in prox.ground.delta nochmals, während du den Roboter in die Luft hältst. Siehst du wie sehr sich die Werte unterscheiden?

proxvide.png

Deshalb fügst du nun eine zusätzliche Bedingung an deinen Kode:

onevent prox
if prox.ground.delta[0]<300 or prox.ground.delta[1]<300 then 
#wenn prox.ground.delta[0]<300 oder prox.ground.delta[1]<300, 
#dann schalte die Motoren aus.
    motor.target[0]=0 
    motor.target[1]=0 
end

Wenn die Werte von einem der zwei Sensoren zu tief ist, d.h. kein Tisch entdeckt wird, werden die Motoren mit diesem Kode ausgeschalten. Probier das Programm nun aus, aber pass auf, dass der Roboter nicht wegen eines falschen Kodes vom Tisch fällt! Stoppt dein Roboter an der Kante des Tisches?

Gratulation!

Du hast alle Übungen gemacht und ein neues Verhalten des Roboters Thymio programmiert!

Speichere den Kode, wenn du ihn behalten willst und schliesse Aseba Studio. Jetzt darfst du den Roboter vom Computer trennen und ohne Kabel ausprobieren. Vergiss aber nicht, dass wenn du den Roboter Thymio ausschaltest, wird er dein Programm vergessen und du musst es erneut auf den Roboter laden.

Falls du noch andere Verhalten programmieren möchtest, kannst du zum Beispiel die anderen Sensoren oder LED-Lämpchen benutzen. Viel Spass beim Programmieren des Roboters!

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License