Deuxième tutoriel en python dédié au pack d’accessoires.
Cette fois on va se pencher sur le capteur pir. Le programme réalisé sera tout aussi simple que celui du tuto en C++ disponible ici.
Avant tout : Installation des outils
Ce tuto est réalisé sur l’IDE Mu pour Circuit Python.
Si vous n’avez pas encore installé l’un et l’autre veuillez vous référer au guide d’installation Mu et CircuitPython disponible sur le site.
les branchements
Etape 1 : La base du programme
Commencez par ouvrir Mu et créer un nouveau fichier.
Copiez-y le code suivant :
from gamebuino_meta import begin, waitForUpdate, display, buttons, color
import board
import digitalio
while True:
waitForUpdate()
display.clear()
Cela va importer les libraires Gamebuino nécessaires au fonctionnement de notre programme, ainsi qu’une libraire “digitalio” dont on aura besoin pour travailler avec notre capteur.
La partie commencant par “while True:” constitue la boucle principale de notre programme, sans elle il ne se passerait rien.
Etape 2 : Lire depuis le capteur
On va tout d’abord configurer l’entrée de notre capteur pour pouvoir lire le signal qu’il envoie.
Pour cela deux petites lignes suffisent :
pir_pin = digitalio.DigitalInOut(board.D8)
pir_pin.direction = digitalio.Direction.INPUT
On définit le pin dédié au capteur comme étant le pin digital D8 puis on définit ce pin comme une entrée, entrée depuis laquelle on va pouvoir lire une donnée.
Pour cette lecture on va stocker l’information obtenue dans une variable “old_value” telle que :
old_value = pir_pin.value
Cela nous permet d’avoir une lecture initiale au lancement du programme qui nous servira de référence.
Une fois ce point de référence établi au lancement du programme la suite est très simple et se passe dans notre boucle principale.
on ajoute une variable locale “pir_value” où l’on assigne la valeur lue depuis le capteur comme pour old_value :
while True:
waitForUpdate()
pir_value = pir_pin.value
Il nous suffit ensuite de comparer pir_value et old_value pour déterminer si on le capteur détecte quelque chose ou non.
La comparaison se fait en deux temps :
while True:
waitForUpdate()
pir_value = pir_pin.value
if (pir_value):
if not (old_value):
display.clear()
display.print('Motion detected!')
else:
if (old_value):
display.clear()
display.print('No Motion')
old_value = pir_value
Dans la première partie on vérifie si le capteur détecte quelque chose, si oui on vérifie que ce n’était pas déjà le cas en vérifiant que old_value est nulle, auquel cas on efface l’écran avant d’afficher le message “Motion detected !”
Dans la seconde partie, n’ayant pas détecté d’activité on vérifie si old_value contient quelque chose, si oui c’est que le capteur ne détecte rien à ce moment-là, on efface donc l’écran avant d’afficher le message “No Motion”.
Et enfin on remplace le contenu de old_value par celui de pir_value pour établir une continuité dans notre boucle.
Félicitations, vous avez survécu à ce (très court) tutoriel python !
Votre programme devrait ressembler à ceci :
from gamebuino_meta import begin, waitForUpdate, display, buttons, color
import board
import digitalio
pir_pin = digitalio.DigitalInOut(board.D8)
pir_pin.direction = digitalio.Direction.INPUT
old_value = pir_pin.value
while True:
waitForUpdate()
# display.clear()
pir_value = pir_pin.value
if (pir_value):
if not (old_value):
display.clear()
display.print('Motion detected!')
else:
if (old_value):
display.clear()
display.print('No Motion')
old_value = pir_value
Vous pouvez maintenant le charger sur votre console avec circuit python, mais n’oubliez pas d’en faire une copie sur votre ordinateur pour ne pas le perdre.