Utiliser les capteurs
Maintenant on va utiliser les capteurs de proximité pour éviter que le robot tombe de la table. Il y a 9 capteurs sur chaque Thymio : 5 devant, 2 dessous, 2 derrière. On va utiliser ceux de dessous pour s’arrêter en bord de table.
Le capteur de proximité
Un capteur de proximité peut mesurer les distances aux objets proches. Pour le faire il utilise deux composants : un émetteur de lumière infrarouge, et un récepteur. L’émetteur envoie de la lumière infrarouge (invisible pour nous) et le récepteur mesure combien de lumière revient. Si un objet est proche, beaucoup de lumière va être reflétée dessus et revenir vers le robot. S’il est loin, moins de lumière reviendra. On peut donc mesurer la distance aux objets.
Dans notre cas, on peut utiliser les capteurs dessous pour détecter la table. Laisse le robot sur la table et regarde dans l’interface, la valeur de prox.ground.delta.
Maintenant recommence en soulevant le robot. On voit que la valeur change beaucoup.
Quand le robot est sur la table, les valeurs sont autour de 600 (beaucoup de lumière revient). Lorsqu'on le soulève, les valeurs sont beaucoup plus petites (peu de lumière). On va donc ajouter en bas de tout notre code ceci :
Si la valeur d’un des deux capteurs est basse (pas de table détectée) on arrête le robot. Maintenant tu peux voir que le robot s’arrête en bord de table et s'allume en rouge (ça marche également si on soulève le robot).
Le débuggeur
Il peut arriver que pendant qu'on teste le robot, on ait envie de voir ce qui se passe. On peut le faire pour corriger des erreurs par exemple, ou pour exécuter les instructions pas à pas.
Dans notre cas on va voir ce qui se passe quand on arrive en bord de table.
Si on clique avec le bouton droite sur la ligne
call leds.top(32, 0, 0)
On peut sélectionner Mettre un point d'arrêt.
Le point d'arrêt est signalé par un carré rouge.
ça veut dire que quand on arrive à cet endroit, le robot va attendre qu'on lui dise de continuer.
Faisons un essai. Il faut décocher la case auto si on veut garder la valeurs au moment du point d'arrêt. Une fois le point d'arrêt mis, on fait avancer le robot jusqu'au bord de la table. Il s'arrête; on va pouvoir observer la situation a ce moment, par exemple ici on voit que les capteurs du bas on mesuré les valeurs 151 et 45 (peu de lumière, donc la table n'est plus détectée).
Dès qu'on rappuie sur exécuter le robot continue (il s'allume en rouge) jusqu'au prochain point d'arrêt. On peut enlever les points d'arrêts en cliquant avec le bouton droite sur la ligne et en sélectionnant Enlever le point d'arrêt.