Raspberry Pi - LED - Fondu

Ce tutoriel vous explique comment programmer un Raspberry Pi pour faire varier l'intensité d'une LED. Nous passerons en revue trois exemples et comparerons les différences entre eux :

Préparation du matériel

1×Raspberry Pi 4 Model B
1×LED Kit with resistor
1×LED (red)
1×220 ohm resistor
1×Breadboard
1×Jumper Wires
1×(Optional) Screw Terminal Block Shield for Raspberry Pi
1×(Optional) USB-C Power Cable with On/Off Switch for Raspberry Pi 4B
1×(Optional) Plastic Case and Cooling Fan for Raspberry Pi 4B
1×(Optional) HDMI Touch Screen Monitor for Raspberry Pi

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos des LED

Le brochage des LED

La LED a deux broches :

  • La broche Cathode(-) doit être connectée à la masse (0V)
  • La broche Anode(+) est utilisée pour contrôler l'état de la LED
Disposition des broches LED

Comment ça marche

Une fois que la cathode(-) est connectée à la masse :

  • Connecter GND à l'anode(+) éteindra la LED.
  • Connecter VCC à l'anode(+) allumera la LED.
  • Générer un signal PWM vers l'anode(+) ajustera la luminosité de la LED selon la valeur PWM. Cette valeur varie de 0 à 255, les valeurs plus élevées rendant la LED plus lumineuse et les valeurs plus basses la rendant plus sombre.
  • Si la valeur PWM est 0, cela équivaut à GND et la LED sera éteinte.
  • Si la valeur PWM est 255, cela équivaut à VCC et la LED sera entièrement allumée.
Comment fonctionne la LED

※ Note:

Pour la plupart des LED, une résistance doit être placée entre l'anode (+) et VCC. La valeur de la résistance est déterminée par les spécifications de la LED.

Raspberry Pi - atténuer LED

Certaines des broches d'un Raspberry Pi peuvent être programmées pour produire un signal PWM. Pour faire varier l'intensité d'une LED, nous pouvons connecter l'anode (+) de la LED à une broche du Raspberry Pi, la cathode (-) à la masse, et programmer le Raspberry Pi pour générer un signal PWM sur la broche.

Diagramme de câblage

Diagramme de câblage LED Raspberry Pi

This image is created using Fritzing. Click to enlarge image

Pour simplifier et organiser votre câblage, nous vous recommandons d'utiliser un Screw Terminal Block Shield pour Raspberry Pi. Ce shield garantit des connexions plus sûres et plus faciles à gérer, comme illustré ci-dessous :

Raspberry Pi Screw Terminal Block Shield

Comment Programmer

  • Configurez une sortie numérique sur une broche du Raspberry Pi en utilisant la fonction GPIO.setup().
  • Par exemple, la broche GPIO18 :
GPIO.setup(18, GPIO.OUT)
  • Ajustez la luminosité de la LED en créant un signal PWM à l'aide de la fonction pwm.ChangeDutyCycle().
pwm = GPIO.PWM(LED_PIN, 1000) pwm.start(0) pwm.ChangeDutyCycle(brightness)

La luminosité peut varier de 0 à 100.

Code Raspberry Pi pour faire varier l'intensité d'une LED

