Joy-PI – Exemple de programmation des GPIO

Joy-PI utilise le langage de programmation Python. Si vous voulez apprendre ce langage, voici quelques liens :

Lorsque vous installez la version proposée par Joy-PI pour la mallette d’expérimentation, l’IDE Thonny est installé, il permet de programmer facilement en Python sur un Raspberry.

La librairie GPIO pour le Raspberry

En Python, il existe une bibliothèque qui est connue sous le nom de RPi.GPIO, qui est nécessaire pour contrôler les broches. Avant la première utilisation, il faudra probablement importer la librairie ainsi :

sudo apt-get install rpi.gpio

L’exemple que je vous propose diffère un peu de celui proposé par Joy-PI, afin d’utiliser une LED et non le buzzer, le bruit produit par ce dernier étant assez désagréable dans une salle de classe. Pour la connexion physique de la LED, consultez la leçon #20 : Utiliser la platine d’expérimentation.
Le programme réalise les fonctions suivantes :

  • Importation des librairies
  • Définitions des GPIO utilisés
  • Fonction setup_gpio pour initialiser les GPIO
  • Fonction touch_pressed, appelée en mode interruption lorsqu’un doigt est détecté
  • Fonction main, exécutée au lancement du script
  • Note : le programme est stoppé en pressant CTRL-C au clavier

import RPi.GPIO as GPIO
import time
import signal

touch_pin = 11
led_pin= 37
touch = 0

def setup_gpio():
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(touch_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
    GPIO.setup(led_pin, GPIO.OUT)
    
def touch_pressed(channel):
    global touch
    touch += 1
    print("Touch detected on GPIO #",channel,", touch #",touch)
    for x in range(0, 10):
        GPIO.output(led_pin, GPIO.HIGH)
        time.sleep(0.1)
        GPIO.output(led_pin, GPIO.LOW)
        time.sleep(0.1)
    
def main():
    print("Put finger on touch")
    setup_gpio()
    try:
        GPIO.add_event_detect(touch_pin, GPIO.FALLING, callback=touch_pressed, bouncetime=200)
        while True :
            time.sleep(0.1)
    except KeyboardInterrupt:
        pass
    finally :
        GPIO.cleanup()
        print("Finished...")
            
if __name__ == '__main__':
    main()

Laisser un commentaire