Joy-PI utilise le langage de programmation Python. Si vous voulez apprendre ce langage, voici quelques liens :
- La documentation de Python
- OpenClassRooms : Démarrez votre projet avec Python
- OpenClassRooms : Découvrez la programmation orientée objet avec Python
- OpenClassRooms : Apprenez à programmer en Python
- Developpez.com
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()