Programmierumgebung von Thymio

Diese Seite beschreibt die Programmiermöglichkeiten des Roboters Thymio. Die verschiedenen Variablen und Funktionen werden hier kurz vorgestellt.

Tasten

Auf dem Roboter Thymio sehen Sie fünf Tasten. Die vier Pfeilförmigen Tasten sind regelmässig um die mittlere Taste angeordnet. In buttons.binary können Sie sehen, ob gerade ein Knopf gedrückt [1] oder nicht gedrückt [0] wird:

  • buttons.binary[0] : Knopf nach hinten
  • buttons.binary[1] : Knopf nach links
  • buttons.binary[2] : Mittlere Taste
  • buttons.binary[3] : Knopf nach vorne
  • buttons.binary[4] : Knopf nach rechts

Thymio erneuert die Daten dieser Liste mit einer Frequenz von 20 Hz und kreiert das Ereignis button nach jeder Erneuerung.

Distanzsensoren

Horizontal

Thymio besitzt 7 Distanzsensoren. Die Liste prox.horizontal zeigt die sieben waagrechten Distanzsensoren an:

  • prox.horizontal[0] : vorne links
  • prox.horizontal[1] : vorne, links Mitte
  • prox.horizontal[2] : vorne, Mitte
  • prox.horizontal[3] : vorne, rechts Mitte
  • prox.horizontal[4] : vorne rechts
  • prox.horizontal[5] : hinten links
  • prox.horizontal[6] : hinten rechts

Die Werte dieser Liste können von 0 (der Roboter sieht nichts) bis zu mehreren Tausend (der Roboter sieht ein sehr nahes Hindernis) variieren. Thymio erneuert diese Werte mit einer Frequenz von 10 Hz und kreierte das Ereignis prox nach jeder Erneuerung.

Boden

Thymio besitzt 2 Distanzsensoren, welche den Abstand zum Boden messen. Diese Sensoren befinden sich im vorderen Teil des Roboters. Dank diesen zwei Sensoren kann Thymio eine rLinie am Boden folgen. In den folgenden drei Listen können die Werte dieser Sensoren abgelesen werden:

  • prox.ground.ambiant : umgebende Lichtintensivität auf dem Boden. Die Werte können von 0 (kein Licht) bis 1023 (maximale Lichtstärke) variieren.
  • prox.ground.reflected : Stärke des reflektierten Lichts, während ein Sensor Infrarotlicht ausstrahlt. Die Werte können variieren von 0 (keine Reflektion) bis 1023 (alles Licht wird zurückgestrahlt)
  • prox.ground.delta : Unterschied zwischen reflektierten und umgebenden Licht, verbunden mit der Distanz und der Bodenfarbe. In jeder Liste verweist 0 auf den linken Sensor und 1 auf den rechten Sensor. Wie bei einem Distanzsensor, erneuert Thymio diese Werte mit einer Frequenz von 10 Hz.

Beschleuniger

Thymio besitzt einen Beschleuniger mit 3 Achsen. Die Liste acc enthält drei Variablen:

  • acc[0] : x-Achse (von rechts nach links, positiv nach links)
  • acc[1] : y-Achse (von vorne nach hinten, positiv nach hinten)
  • acc[2] : z-Achse (von oben nach unten, positiv nach unten)

Diese Werte können variieren zwischen -32 bis 32, 1 g korrespondiert zu 23, deshalb korrespondiert eine Einheit zu 0.45 N. Thymio erneuert diese Liste mit einer Frequenz von 15 Hz und generiert die Liste acc nach jedem Ereignis.

Temperatursensor

Die Temperature-Variable zeigt die momentane Temperatur in einem Zehntel Celsiusgrad an. Thymio erneuert diese Werte mit einer Frequenz von 1 Hz und generiert die Liste temperature nach jedem Ereignis.

LED-Lämpchen

Thymio besitzt diverse LED-Lämpchen. Viele sind mit Sensoren verbunden und können deren Aktivität sichtbar machen. In der Voreinstellung ist die Helligkeit der LED-Lämpchen verbunden mit dem Sensorenwert. Sobald jedoch die LED-Lämpchen im Kode vorkommen, übernimmt der Programmierende die Kontrolle über deren Leuchtkraft und die LED-Lämpchen repräsentieren ab dem erwähnten Zeitpunkt nicht mehr die Sensorenwerte.

Vorgegebene Funktionen erlauben dem Programmierenden die Kontrolle über die verschiedenen LED-Lämpchen zu übernehmen. Die Helligkeit aller bei Thymio verwendeter LED-Lämpchen können Werte zwischen 0 (aus) und 32 (maximale Leuchtkraft) annehmen.

LED-Kreis auf dem Roboter

Auf dem Roboter werden die Tasten von 8 gelben LED-Lämpchen umkreist.

