Tutoriel Micro-Python: utilisation de l'accéléromètre

Un nouveau petit tutoriel pour Micro Python... le microcontroleur qui se programme nativement en Python

Micro Python Pyboard
disponible chez MCHobby


Cette fois, nous nous penchons sur l'accéléromètre de la carte.

Qu'est ce qu'un accéléromètre

Un accéléromètre mesure "l'accélération". Rien de pertinent de prime abord mais étant donné que notre planète Terre dispose également d'une accélération gravitationnelle (de 1G), il est possible de détecter l'orientation du breakout/d'une carte par rapport à la terre avec ce senseur. Un accéléromètre 3 axes peut, par exemple, être utilisé pour détecter l'orientation d'un écran de téléphone (voir cet article sur Wikipedia) ou l'orientation de votre robot dans l'espace (est-il debout sur ses pieds ou couché sur son dos ou encore tête vers le bas?)
Cela semblera plus évident après la lecture de la méthode de calibration de l'accéléromètre (cfr notre tutoriel sur le breakout accéléromètre ADXL335 d'AdaFruit pour Arduino).

Utiliser l'accéléromètre
La carte PyBoard dispose d'un accéléromètre qui peut être utilisé pour détecter l'angle de la carte (par rapport au centre de la terre) ou les mouvements de la carte. L'accéléromètre contient différents senseurs pour chaque axes/directions x, y, z. Il faut créer un objet pyb.Accel() pour obtenir les valeurs produites par l'accéléromètre, en appelant la méthode x() vous obtiendrez alors la valeur sur l'axe X.

>>> accel = pyb.Accel()
>>> accel.x()
7

Cela retourne un entier signé avec une valeur entre -30 et 30. Notez que les mesures sont très sensibles aux "bruits", cela signifie que même si la carte reste parfaitement stable, il y a des variations entre les mesures successives. A cause de cela, vous ne devriez pas utiliser la valeur exacte retournée par le senseur mais plutôt vous assurer qu'elle se trouve dans une certaine gamme de valeur.
Nous allons commencer par utiliser l'accéléromètre pour allumer une lampe si la carte est à plat.

accel = pyb.Accel()
light = pyb.LED(3)
SENSITIVITY = 3 # sensibilité

while True:
    x = accel.x()
    if abs(x) > SENSITIVITY:
        light.on() # allumer
    else:
        light.off() # éteindre

    pyb.delay(100)


Nous créons des objets LED et Accel, puis nous obtenons la valeur de l'axe X. Si la magnitude de x est plus grand qu'une certaine valeur SENSITIVITY alors la LED s'allume sinon elle s’éteint.
La boucle introduit un petit délai avec pyb.delay() de 1/10 seconde pour éviter à LED de flasher ennuyeusement lorsque la valeur de x est proche de la valeur de SENSITIVITY. Essayez ce code sur votre PyBoard puis basculez votre carte de gauche à droite pour voir la LED s'allumer (et s'éteindre)

Où acheter

Tutoriels Micro Python

MCHobby investi du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.