Interface de programmation (vieille version 2)

Cette page décrit les possibilités de programmation du Thymio. Elle liste les différentes variables et fonctions, et indique à quels éléments du robot elles font référence.

Boutons

Thymio possède 5 boutons capacitifs correspondant aux flèches et au bouton central. Un tableau de 5 variables, buttons.binary, contient l'état de ces boutons (1 = appuyé, 0 = relâché) :

  • buttons.binary[0] : flèche arrière
  • buttons.binary[1] : flèche gauche
  • buttons.binary[2] : bouton central
  • buttons.binary[3] : flèche avant
  • buttons.binary[4] : flèche droite

Thymio met à jour ce tableau à une fréquence de 20 Hz, et génère l'événement button après chaque mise à jour.

Capteurs de distance

Horizontaux

Thymio possède 7 capteurs de distances autour de lui. Un tableau de 7 variables, prox.horizontal, contient les valeurs de ces capteurs :

  • prox.horizontal[0] : avant gauche
  • prox.horizontal[1] : avant milieu-gauche
  • prox.horizontal[2] : avant milieu
  • prox.horizontal[3] : avant milieu-droite
  • prox.horizontal[4] : avant droite
  • prox.horizontal[5] : arrière gauche
  • prox.horizontal[6] : arrière droite

Les valeurs dans ce tableau varient de 0 (le robot ne voit rien) à plusieurs milliers (le robot est très proche d'un obstacle). Thymio met à jour ce tableau à une fréquence de 10 Hz, et génère l'événement prox après chaque mise à jour.

Sol

Thymio possède 2 capteurs de distance au sol. Ces capteurs sont situés à l'avant du robot et permettent de suivre une ligne au sol. Trois tableaux permettent de lire les valeurs de ces capteurs :

  • prox.ground.ambiant : intensité lumineuse ambiante au sol, varie entre 0 (pas de lumière) et 1023 (lumière maximale)
  • prox.ground.reflected : quantité de lumière reçue pendant que le capteur émet de l'infrarouge, varie entre 0 (aucune réflexion) et 1023 (lumière maximale)
  • prox.ground.delta : différence entre la lumière réfléchie et la lumière ambiante, liée à la distance et à la couleur du sol

Pour chaque tableau, l'index 0 correspond au capteur de gauche et l'index 1 à celui de droite. Tout comme pour les capteurs de distance, Thymio met à jour ce tableau à une fréquence de 10 Hz.

Accéléromètre

Thymio possède un accéléromètre 3 axes. Un tableau de 3 variables, acc, contient la valeur de l'accélération sur ces axes :

  • acc[0] : axe x (de droite à gauche du robot, positif si vers gauche)
  • acc[1] : axe y (d'avant vers l'arrière du robot, positif si vers arrière)
  • acc[2] : axe z (qui rentre du plan horizontal, positif si vers sol)

Les valeurs dans ce tableau varient de -32 à 32, 1 g correspondant à 23, et donc une unité correspond à 0.45 N. Thymio met à jour ce tableau à une fréquence de 15 Hz, et génère l'événement acc après chaque mise à jour.

Capteur de température

La variable temperature contient la température actuelle en dixième de degré Celsius. Thymio met à jour cette valeur à 1 Hz, et génère l'événement temperature après chaque mise à jour.

LEDs

Thymio possède de nombreuses LEDs réparties sur tout son corps. La plupart sont associées à des capteurs et permettent de mettre en évidence leur activation: l'allumage des LEDs est lié par défaut aux valeurs des capteurs. Cependant, si elles sont utilisées dans le code, cette utilisation supplante celle par défaut.

Des fonctions natives permettent de contrôler les différentes LEDs. Pour toutes les LEDs, la plage de valeurs d'intensité s'étend de 0 (éteint) à 32 (complètement allumé).

Le cercle de LEDs du dessus

8 LEDs jaunes forment un cercle sur le robot, autour des boutons.

Activation par défaut : reflète les valeurs de l'accéléromètre. Eteintes à l'horizontale, leur intensité augmente en penchant le robot. La LED allumée est toujours celle au point le plus bas.

  • leds.circle(led 1, led 2, led 3, led 4, led 5, led 6, led 7, led 8)led 1 commande l'intensité de la LED avant du robot (numérotation dans le sens des aiguilles d'une montre).

Les LEDs RGB

Il y a deux LEDs RGB sur le robot pilotées ensemble, ce sont celles qui indiquent le comportement du robot. Deux autres LEDs RGB dessous sont pilotables séparément.

Activation par défaut : éteintes dans le mode Aseba.

  • leds.top(red, green, blue) commande les valeurs de rouge, vert et bleu respectivement, pour les LEDs du dessus.
  • leds.bottom.left(red, green, blue) commande les valeurs de rouge, vert et bleu respectivement, pour la LEDs du dessous à gauche.
  • leds.bottom.right(red, green, blue) commande les valeurs de rouge, vert et bleu respectivement, pour la LEDs du dessous à droite.

Les LEDs des capteurs de proximité

Chacun des capteurs de proximité du robot est accompagné d'une LED rouge soudée juste à côté (deux pour la capteur du milieu avant).

Activation par défaut : s'allument en présence d'un objet devant le capteur associé, avec une intensité plus forte plus l'objet est proche.

  • leds.prox.h(led 1, led 2, led 3, led 4, led 5, led 6, led 7, led 8) commande les LEDs des capteurs avant et arrière. led 1 à led 6 correspondent aux LEDs avant, de gauche à droite, et led 7 et led 8 aux LEDs des capteurs arrière, gauche et droite.
  • leds.prox.v(led 1, led 2) commande les LEDs des capteurs dessous, gauche et droite.

Les LEDs des boutons