Standard-Aktivität: veranschaulicht die Werte des Beschleunigers. Alle LED-Lämpchen leuchten nicht, wenn der Roboter horizontal ist. Wenn der Roboter geneigt ist, zeigt ein einziges LED-Lämpchen den tiefsten Punkt an mit einer Lichtintensität, die sich proportional zum Neigungswinkel verhält.

  • leds.circle(led 1, led 2, led 3, led 4, led 5, led 6, led 7, led 8), wobei led 1 das vorderste LED-Lämpchen des Roboters bezeichnet und alle anderen dem Uhrzeiger nach nummeriert sind.

RGB LED-Lämpchen

Auf dem Roboter gibt es zwei RGB LED-Lämpchen, welche beide zusammen gesteuert werden. Diese LED-Lämpchen zeigen das Verhalten des Roboters an. Es gibt unten noch zwei weitere RGB LED-Lämpchen, welche separat gesteuert werden können.

Standard-Aktivität: Aus, solange der Roboter in Aseba-Modus läuft.

  • leds.top(rot, grün, blau) zeigt die Intensität der obersten LED-Lämpchen an.
  • leds.bottom.left(rot, grün, blau) zeigt die Intensität der LED-Lämpchen von unten links an.
  • leds.bottom.right(rot, grün, blau) zeigt die Intensität der LED-Lämpchen von unten rechts an.

LED-Lämpchen der Distanzsensoren

Jeder Distanzsensor is tmit einem roten LED-Lämpchen auf seiner Seite verbunden. Zwei dieser LED-Lämpchen befinden sich vorne im Roboter und jeweils eines auf der Seite.

Standard-Aktivität: Ein, wenn ein Objekt nahe am Roboter ist, mit einer Intensität, die sich invers proportional zur Distanz verhält.

  • leds.prox.h(led 1, led 2, led 3, led 4, led 5, led 6, led 7, led 8) definiert die horizontalen LED-Lämpchen vorne und hinten in Thymio. led 1 to led 6 korrespondiert mit den vorderen LED-Lämpchen des Roboters (von rechts nach links), während led 7 und led 8 das hintere, linke und hintere, rechte LED-Lämpchen beziehen.
  • leds.prox.v(led 1, led 2) definiert die LED-Lämpchen, welche mit dem unteren linken bzw. rechten Sensoren verbunden sind.

Untere LED-Lämpchen

Zwischen den Tasten auf dem Roboter befinden sich vier rote LED-Lämpchen.

Standard-Aktivität: Für jede Pfeiltaste leuchtet ein LED-Lämpchen auf, wenn die Pfeiltaste gedrückt wird. Sobald der mittlere Knopf gedrückt wird, leuten alle vier LED-Lämpchen auf.

  • leds.buttons(led 1, led 2, led 3, led 4) kontrolliert diese LED-Lämpchen, wobei led 1 sich auf das vorderste LED-Lämpchen bezieht und alle anderen im Uhrzeigersinn nummeriert wurden.

LED-Lämpchen des Fernsteuerungsempfängers

Dieses LED-Lämpchen befindet sich nahe beim Fersteuerungsempfänger.

Standard-Aktivität: Blinken, sobald der Roboter Befehle über den RC5- Fernsteuerungskode erhält.

  • leds.rc(led) kontrolliert dieses LED-Lämpchen

LED-Lämpchen des Temperatursensors

Zwei LED-Lämpchen (eines rot und eines blau) befinden sich nahe beim Temperatursensor (NTC Widerstand).

Standard-Aktivität: Rot, wenn die Temperatur über 28°C ist; rot und blau, wenn die Temperaturwerte zwischen 28° und 15° liegen und blau, wenn es kälter als 15°C ist.

  • leds.ntc(red, blue) kontrolliert das LED-Lämpchen des Temperatursensors.

LED-Lämpchen fürs Mikrofon

Dieses LED-Lämpchen leuchtet blau und befindet sich nahe vom Mikrofon.

Standard-Aktivität: Aus.

  • leds.sound(led) kontrolliert das LED-Lämpchen fürs Mikrofon.

Ausserdem gibt es noch LED-Lämpchen, welche nicht vom Programmierenden kontrolliert werden können:

  • 3 grüne LED-Lämpchen oben auf dem Roboter zeigen den Ladezustand der Batterie an
  • ein blaues und ein rotes LED-Lämpchen hinten im Roboter zeigen das Aufladen der Batterie an
  • ein rotes LED-Lämpchen hinten im Roboter zeigt den Status der SD-Karte an

Motoren

Die Geschwindigkeit der Motoren kann von Ihnen in der Liste motor.target geändert werden:

  • motor.target[0]: gewünschte Geschwindigkeit für das linke Rad
  • motor.target[1]: gewünschte Geschwindigkeit für das rechte Rad

Die tatsächliche Geschwindigkeit kann in der Liste motor.speed abgelesen werden:

  • motor.speed[0] : tatsächliche Geschwindigkeit des linken Rades
  • motor.speed[1] : tatsächliche Geschwindigkeit des rechten Rades

