Mis à jour le mercredi 18 octobre 2017
  • 10 heures
  • Facile

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Découvrez d'autres façons de programmer Thymio

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Nous avons vu à la fin de la partie précédente qu’il existe différents langages de programmation : programmation évènementielle et/ou séquentielle, programmation visuelle, textuelle ou mixte visuelle/textuelle.

Dans ce chapitre, vous allez pouvoir commencer à expérimenter plusieurs façons de programmer Thymio, avec différents langages. Les éléments décrits ici, ainsi que les ressources extérieures que je vous indiquerai, vous permettront d'écrire des petits programmes pour mieux comprendre comment ils fonctionnent. L’approche est assez libre : découvrez, butinez ici ou là, et identifiez les langages dans lesquels vous êtes plus à l'aise.

En plus de Thymio VPL, que vous connaissez déjà bien, nous allons rapidement explorer dans ce chapitre le fonctionnement de Thymio VPL avancéThymio Blockly, et Thymio Scratch. Rappelez-vous bien qu'il n’y a pas de langage fondamentalement meilleur qu’un autre, ils ont tous leurs avantages et leurs inconvénients, bien adaptés à la programmation de certains algorithmes... et moins à d’autres.

Thymio VPL avancé

Vous connaissez Thymio VPL, on ne va pas revenir dessus.

Par contre il existe un mode avancé de Thymio VPL, que nous n'avons pas encore exploré. Ce mode plus évolué, mais aussi plus compliqué à utiliser, fournit :

  • de nouveaux actionneurs, comme le lancement du décompte d’un timer

  • de nouveaux capteurs, comme la détection de fin du timer

  • des réglages de sensibilité des capteurs

  • ainsi que la prise en compte des états du robot.

Programmez le timer

Commençons par le timer (sans nous occuper des états pour le moment, les arcs de cercle en gris que vous voyez dans les blocs verts) :

Testez ce programme VPL avancé avec le timer
Testez ce programme VPL avancé avec le timer
  • La première instruction signifie « Si on appuie sur le bouton central, alors le robot se colore en rouge et le timer se déclenche (début du compte à rebours) ». Le timer sur le cadran a été réglé à 2 secondes (le cadran complet fait 4 secondes).

  • La deuxième instruction signifie « Si le timer a terminé (fin du compte à rebours), alors le robot se colore en vert ».

Grâce au timer, on a ainsi un moyen d’enchaîner 2 actions à la suite à 2 secondes d'intervalle, alors que jusqu’à maintenant on ne savait faire que des actions simultanées.

Un autre exemple avec le timer :

À nouveau, testez le programme !
À nouveau, testez le programme !
  • La première instruction signifie « Si le robot ne détecte rien devant, alors il avance et prend la couleur verte »

  • La deuxième instruction signifie « Si le capteur de devant détecte quelque chose, alors un timer de 2 secondes est déclenché, le robot joue une note de musique et il s’arrête ». Je vous rappelle que les  3 actions ici ont lieu simultanément.

  • La troisième instruction signifie « Si le timer a fini alors le robot passe en rouge ».

Avec ce comportement, que se passe-t-il quand le robot est lâché dans un nouvel environnement ?

Vous avez trouvé ? Le robot est vert et explore l'espace en avançant tout droit tant qu'il n’y a pas d’obstacle devant lui. Quand il détecte quelque chose en face de lui, il s’arrête, fait de la musique et 2 secondes plus tard devient rouge.

Exploitez les états du robot

Parlons maintenant un peu des états du robot, les quatre petits arcs de cercle dans un bloc entouré de vert ou de bleu, que vous voyez en deuxième position sur mes deux derniers programmes. Qu'est-ce que c'est et à quoi cela sert ?

Tout d'abord, sachez qu'un état du robot est représenté dans VPL avancé par un cercle de 4 petits arcs gris, blancs ou orange, et est visible sur le robot lui-même grâce au cercle de LEDS autour de la zone de boutons.

Sans l’utilisation des états, on a une instruction classique du type « Si on appuie sur le bouton central du robot, alors le robot devient rouge ».

En utilisant les états maintenant, on peut avoir une instruction du type « Si on appuie sur le bouton central du robot et que l’état du robot est un arc blanc alors le robot devient rouge », une autre pouvant être « Si on appuie sur le bouton central du robot et que l’état du robot est un arc orange alors le robot devient vert ».

