Livraison rapide
Conditions de réduction pour les entreprises
Jusqu'à 10% de réduction pour les élèves, les étudiants et les établissements d'enseignement
Expédition dans toute l'Europe pour €4.90
Fermer le filtre
Filtre par :

LED pulsée sur Raspberry Pi (modulation de largeur d'impulsion)

Une LED doit s'éclaircir et s'assombrir par pulsations. (On parle aussi de "fading", d'après le verbe anglais to fade = s'estomper, diminuer). Nous voulons réaliser cela avec ce que l'on appelle la modulation de largeur d'impulsion. Tu trouveras plus d'informations sur la modulation de largeur d'impulsion sur Raspberry Pi un peu plus loin.

Dans un premier temps, nous allons regarder le schéma électrique.

Le schéma de câblage : LED à impulsions sur Raspberry Pi (PWM)

Le schéma de câblage : LED à impulsions sur Raspberry Pi


Pour faire varier la luminosité d'une LED, il ne suffit pas de faire varier la tension. En raison de sa conception (diode !), une certaine tension minimale est nécessaire ; cette tension dite de flux (en anglais forward voltage) se situe entre environ 1,6 et environ 3 V, en fonction de la couleur de la LED. Au-dessus de cette tension de flux, la LED devient conductrice, le courant est limité par une résistance en série. Donc, contrairement aux lampes à incandescence, la luminosité n'est pas régulée par la hauteur de la tension. D'ailleurs, les broches GPIO ne fournissent de toute façon que 3,3V.

La modulation de largeur d'impulsion (PWM) permet d'y remédier. Pour cela, la tension continue est activée et désactivée à haute fréquence. L'énergie totale transmise est déterminée par le rapport entre la durée d'activation et la durée totale d'un cycle. Ce cycle d'utilisation (duty cycle en anglais) peut être compris entre 0 et 100%.

Sur le Raspberry Pi, tu peux utiliser le logiciel PWM sur toutes les broches GPIO. Mais il existe aussi deux broches PWM matérielles spéciales. C'est parti !

Le premier code de programme : LED pulsée sur Raspberry Pi avec modulation de largeur d'impulsion

# Nous commençons par importer les modules du programme
import RPi.GPIO as GPIO # attention : respecter l'orthographe : petit i
import time
GPIO.setmode(GPIO.BCM) # Nous réglons le mode sur BCM
LED=23 # Le mot "LED" représente maintenant le nombre "23".
GPIO.setup(LED,GPIO.OUT) # " LED" (broche 23) est une sortie.
Dimmer = GPIO.PWM(LED,100) # Nous définissons la LED comme PWM avec une fréquence de 100
Dimmer.start(0) # Le variateur est lancé
# C'est ici que la boucle commence
try:
while True: #boucle while pour que le programme fonctionne en continu
for dc in range(0,101,5) :         # Boucle du cycle de service par incréments de 5.
Dimmer.ChangeDutyCycle(dc) # Modifier le niveau d'utilisation du variateur.
time.sleep(0.1) # Attends 0.1 seconde.
for dc in range(100,-1,-5) :     # Boucle du cycle de service par incréments de -5.
Dimmer.ChangeDutyCycle(dc) # Modifier le cycle de service du variateur.
time.sleep(0.1) # Attendre 0.1 seconde.
except KeyboardInterrupt : # Avec CTRL+C, nous interrompons le programme
print ("Terminé") # Ecris "Terminé" dans la fenêtre du shell
Dimmer.stop() # Arrêt du variateur.
GPIO.cleanup() # Terminer le programme.

Dans cet exemple, nous apprenons à connaître une autre forme de boucle :
tu peux faire une boucle for. Cette ligne de commande se termine également par un deux-points suivi d'une indentation (en anglais) des lignes à répéter.

La variable dc (pour duty cycle) est augmentée dans la plage de 0 à l'exclusion de 101 par incréments de cinq :
for dc in range(0,101,5) :

Dans la deuxième boucle for, on compte à rebours de -5 de 100 à -1 exclusivement :
for dc in range(100,-1,-5) :

Le deuxième code de programme : LED pulsée sur Raspberry Pi avec modulation de largeur d'impulsion avec la commande gpiozero

# Nous commençons par importer les modules du programme
from gpiozero import PWMLED
import time
pwmled = PWMLED(23) # paramètre optionnel frequency=xxx (default 100)
# C'est ici que la boucle commence
try :
while True : # boucle while pour que le programmefonctionne en continu
for dc in range(0,101,5) :   # Incrémenterle niveau de la tâche par incréments de 5.
pwmled.value = (dc/100) # Modifier le niveau d'utilisation (entre 0 et 1) du variateur.
time.sleep(0.1) # Attends 0.1 seconde.
for dc in range(100,-1,-5) : # Décompte de la vitesse de détection par incréments  de -5.
pwmled.value = (dc/100) #Modifier le niveau d'utilisation (entre 0 et 1) du variateur.
time.sleep(0.1) # Attends 0.1 seconde.
except KeyboardInterrupt : # Avec CTRL+C, nous interrompons le programme
print ("Terminé") # Ecris "Terminé" dans la fenêtre du shell
# pwmled.value = 0 # 1ère méthode pour effacerla LED à la fin du programme
pwmled.close() # 2ème méthode d'effacementde la LED à la fin du programme

Dans l'ensemble, le code du programme est plus léger avec gpiozero.

Attention à ne pas oublier : Le degré de marche est compris entre 0 et 100%. Alors que l'argument pour le taux d'utilisation dans RPi.GPIO est la valeur en %, gpiozero attend la valeur comme un nombre à virgule flottante (en anglais floating point number) entre 0.0 et 1. 0, donc au lieu de 50 [%] 0.5.

Sujets: #raspberry
Saisis la chaîne de caractères dans le champ de texte ci-dessous.

Les champs marqués d'un * sont obligatoires.

Articles correspondants
Breadboard (planche à fiches) avec 830 contacts Breadboard (planche à fiches) avec 830 contacts
Contenu 1 Stück
2,22 € *
Numéro d'article : FUN-1010553
Ajouter
40 câbles pour breadboard mâle/mâle (20cm) 40 câbles pour breadboard mâle/mâle (20cm)
Contenu 1 Stück
1,79 € *
Numéro d'article : FUN-1010558
Ajouter
100 pièces - diodes lumineuses de 5mm de diamètre (5 couleurs) 100 pièces - diodes lumineuses de 5mm de...
Contenu 1 Stück
1,97 € *
Numéro d'article : F23107316
Ajouter
100 résistances - 20x 100 ohms, 200 ohms, 330 ohms, 1K ohms, 10K ohms chacune 100 résistances - 20x 100 ohms, 200 ohms, 330...
Contenu 1 Stück
1,72 € *
Numéro d'article : F23107216
Ajouter