Die ersten Werte beziehen sich jeweils auf das linke Rad und die zweiten Werte auf das rechte Rad. Werte von -500 bis zu 500 sind erlaubt. Einen Wert von 500 entspricht ungefähr einer konstanten Geschwindigkeit von 20 cm/s. Die Werte der Befehle können in der Liste motor.pwm abgelesen werden.

Ton

Wenn Sie eine micro-SD Karte als FAT formatiert haben, können Sie Töne aufnehmen und Musik abspielen auf dem Roboter. Die daraus entstehenden Daten werden in der micro-SD Karte gespeichert in einem 8-bit, vorzeichenlosen Rohformat von 8kHz.

Aufnehmen

Mit der vorprogrammierten Funktion sound.record können Sie Töne aufnehmen. Diese Funktion benötigt Werte von 0 bis 9. Die Daten können in einer Mikro-SD Karte gespeichert werden unter dem Namen RX.RAW, wobei X durch den Parameter ersetzt wird und auch in der Funktion sound.record verwendet wird. Um eine Aufnahme zu beenden, benutzen Sie sound.record mit einem Wert von -1.

Das Wiedergeben einer aufgenommenen Tondatei befindet sich momentan noch in der Entwicklung, wird aber in einem zukünftigen Upgrade zur Verfügung gestellt.

Töne auf dem Computer produzieren

Es ist möglich, Töne für Thymio II auf dem Computer zu programmieren. Der effizientiste Weg, um solche Tondateien zu kreieren ist das Programm Audacity in der Version 1.3. Dieses Programm ist für verschiedene Betriebssysteme erhältlich. Hier eine Kurzanleitung, wie man Töne erzeugen kann, welche Thymio II abspielen kann:

  • Sobald Audacity gestartet wurde, sollten Sie die project rate von 44100 Hz (Standard) auf 8000 Hz reduzieren. Diese Einstellung befindet sich in der unteren, linken Ecke des Audacity-Fensters.
  • Nehmen Sie Ihre Tondatei auf, indem Sie auf den roten Knopf im oberen linken Teil des Audacity-Fensters drücken. Sie sollten nun sehen, wie sich der Curser bewegt und wie sich die Schallwellen bewegen. Beenden Sie die Aufnahme, indem Sie auf Stop klicken.
  • Klicken Sie im Menu File auf Export…
  • Geben Sie Ihrer Datei einen Namen, zum Beispiel p0.raw. Benutzen Sie zum Abhören Ihrer Datei die vorprogrammierte Funktion sound.play.
  • Wählen Sie als Format other uncompressed files.
  • Wählen Sie unter options, ein RAW (ohne Titel) und unter Encoding Unsigned 8 bit PCM.
  • Speichern oder kopieren Sie Ihre Datei auf eine Mikro-SD Karte.

Falls Sie kurz ausprobieren möchten, wie sich eine solche Tondatei anhört, können Sie Ihre Datei unter poweron.raw abspeichern. Thymio wird diese Datei beim Start spielen.

Musik

Töne und Musik können mit der vorprogrammierten Funktion sound.play mit Aufnahmenummern von 0 bis 9 abgespielt werden. Die Tondatei muss sich bereits mit dem Namen PX.RAW auf der Mikro-SD Karte befinden. Wobei das X des Dateinamens PX.RAW dem unter sound.play erwähnten Parameter übereinstimmen muss. Um das Abspielen einer Tondatei zu beenden, benutzen Sie bitte die Funktion sound.play mit dem Wert -1.

Sie können auch bereits vorprogrammierte Systemlaute abspielen lassen, indem Sie folgende negative Werte zur Funktion sound.play hinzufügen:

  • -1 : Beendet das Abspielen einer Tondatei
  • -2 : Anschaltmelodie
  • -3 : Abschaltmelodie
  • -4 : Ton der Pfeiltasten
  • -5 : Ton des freien Falles
  • -6 : Ton eines Zusammenstosses
  • -7 : Ton des mittleren Knopfs
  • -8 : Ton des an der Wand entlang Fahrens
  • -9 : Ton des Entdecken eines Hindernisses, als Vorwarnung für den nächsten Roboter

Fernsteuerung

Thymio enthält einen Empfänger für eine Infrarot-Fernsteuerung, welche mit dem RC5-Protokolls kompatibel ist. Sobald Thymio einen RC5 Kode empfängt, wird das Ereignis rc5 ausgelöst und die Variablen von rc5.address und rc5.command auf den aktuellen Stand gebracht.

Tabelle lokaler Ereignisse

Ereignis Beschreibung Frequenz [Hz] Resultat
button Tastenwerte wurden abgelesen 20 buttons.binary[0-4]
acc Beschleunigungsmesser wurde abgelesen 15 acc[0-2]
prox Distanzsensoren wurden abgelesen 10 prox.horizontal[0-7], prox.ground.ambiant[0-1], prox.ground.reflected[0-1] and prox.ground.delta[0-1]
temperature Temperatur wurde abgelesen 1 temperature
rc5 Infrarotlicht-Empfänger empfing ein Signal je nach Signalempfang rc5.address und rc5.command
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License