Étapes rapides

  • Assurez-vous d'avoir Raspbian ou un autre système d'exploitation compatible avec le Raspberry Pi installé sur votre Pi.
  • Assurez-vous que votre Raspberry Pi est connecté au même réseau local que votre PC.
  • Assurez-vous que votre Raspberry Pi est connecté à Internet si vous devez installer certaines bibliothèques.
  • Si c'est la première fois que vous utilisez Raspberry Pi, voyez Installation du logiciel - Raspberry Pi..
  • Connectez votre PC au Raspberry Pi via SSH en utilisant le client SSH intégré sur Linux et macOS ou PuTTY sur Windows. Consultez comment connecter votre PC au Raspberry Pi via SSH.
  • Assurez-vous que vous avez la bibliothèque RPi.GPIO installée. Si ce n'est pas le cas, installez-la en utilisant la commande suivante :
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Créez un fichier de script Python led_fade.py et ajoutez le code suivant :
# Ce code Raspberry Pi a été développé par newbiely.fr # Ce code Raspberry Pi est mis à disposition du public sans aucune restriction. # Pour des instructions complètes et des schémas de câblage, veuillez visiter: # https://newbiely.fr/tutorials/raspberry-pi/raspberry-pi-led-fade import RPi.GPIO as GPIO from time import sleep LED_PIN = 18 fadePercent = 5 brightness = 0 GPIO.setmode(GPIO.BCM) GPIO.setup(LED_PIN,GPIO.OUT) pwm = GPIO.PWM(LED_PIN, 1000) pwm.start(0) try: while True: pwm.ChangeDutyCycle(brightness) # change the brightness for next time through the loop: brightness = brightness + fadePercent; # reverse the direction of the fading at the ends of the fade: if brightness <= 0 or brightness >= 100: fadePercent = -fadePercent; # wait for 30 milliseconds to see the dimming effect sleep(0.03); finally: GPIO.cleanup()
  • Enregistrez le fichier et exécutez le script Python en exécutant la commande suivante dans le terminal :
python3 led_fade.py
  • Vérifiez la luminosité de la LED.

Le script s'exécute en boucle infinie de manière continue jusqu'à ce que vous appuyiez sur Ctrl + C dans le terminal.

Explication du code

Consultez l'explication ligne par ligne contenue dans les commentaires du code source !

※ Note:

L'exemple ci-dessus utilise la fonction time.sleep() pour créer un effet de fondu entrant et sortant. Cependant, la fonction time.sleep() fait en sorte que la LED s'allume de manière irrégulière et bloque l'exécution d'autres codes. Dans les prochaines sections, nous apprendrons comment créer un fondu entrant et sortant de manière fluide sans bloquer d'autres codes en utilisant la fonction millis().

Comment faire apparaître/disparaître une LED graduellement sur une période sans utiliser time.sleep()

Étapes rapides

  • Créez un fichier de script Python led_fade.py et ajoutez le code suivant :
# Ce code Raspberry Pi a été développé par newbiely.fr # Ce code Raspberry Pi est mis à disposition du public sans aucune restriction. # Pour des instructions complètes et des schémas de câblage, veuillez visiter: # https://newbiely.fr/tutorials/raspberry-pi/raspberry-pi-led-fade import RPi.GPIO as GPIO import time LED_PIN = 18 FADE_PERIOD = 3000 FADE_IN_MODE = True FADE_OUT_MODE = False fadeMode = FADE_IN_MODE start_time = 0 brightness = 0 def _map(x, in_min, in_max, out_min, out_max): return int((x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min) GPIO.setmode(GPIO.BCM) GPIO.setup(LED_PIN,GPIO.OUT) pwm = GPIO.PWM(LED_PIN, 1000) pwm.start(0) start_time = time.time()*1000 try: while True: progress = time.time()*1000 - start_time if fadeMode == FADE_IN_MODE: if progress <= FADE_PERIOD: brightness = _map(progress, 0, FADE_PERIOD, 0, 100) print(brightness) pwm.ChangeDutyCycle(brightness) else: start_time = time.time()*1000 fadeMode = FADE_OUT_MODE progress = 0 if fadeMode == FADE_OUT_MODE: if progress <= FADE_PERIOD: brightness = 100 - _map(progress, 0, FADE_PERIOD, 0, 100) print(brightness) pwm.ChangeDutyCycle(brightness) else: start_time = time.time()*1000 fadeMode = FADE_IN_MODE progress = 0 finally: pwm.stop() GPIO.cleanup()
  • Enregistrez le fichier et exécutez le script Python en saisissant la commande suivante dans le terminal :
python3 led_fade.py
  • Vérifiez la luminosité de la LED.

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!