4 LEDs rouges sont placées entre les boutons sur Thymio.

Activation par défaut : Pour chacun des boutons flèches, une LED s'allume lorsqu'il est appuyé. Pour le bouton du centre, les 4 LEDs s'allument.

  • leds.buttons(led 1, led 2, led 3, led 4) commande ces LED, led 1 correspond à la LED avant, et les autres sont numérotées dans le sens des aiguilles d'une montre.

La LED du récepteur télécommande

Cette LED rouge est placée à côté du récepteur télécommande.

Activation par défaut : clignote lorsqu'un code RC5 est reçu.

  • leds.rc(led) permet de la contrôler.

Les LEDs du capteur de température

Ces deux LEDs (une rouge, une bleue) se trouvent placée à côté du capteur de température (résistance NTC).

Activation par défaut : rouge si la température et au dessus de 28°C, rouge et bleu entre 28° et 15°, bleu pour une température en dessous de 15°.

  • leds.ntc(red, blue) permet de les contrôler.

La LED du micro

Cette LED bleue est placée à côté du microphone.

Activation par défaut : éteinte.

  • leds.sound(led) permet de la contrôler.

Il y a aussi des LEDs qui ne peuvent pas etre contrôlées par l'utilisateur :

  • 3 LEDs vertes dessus indiquent le niveau de batterie,
  • une LED bleue et une rouge derrière indiquent l'état de la charge,
  • une LED rouge à l'arrière est liée à la carte SD.

Moteurs

Vous pouvez changer la vitesse des roues du Thymio en écrivant dans le tableau de 2 variables motor.target :

  • motor.target[0] : vitesse demandée roue gauche
  • motor.target[1] : vitesse demandée roue droite

Vous pouvez relire la vitesse réelle des roues depuis le tableau motor.speed :

  • motor.speed[0] : vitesse réelle roue gauche
  • motor.speed[1] : vitesse réelle roue droite

La première valeur correspond à la roue gauche et la deuxième à la roue droite. Les valeurs peuvent aller de -500 à 500. Une valeur de 500 correspond approximativement à une vitesse linéaire de 20 cm/s. Vous pouvez lire la valeur de commande des moteurs dans le tableau motor.pwm.

Son

Si vous avez installé une carte micro-SD formatée FAT dans le robot, il est possible d'enregistrer et de jouer des sons. Les fichiers sont stockés sur la carte micro-SD au format brute, 8-bit non-signé, 8 kHz.

Enregistrement

Vous pouvez enregistrer des sons en utilisant la fonction native sound.record qui prend en paramètre un numéro d'enregistrement de 0 à 9. Le fichier est stocké sur la carte micro-SD sous le nom RX.RAWX est le paramètre passé à la fonction sound.record. Pour arrêter un enregistrement, appelez la fonction sound.record avec la valeur -1.

La relecture du son est en cours de développement et sera disponible dans une prochaine mise à jour du firmware.

Création de son depuis un ordinateur

Vous pouvez créer des sons pour le Thymio II depuis votre ordinateur. La façon plus efficiace de le faire est d'utiliser le logiciel audacity, version 1.3, qui existe pour les différents OS. Voici la démarche pour créer un son compatible avec Thymio II :

  • Une fois démarré audacity, changez le project rate situé en bas à gauche de 44100 Hz (défaut) à 8000 Hz.
  • Enregistrez votre son avec la touche record rouge en haut à gauche. Vous devez voir le curseur avancer et la forme d'onde se visualiser. Stoppez une fois fini avec le bouton stop.
  • Allez sur le menu File sous Export…
  • Donnez un nom de ficher, par exemple p0.raw pour le premier ficher à jouer en utilisant la fonction native sound.play.
  • Choisissez comme format: other uncompressed files
  • Sous options choisissez un Header RAW (header-less) et comme Encoding choisissez Unsigned 8 bit PCM.
  • Sauvez ou copiez le ficher sur une carte micro-SD. Cela devrait marcher.

Pour faire un test rapide vous pouvez sauver ou copier ce ficher sous le nom de poweron.raw. Il sera joué au démarrage du Thymio II.

Lecture

Vous pouvez jouer des sons en utilisant la fonction native sound.play qui prend en paramètre un numéro d'enregistrement de 0 à 9. Le fichier doit être stocké sur la carte micro-SD sous le nom PX.RAWX est le paramètre passé à la fonction sound.play. Pour arrêter de jouer un son, appelez la fonction sound.play avec la valeur -1.

Vous pouvez jouer un son système en spécifiant une valeur négative à sound.play. Les son suivant sont disponibles :

  • -1 : arrête de jouer un son
  • -2 : son de démarrage
  • -3 : son d'arrêt
  • -4 : son des boutons fléchés
  • -5 : son de chute libre
  • -6 : son de choc
  • -7 : son du bouton central
  • -8 : son de suivi de mûr
  • -9 : son de détection de cible pour suivi

Télécommande

Thymio possède un détecteur de télécommande infrarouge compatible RC5. Lorsque le Thymio reçoit un code RC5, il génère l'événement rc5. Dans ce cas, les variables rc5.address et rc5.command sont mises à jour.

Tableau des événements locaux

événement description fréquence (Hz) résultat
button les boutons ont été testés 20 buttons.binary[0-4]
acc une mesure sur l'accéléromètre a été effectuée 15 acc[0-2]
prox une mesure sur les capteurs de proximité été effectuée 10 prox.horizontal[0-7], prox.ground.ambiant[0-1], prox.ground.reflected[0-1] et prox.ground.delta[0-1]
temperature une mesure de température a été effectuée 1 temperature
rc5 le capteur de télécommande infra-rouge a reçu un signal à la reception d'un signal rc5.address et rc5.command
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License