Réagir aux chocs

Dans cette partie, on va programmer Thymio pour qu'il réagisse aux chocs et émette un son.

L'accéléromètre

Comment peut-on détecter un choc ? Quel capteur permet de faire cela ?

La détection de chocs est très courante et utile. Voyons quelques exemples :

  • dans une voiture, on peut détecter un choc en cas d'accident pour déclencher l'airbag.
  • dans de nombreux téléphones portables, on peut détecter si l'utilisateur tape avec le doigt, une ou plusieurs fois de suite.
  • dans un ordinateur portable, on détecte les chocs pour protéger le disque dur.

Ce genre d'événement est détecté grâce à l'accéléromètre. L'accéléromètre permet de mesurer des accélérations, dont par exemple la gravité. On peut aussi mesurer la chute libre et les chocs.

Observer l'activité de l'accéléromètre

Aseba Studio permet de faire des graphiques de variables. Pour ça, il faut créer notre propre événement. Si on veut observer les trois axes de l'accéléromètre (on mesure l'accélération en trois dimensions) il faut créer un événement avec 3 arguments. Pour ça, on clique sur le + pour ajouter un événement, on lui donne un nom (p.ex mes_accelerations) et on spécifie le nombre d'arguments (3).

creer_event

Maintenant, dans le code, on peut envoyer la valeur de l'accélération (variable acc dans la fenêtre Variables, qui comporte 3 éléments) lors de l'événement acc, à notre nouvel événement mes_accelerations qui peut transmettre 3 arguments:

onevent acc
    emit mes_accelerations acc

Ensuite, dans la fenêtre Evénements, on peut sélectionner mes_accelerations et cliquer sur le bouton de graphique.

plot.png

Un nouvel onglet s'ouvre avec un graphique des 3 accélérations. On peut alors observer ce qui se passe si on tourne le robot ou qu'on tape dessus.

plotacc.png

Ici on voit les 3 axes en 3 couleurs différentes. Quand le robot est posé sur ses roues, on détecte la gravité sur l'axe Z (en bleu). Quand on le met sur le côté, on détecte l'accélération sur un autre axe (le rouge). En cas de choc, on voit des pics.

Utiliser l'accéléromètre

On peut utiliser l'accéléromètre de différentes façons. Comme on l'a vu, la variable acc donc la valeur des accélérations sur les trois axes, et l'événement acc a lieu à chaque fois que les valeurs d'accélérations sont mesurées.

Il y a en plus un événement tap qui a lieu lorsque le robot détecte une tape ou un choc. On peut ainsi utiliser cet événement pour faire faire du bruit au robot lorsqu'on le tape.

onevent tap
    call sound.system(4) # cette fonction permet de jouer un son système

page précédente | page suivante

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