Vous avez compris l'utilité ? Avec les états, un même événement peut entraîner des actions différentes selon l’état du robot. Les états du robot agissent un peu comme une variable en somme !

Observez ce programme :

Testez les états en VPL avancé
Exploitez les états en VPL avancé

À côté de l’événement « Si on appuie sur le bouton rond », il y a quatre arcs de cercle rangés en cercle. Chaque arc peut être gris (inutilisé, pas pris en compte), blanc (état 0) et orange (état 1).

Dans notre exemple, l’événement « Si on appuie sur le bouton rond » vaut pour l’état du robot définit par l'arc en haut à gauche.

  • La première instruction correspond à « Si on appuie sur le bouton rond et que l'état du robot est arc-blanc-en-haut-à-gauche, alors le robot devient rouge et l’état du robot change pour arc-orange-en-haut-à-gauche ».

  • L’instruction d’après est « Si on appuie sur le bouton rond et que l’état du robot est arc-orange-en-haut-à-gauche alors le robot passe en vert et on le met en état arc-blanc-en-haut-à-gauche ».

Testez le programme ! Que se passe-t-il si on appuie deux fois de suite sur le bouton central ?

Un appui sur le bouton central met d'abord le robot en rouge, un deuxième appui le met en vert... et ainsi de suite.

L’utilisation des états permet de changer d’actions à faire pour un même événement. Alors que dans VPL simple, on ne peut pas avoir deux évènements identiques, ici c’est possible parce que les deux évènements dépendent de l’état du robot et ne sont donc pas vraiment identiques. 😏

Pour finir avec le mode avancé, voici un dernier exemple à tester :

Testez ce programme !
Testez ce programme !

Ici, grâce aux états, une même instruction de tap sur le robot donne des couleurs différentes selon si c’est le premier tap (bleu), le deuxième (vert) ou le troisième (jaune).

  • Instruction 1 : un tap dans l’état cercle-blanc-en-haut-à-gauche met le robot en bleu et place le robot dans l’état trois-cercles-orange.

  • Instruction 2 : un tap dans l’état trois-cercles-orange met le robot en vert et place le robot dans l’état deux-cercles-orange-à-gauche.

  • Instruction 3 : un tap dans l’état trois-cercles-orange met le robot en jaune.

Thymio Blockly

L’environnement Aseba propose aussi un blockly intégré.

Thymio Blockly reprend sous une forme mixte visuelle/textuelle la programmation évènementielle du VPL.

Par exemple, le programme de gauche en VPL correspond à celui de droite en Blockly :

Comparez ces programmes équivalents
Comparez ces programmes équivalents

L'interface de Blockly propose à gauche une liste de catégories (événements, actionneurs, LED…) regroupant les blocs utilisables dans les programmes, et à droite une zone de programmation où on dépose les blocs. Cela ne devrait pas trop vous dépayser si vous connaissez déjà le principe de Scratch. 😉

Pour créer un programme, cliquez sur une catégorie et choisissez un bloc (commencez bien sûr par un événement, qui correspondent aux blocs rouges) et glissez-le dans la zone de programmation. Ajoutez ensuite d'autres blocs pour créer des groupes évènements/actions.

Passons en revue les catégories disponibles :

Évènements

On retrouve dans cette catégorie tous les évènements propres à Aseba, déjà présents dans VPL.

Les évènements disponibles dans Blockly
Les évènements disponibles dans Blockly

Actionneurs et LEDs

On retrouve ici les actions propres à Aseba, déjà présentes dans VPL, sauf celles concernant les LEDs du robot, regroupées dans la catégorie suivante "LEDs".

Les actions disponibles dans Blockly
Les actions disponibles dans Blockly
Les actions liées aux LEDs disponibles dans Blockly
Les actions liées aux LEDs disponibles dans Blockly

Capteurs

Ici, vous avez accès aux capteurs eux-mêmes, vous pouvez en récupérer les valeurs pour créer ensuite vos propres évènements avec. 😎

Les informations des capteurs récupérables dans Blockly
Les informations des capteurs récupérables dans Blockly

Autres

Les autres catégories correspondent à des catégories dont vous avez l'habitude dans Scratch :

  • Logique : on y trouve les tests (instructions conditionnelles), de quoi faire de nouveaux blocs évènement ("Quand") et les opérateurs logiques (ET, OU, NON)

  • Boucle : tout pour faire des boucles

  • Math : opérations sur les nombres

  • Variables : créer des variables, leur affecter des valeurs, créer des tableaux...

  • Sous-routines : créer des sous-programmes et leur donner des noms

