
Je vous explique aujourd'hui comment faire un programme en Python permettant de lire les entrées et de contrôler les sorties GPIO (general purpose input output) du Raspberry Pi.
Cette première exploration consistera à allumer une LED en appuyant sur un bouton poussoir: nous aurons donc l'occasion d'utiliser une entrée (commandée par le bouton) et une sortie (qui contrôlera la LED).
La plupart des modèles de Raspberry Pi comportent 40 broches GPIO:
La plupart des modèles de Raspberry Pi comportent 40 broches GPIO:
Si toutefois vous utilisez un très vieux modèle, il ne comporte que 26 broches:
Puisque les concepteurs de matériel informatique détestent la simplicité, ces broches peuvent être numérotées de deux façons différentes. On peut les numéroter en mode BOARD (en bleu sur le dessin) ou en mode BCM (en jaune sur le dessin).
Le mode BCM semble défier toute logique: la broche 27 se situe entre la broche 17 et la broche 22, la broche 8 est à côté de la broche 25, et plusieurs numéros (1, 5, 6, 12, 13, 16, etc.) n'existent même pas.
Puisque les concepteurs de matériel informatique détestent la simplicité, ces broches peuvent être numérotées de deux façons différentes. On peut les numéroter en mode BOARD (en bleu sur le dessin) ou en mode BCM (en jaune sur le dessin).
Le mode BCM semble défier toute logique: la broche 27 se situe entre la broche 17 et la broche 22, la broche 8 est à côté de la broche 25, et plusieurs numéros (1, 5, 6, 12, 13, 16, etc.) n'existent même pas.
La numérotation en mode BOARD respecte l'ordre dans lequel les broches sont disposées sur la carte. Mais attention: certaines broches ne peuvent pas être utilisées comme entrée, ni comme sortie programmable. Quoi que vous fassiez, les broches 2 et 4 sont à 5 V, les broches 1 et 17 sont à 3,3 V, et les broches 6, 9, 14, 20, 25, 30, 34 et 39 sont à 0 V (GND).
Allumons une LED

La LED doit être placée dans le bon sens: sa broche la plus longue du côté de la broche 25 du Raspberry Pi, et sa broche la plus courte du côté de la résistance.
Avant d'ajouter le bouton, on peut mettre notre petit circuit à l'épreuve avec le traditionnel programme qui fait clignoter une LED.
Le programme suivant, intitulé BlinkBCM.py, est conçu pour faire clignoter la LED. Les deux premières lignes du programme ont principalement pour but de me permettre d'insérer des caractères accentués à l'intérieur des commentaires. Fiez-vous sur les commentaires pour comprendre le fonctionnement du reste du programme.
-
-
Pour exécuter ce programme, une solution simple consiste à copier son contenu dans Thonny. La LED devrait se mettre à clignoter lorsque vous cliquez sur le bouton "Run". Vous cliquez sur le bouton "Stop" pour interrompre le programme.
Une autre option consiste à enregistrer le fichier sur votre Raspberry Pi au moyen d'un éditeur de texte en l'appelant, par exemple, "blinkBCM.py", et écrire la commande "python BlinkBCM.py" dans le terminal pour démarrer le programme. Pour interrompre l'exécution du programme, vous pouvez faire "contrôle-c".
Le programme ci-dessus utilisait la numérotation BCM, et faisait donc référence à la broche 25 du Raspberry Pi. Si vous préférez, vous pouvez utiliser le mode BOARD et faire référence à la broche 22 (voir le programme ci-dessous).
-
-
Ajoutons un bouton
Avant d'ajouter le bouton, on peut mettre notre petit circuit à l'épreuve avec le traditionnel programme qui fait clignoter une LED.
Le programme suivant, intitulé BlinkBCM.py, est conçu pour faire clignoter la LED. Les deux premières lignes du programme ont principalement pour but de me permettre d'insérer des caractères accentués à l'intérieur des commentaires. Fiez-vous sur les commentaires pour comprendre le fonctionnement du reste du programme.
-
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
# Une LED branchée à la pin 25 clignote | |
# | |
# http://electroniqueamateur.blogspot.com/2014/03/controler-les-pins-gpio-du-raspberry-pi.html | |
import RPi.GPIO as GPIO # bibliothèque pour utiliser les GPIO | |
import time # bibliothèque pour gestion du temps | |
GPIO.setmode(GPIO.BCM) # mode de numérotation des pins | |
GPIO.setup(25,GPIO.OUT) # la pin 25 réglée en sortie (output) | |
while True: # boucle répétée jusqu'à l'interruption du programme | |
GPIO.output(25,GPIO.HIGH) # sortie au niveau logique haut (3.3 V) | |
time.sleep(1) # on ne change rien pendant 1 seconde | |
GPIO.output(25,GPIO.LOW) # sortie au niveau logique bas (0 V) | |
time.sleep(1) # on ne change rien pendant 1 seconde |
-
Pour exécuter ce programme, une solution simple consiste à copier son contenu dans Thonny. La LED devrait se mettre à clignoter lorsque vous cliquez sur le bouton "Run". Vous cliquez sur le bouton "Stop" pour interrompre le programme.
Une autre option consiste à enregistrer le fichier sur votre Raspberry Pi au moyen d'un éditeur de texte en l'appelant, par exemple, "blinkBCM.py", et écrire la commande "python BlinkBCM.py" dans le terminal pour démarrer le programme. Pour interrompre l'exécution du programme, vous pouvez faire "contrôle-c".
Le programme ci-dessus utilisait la numérotation BCM, et faisait donc référence à la broche 25 du Raspberry Pi. Si vous préférez, vous pouvez utiliser le mode BOARD et faire référence à la broche 22 (voir le programme ci-dessous).
-
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
# Une LED branchée à la pin 22 clignote | |
# | |
# http://electroniqueamateur.blogspot.com/2014/03/controler-les-pins-gpio-du-raspberry-pi.html | |
import RPi.GPIO as GPIO # bibliothèque pour utiliser les GPIO | |
import time # bibliothèque pour gestion du temps | |
GPIO.setmode(GPIO.BOARD) # mode de numérotation des pins | |
GPIO.setup(22,GPIO.OUT) # la pin 22 réglée en sortie (output) | |
while True: # boucle répétée jusqu'à l'interruption du programme | |
GPIO.output(22,GPIO.HIGH) # sortie au niveau logique haut (3.3 V) | |
time.sleep(1) # on ne change rien pendant 1 seconde | |
GPIO.output(22,GPIO.LOW) # sortie au niveau logique bas (0 V) | |
time.sleep(1) # on ne change rien pendant 1 seconde |
-
Ajoutons un bouton

