Détecter les mouvements sur le Hat Sense

Le Sense HAT dispose également de senseurs qui peuvent détecter le mouvement. Il est équipé d'une centrale de mesure intertielle (dite IMU pou Inertial Measurement Unit) sous forme d'une puce qui inclus:
  • Un gyroscope (pour détecter dans quelle direction la carte est orientée)
  • Un accéléromètre (pour détecter le mouvement)
  • Un magnétomètre (pour détecter les champs magnétiques)
Avant de commencer vos expériences avec les senseurs de mouvement, il est important de comprendre 3 termes clés couverts par se guide et dans cette vidéo (en anglais).
Les 3 axes utilisés pour décrire le mouvement sont:
  • Elévation, dit "Pitch" en anglais (comme quand l'avion décolle)
  • Roulis/Roulement, dit "Roll" en anglais (comme un avion qui faire la rouleau de la victoire, ou une voiture qui fait un tonneau)
  • Lacet/Embardée, dit "Yaw" en anglais (imaginez un avion qui dévie de sa route comme le ferait une voiture, où une voiture qui prend un virage "en lacet")
Etant donné que l'interface de programmation du Sense Hat utilise ces mêmes mots clés en anglais pour vous permettre d'accéder aux valeurs, nous allons préserver les termes "Pitch"n "Roll", "Yaw".

Source: Documentation du Hat Sense par MCHobby.be

Source: Documentation du Hat Sense par MCHobby.be

Vous pouvez obtenir l'orientation du Sense Hat en appelant la méthode sense.get_orientation():

pitch, roll, yaw = sense.get_orientation().values()

Cela donne les trois valeurs d'orientation (mesuré en degrés) et stocke ces valeurs dans trois variables respectivement nommées pitch, roll et yaw. La partie .values() de l'appel obtient les 3 valeurs ce qui permet de les stocker séparément.

Vous pouvez découvrir et explorer ces valeurs à l'aide du programme suivant:

from sense_hat import SenseHat

sense = SenseHat()

while True:
    pitch, roll, yaw = sense.get_orientation().values()
    print("Elevation/pitch=%s, Roulis/roll=%s, Embardee/yaw=%s" % (pitch,yaw,roll))

Une autre façon de détecter l'orientation est d'utiliser la méthode sense.get_accelerometer_raw() qui vous indique la quantité de force-g agissant sur les 3 axes. Si n'importe quel axe indique une valeur d'environ 1g alors cet axe pointe vers le bas.

Dans cette exemple, la 'accélération gravitationnelle (celle qui nous tient au sol) est quantifié pour chaque axe (x, y et z) puis arrondi au nombre entier le plus proche:

from sense_hat import SenseHat

sense = SenseHat()

while True: # boucle inifinie
    x, y, z = sense.get_accelerometer_raw().values()

    x=round(x, 0)
    y=round(y, 0)
    z=round(z, 0)

    print("x=%s, y=%s, z=%s" % (x, y, z))

Cool n'est-ce pas?
Venez découvrir la suite de ce tutoriel sur notre Wiki.

Tutoriels Hat Sense
 Venez découvrir notre tutoriel français pou Hat Sense... il grandit très vite.

Où Acheter un Sense Hat