Pour vous entraîner, n'hésitez pas à reprendre un programme que vous avez déjà fait en Thymio VPL et à le transcrire en Thymio blockly !

Thymio Scratch

Thymio Sratch est un logiciel externe à Aseba ! Il s'agit d'une extension de Scratch permettant de programmer votre Thymio depuis l'interface Scratch, que vous connaissez bien depuis le premier module de Class'Code.

Quand on fait de l’informatique, il peut arriver que des choses ne marchent pas comme on l’espère, pour des raisons variées, des bugs indépendants de notre volonté, etc. Et quand on relie des objets extérieurs comme des robots, ce phénomène est encore plus présent ! C’est normal, ça peut être agaçant et trèèèès frustrant, mais c’est comme ça, il faut le savoir quand on anime des activités en classe ou hors de la classe. Oui, ça peut bloquer, crasher, faire n’importe quoi, il y a beaucoup de façons de le dire. 😄

Mais pas de panique : ça fait partie du message à faire passer sur les Sciences du numérique. Il n’y a que dans les mondes théoriques où tout est parfait. Dans la vraie vie il y a des imperfections, c’est ainsi et c'est important de le dédramatiser !

Le fait que le robot évolue dans le monde physique ajoute naturellement des bugs possibles. Par exemple, votre Thymio ne suit pas la ligne noire. Est-elle vraiment noire ? Ne réfléchit-elle pas un peu trop la lumière ? Le robot est-il bien chargé ? Les capteurs fonctionnent-ils ? Bon, c’est vrai, ça peut aussi venir de la construction de votre programme, lorsqu'on s'est trompé (tout n'est pas toujours la faute du matériel). 😏

Installez le programme passerelle Scratch/Thymio

  • Étape 1 : Assurez-vous d'avoir déjà installé la dernière version de Scratch sur votre ordinateur, en version offline.

  • Étape 3 : Installez le pack téléchargé !

Connectez Scratch à Thymio

Connectez tout d'abord le robot à l’ordinateur soit par le câble usb soit à l’aide de la clé usb (dongle) fournie avec le robot si celui-ci est sans fil.

Lancez Scratch puis lancez la passerelle Scratch/Thymio nommée "Scratch2-ThymioII.app" pour Mac OSX ou "Scratch2-ThymioII.exe" pour Windows.

Ouvrez ensuite un fichier exemple tel que "Thymio-II sensors.sb2".

Dans la catégorie de blocs "More blocks", de nouveaux blocs, noirs, sont apparus ainsi qu’un voyant de couleur ! Ce voyant rouge (robot non connecté à Scratch) ou vert (robot connecté à Scratch) vous renseigne sur la connexion entre Scratch et le robot :

Le menu de Scratch pour Thymio
Le menu de Scratch pour Thymio

Tout est prêt ! Vous pouvez maintenant commencer à programmer votre robot avec Scratch...

Programmez avec les nouveaux blocs Thymio

Voyons ce que cela donne ci-dessous avec un programme à gauche en VPL correspondant à celui de droite en Scratch pour Thymio :

Comparez ces programmes équivalents
Comparez ces programmes équivalents

Vous trouverez dans cette fiche récapitulative Thymio Scratch l'intégralité des blocs Thymio et leur description. Vous verrez qu’il y a des blocs très proches du VPL et d’autres plus originaux qui facilitent la programmation du Thymio.

Ce bloc permet par exemple de faire tourner Thymio sur place d’un certain angle en degrés (positif vers la gauche, négatif vers la droite)
Ce bloc permet par exemple de faire tourner Thymio sur place d’un certain angle en degrés (positif vers la gauche, négatif vers la droite)

En résumé

  • Tous les langages ne permettent pas de programmer les mêmes comportements de la même façon

  • Il n'y pas de langage foncièrement meilleur que les autres. Tout dépend de ce que vous souhaitez programmer ! 

  • Mais une fois qu'on a compris la logique de programmation, il est assez facile de passer d'un langage à l'autre. Il n'y a pas besoin de tout réapprendre à chaque fois, heureusement. 😅

Pour vous aider dans votre exploration des différents langages du Thymio, si vous rencontrez des diffcultés par exemple, n'hésitez pas à consulter les ressources suivantes :

Exemple de certificat de réussite
Exemple de certificat de réussite