Comment faire clignoter une LED sur le Raspberry Pi ?
Contrairement à Arduino, le Raspberry Pi n'a pas accès aux LED intégrées. Celles-ci indiquent uniquement l'alimentation électrique et l'accès à la carte µSD.
Pour faire clignoter une LED, il faut donc une LED externe avec une résistance appropriée et des câbles de saut. Le plus judicieux est de construire le circuit sur une carte mère avec un T-Cobbler. Ce type de disposition facilite également les essais ultérieurs avec plusieurs LED, boutons et capteurs. La programmation se fait dans le langage de programmation Python.
Le schéma de câblage (LED clignotante sur Raspberry Pi)
Qu'est-ce qu'une LED ?
LED signifie Light Emitting Diode (diode électroluminescente). Ce dernier mot suggère les propriétés électroniques. Une diode est un semi-conducteur qui ne laisse passer le courant que dans un sens et le bloque dans l'autre. Les deux "pattes" s'appellent anode et cathode. Si tu regardes attentivement, tu peux voir que les pattes ont des longueurs différentes. La tension positive est appliquée à la jambe la plus longue, l'anode, et la plus courte, la cathode, est reliée à la terre par une résistance. La résistance est nécessaire en raison d'une autre caractéristique des diodes. Tout d'abord, il faut une tension minimale pour qu'un courant puisse circuler : C'est ce qu'on appelle la tension de flux (en anglais forward voltage). A des tensions plus élevées, la diode devient entièrement conductrice. C'est pourquoi tu as besoin d'une résistance de série pour limiter l'intensité du courant, car les broches des microcontrôleurs et du Raspberry Pi doivent être alimentées au maximum par 15 à 20 mA. Nous utilisons des résistances en série de 100 à 330 Ω (ohms).
Le langage de programmation Python peut être étendu par des modules de programme, comme pour C/C++ avec les bibliothèques. Pour notre LED clignotante, nous avons besoin de deux de ces modules : premièrement, "time" pour définir la durée du clignotement. Et deuxièmement, un module pour accéder aux GPIO (General Purpose Input/Output).
Comment piloter un LED avec un Raspberry Pi ?
L'importation des modules se fait au début du programme Python ; pour cela, tu as plusieurs possibilités. Exemples :
La ligne suivante permet d'importer le module time:
import time
Lors de l'appel de la méthode sleep , le nom du module time doit être précédé d'un point :
time.sleep(1)
Contrairement à delay(), où l'intervalle de temps est indiqué comme argument en millisecondes, time.sleep() indique les valeurs en secondes, éventuellement avec un point décimal.
import RPi.GPIO as GPIO
Cela simplifie les appels aux méthodes dans le programme, par ex.
GPIO.setmode(GPIO.BCM)
Troisième exemple d'un autre module pour l'accès GPIO :
from gpiozero import LED
Seule la classe LED est importée à partir du module gpiozero. Avec cette méthode d'importation, le nom du module n'est plus préfixé lors de l'appel de la méthode/fonction.
Exemples de programmes pour piloter une LED avec un microcontrôleur Raspberry Pi
Premier exemple avec le module RPi.GPIO :
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)# Désignation des broches pour le processeur Broadcomm
GPIO.setup(26,GPIO.OUT)# GPIO26 (= broche physique 37) devient sortie
while True :# boucle infinie, arrêter avec Ctrl-C
GPIO.output(26,1)# GPIO 26 devient HIGH
time.sleep(1)
GPIO.output(26,0)# Le GPIO 26 est commuté en mode BAS
time.sleep(1)
Deuxième exemple avec le module gpiozero. Seules les LED et sleep sont importées.
from gpiozero import LED
from time import sleep
redLED = LED(26)# redLED est instanciée sur le GPIO 26
while True:
redLED.on()# la redLED est allumée
sleep(1)
redLED.off()# la redLED est éteinte
sleep(1)
Challenge : Elargir le circuit et le programme pour un cycle de feux de signalisation, par exemple rouge(3s), rouge/jaune(1s), vert(3s), jaune(1s), recommencer avec le rouge.
Proposition de solution voir n° 02 Le clignotant alterné