Attention: votre bouton doit être relié à une broche de 3,3 volts et non à une broche de 5 V! Les entrées du Raspberri Pi sont conçues pour fonctionner en 3,3 V.
Voici le programme en mode "BCM":
1) On importe la bibliothèque RPi.GPIO, spécialement conçue pour nous permettre d'interagir avec les broches GPIO.
2) On choisit le mode de numérotation BCM
3) On indique que la broche 24 sera une entrée
4) On indique que la broche 25 sera une sortie
5) Jusqu'à l'interruption du programme, on vérifie sans cesse l'état de l'entrée 24, et on règle la sortie 25 à la même valeur.
-
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
# Un bouton est branché a la pin 24, une LED est branchée | |
# a la pin 25. La LED s'allume pendant que le bouton est | |
# enfoncé. | |
# | |
# http://electroniqueamateur.blogspot.com/2014/03/controler-les-pins-gpio-du-raspberry-pi.html | |
import RPi.GPIO as GPIO # bibliothèque pour gérer les GPIO | |
GPIO.setmode(GPIO.BCM) # mode de numérotation des pins | |
GPIO.setup(24,GPIO.IN) # pin 24 réglée en input | |
GPIO.setup(25,GPIO.OUT) # pin 25 réglée en output | |
while True: # en boucle jusqu'à l'interruption du programme | |
GPIO.output(25,GPIO.input(24)) # allume la LED si le bouton est enfoncé |
-
Si vous préférez la numérotation en mode "BOARD":
-
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
# Un bouton est branché à la pin 18, une LED est branchée | |
# à la pin 22. La LED s'allume pendant que le bouton est | |
# enfoncé. | |
# | |
# http://electroniqueamateur.blogspot.com/2014/03/controler-les-pins-gpio-du-raspberry-pi.html | |
import RPi.GPIO as GPIO | |
GPIO.setmode(GPIO.BOARD) # mode de numérotation des pins | |
GPIO.setup(18,GPIO.IN) # pin 18 réglée en input | |
GPIO.setup(22,GPIO.OUT) # pin 22 réglée en output | |
while True: # en boucle jusqu'à l'interruption du programme | |
GPIO.output(22,GPIO.input(18)) # allume la LED si le bouton est enfoncé | |
Quand ce programme est exécuté, la LED s'allume pendant que le bouton est enfoncé, et s'éteint quand le bouton est relâché.
Maintenant, on pourrait ajouter un potentiomètre qui nous permettrait de contrôler de façon graduelle l'intensité lumineuse de la LED. Pour ce faire, il s'agit d'utiliser une des entrées analogique du Raspberry Pi, comme par exemple la broche numéro...quoi?!?!? Le Raspberry Pi ne comporte pas d'entrées analogiques???
Ha bon. Alors nous nous arrêtons ici...pour l'instant.
Voir l'article suivant: Lecture de capteurs analogiques sur le Raspberry Pi
Voir l'article suivant: Lecture de capteurs analogiques sur le Raspberry Pi
Si vous préférez, vous pouvez également contrôler les broches GPIO au moyen de Scratch ou de Processing.
Yves Pelletier (Twitter: @ElectroAmateur)
Yves Pelletier (Twitter: @ElectroAmateur)
Source: Getting Started With the Raspberry Pi, par Matt Richardson et Shawn Wallace.
Bonjour et merci pour votre travail!
RépondreSupprimerJ'ai juste un petite question qui va surement vous sembler bête mais ou faut-il mettre le fichier .py dans le Pi?
Merci
Excellent support pour les debutants dans le monde du Raspberry. Je le recommande vivement ce document. Bravo
RépondreSupprimer