LEDs

Page Actions

LEDs

Introduction

Notre kit d'exp\xE9rience contient trois types d'LEDs diff\xE9rentes :
  • LED mono-couleur
  • LED multi-couleurs, LED rgb (red,green,blue)
    Ceci est un LED qui contient trois LEDs avec les couleurs de base rouge, vert, bleu, dans un m\xE8me boitier.
  • LED RGB du type WS2812
    Il s'agit d'un LED rgb, digital adressable, qui est utilis\xE9 dans des chaines \xE0 LED

LED mono-couleur

Sur la plupart des cartes micro-contr\xF4leurs on trouve un LED programmable par l'utilisateur (user LED)

wroverLed.png

Souvent cette LED est connect\xE9e sur le pin GPIO 2, mais d'autres connexions existent (la carte CPU WeMos D1 mini WROVER-B, sur la photo ci-dessus, utilise GPIO 19)

Si on utilise une LED ext\xE9rieure, on doit limiter le courant qui traverse la LED avec une r\xE9sistance (valeurs typiques : 330 ohms, qui, avec une tension GPIO de 3.3 V, limite le courant \xE0 10 mA).

leds.png ledschematics.png

Changer l'intensit\xE9 de la lumi\xE8re de la LED avec la modulation de largeur d'impulsion

La LED est contr\xF4l\xE9e par un seul pin GPIO qui peut prendre que de valeurs z\xE9ro, avec la LED \xE9teinte, ou 1, avec la LED en intensit\xE9 de lumi\xE8re maximale. Pour changer l'intensit\xE9 de lumi\xE8re, il faut changer le courant qui traverse la LED. Ceci peut \xEAtre accompli si, au lieu d'un signale constant, le pin GPIO \xE9met une fr\xE9quence (la fr\xE9quence de modulation) et on change le rapport cyclique du signal (duty cycle). Ce principe s'appelle Pulse Width Modulation ou PWM en anglais.

Si la fr\xE9quence est assez \xE9lev\xE9e et avec la persistance de la LED on observe seulement le courant moyen comme variation de l'intensit\xE9 de lumi\xE8re. L'intensit\xE9 de lumi\xE8re peut alors \xEAtre chang\xE9 en changeant le "duty cycle" du signal PWM.

10kHz10.png 10kHz25.png
10kHz50.png 10kHz75.png
10kHz90.png  
L'illustration ci-dessus montre le signale PWM (mesur\xE9 avec un autre pin GPIO programm\xE9 en entr\xE9e et avec un taux d\x92\xE9chantillonnage de 4 us entre les enchantions) avec un cycle de service (duty cycle) de 10%, 25%, 50%, 75% et 90%.

La barre \xE0 LED

La barre \xE0 LEDs contient 10 LEDs align\xE9 dans un seul boitier. Chaque LED est contr\xF4l\xE9e par un pin GPIO de la m\xEAme mani\xE8re que celui d\xE9crit dans les sections dessus. Bien s\xFBr, les LEDs peuvent aussi \xEAtre contr\xF4l\xE9es en PWM. N\xE9anmoins, if faut noter que la barre \xE0 LED contient 10 LEDs mais le nombre de signaux PWM dans MicroPython est limit\xE9 \xE0 8.

ledbar.png

Les afficheurs sept segments

Les afficheurs sept segments fonctionnent un peu comme la barre \xE0 LED avec un arrangement des LEDs en forme de "8". Ils consistent en 8 LEDs: les sept segments a..g et le point d\xE9cimal dp. En allument une certaine combinaison de LEDs, on peut afficher tous les digits hexad\xE9cimaux. Le kit fourni un module \xE0 un seul digit et un autre \xE0 quatre digits. Contrairement \xE0 la barre \xE0 LEDs soit toutes les anodes des LEDs sept segments sont connect\xE9 ensemble (type anodes communes) soit toutes les cathodes (type cathodes communes).

sevenSeg1Digit.png sevenSeg1DigitPinout.png
Les connexions de deux types du module sept segments n'est pas tr\xE8s diff\xE9rents. L'anode commune est connect\xE9 \xE0 Vcc, tandis que la cathode commune se connecte sur la masse. Les autres pins sont connect\xE9s avec des pins GPIO via la r\xE9sistance de limitation de courant.

Les afficheurs sept segments \xE0 quatre digits

Si on \xE9tudie bien le sch\xE9ma de connexion ci-dessous, on observe que tous les m\xEAme segments des digits sont connect\xE9 ensemble. Ceci a comme cons\xE9quence qu\x92\xE0 un moment donn\xE9 un seul digit peut \xEAtre affich\xE9. Si on affiche ce digit pour une courte instance avant de changer au digit suivant et on poursuit ce principe cycliquement pour tous les digits, et avec la persistance des LEDs, l'observateur voit tous les quatre digits affich\xE9s en m\xEAme temps.

four_digit_seven_seg.png

Pour faire marcher l'afficheur sept segments \xE0 quatre digits, les valeurs des digits individuels doivent alors \xEAtre rafra\xEEchi en permanence. Ceci peut \xEAtre accompli dans un syst\xE8me multit\xE2che (voir asyncio dans MicroPython) ou une tache s'occupe du rafraichissement de l'afficheur tandis une autre tache permet d'ex\xE9cuter d'autres fonctions.

La LED rgb

La LED rgb existe en deux variants : la LED \xE0 anode commune et la LED a cathode commune dont les connexions sont montr\xE9s ci-dessous :
rgbLed.png ledrgb.png
Les pins des composants de couleurs rgb ("-" dans le cas de l'anode commune et "+" dans le cas de cathode commune) sont connect\xE9s \xE0 des pins GPIO. Le pin commun est connect\xE9 \xE0 Vcc (3.3 V) dans le cas de l'anode commune et \xE0 la masse dans l'autre cas.

Pour allumer le composant de couleur le pin GPIO doit \xEAtre tir\xE9 \xE0 la masse pour l'anode commune et mis \xE0 Vcc pour la cathode commune.

La LED WS2812

Cette LED est acc\xE9d\xE9 avec un protocole de communication qui permet d'adresser chaque LED dans une chaine de LEDs individuellement. Dans notre cas nous utilisons une cha\xEEne avec sept LEDs (ou huit LEDs pour le module dans le kit Freenove) :

ws2812.pngledRingBack.png

Le WS2812 est d\xE9crit par la fiche technique : https://cdn-shop.adafruit.com/datasheets/WS2812.pdf

Chaque LED de la chaine est contr\xF4l\xE9 avec 8 bit de r\xE9solutions pour chaque composant de couleurs ce qui demande un total de : 3 * 8 * nombre d'LEDs, de bits. Ces donn\xE9es sont envoy\xE9es en s\xE9rie via une seule ligne de donn\xE9es. Chaque LED a un pin de donn\xE9e en entr\xE9e et un autre en sortie.

ws2812data.png

La premi\xE8re LED de la chaine consid\xE8re les premi\xE8res 24 bits comme information de couleur pour elle et passe les autres bits \xE0 la LED suivant. Les donn\xE9es sont envoy\xE9es avec une vitesse de 800 kbit/s et n\xE9cessite un timing bien pr\xE9cis.

MicroPython fournit un pilote "NeoPixel" pour ce type de chaine \xE0 LED ce qui facilite largement l'usage de ces LEDs (voir la section NeoPixel et APA106 driver dans https://docs.micropython.org/en/latest/esp32/quickref.html.

La roue des couleurs

Les LEDs rgb permettent de montrer tout un spectre de couleurs en changeant l'intensit\xE9 de ses composants r,g,b. Le WS2812 re\xE7oit ces valeurs d'intensit\xE9s en digital via son protocol de communication tandis qu'on utilise des signaux PWM dans le cas de l'LED rgb simple.

On peut afficher toutes les couleurs de l'arc-en-ciel en suivant la roue des couleurs :

color-wheel-800px.jpg

Si on observe bien la roue des couleurs, on voit que dans les premiers 60 d\xE9gr\xE9es la composante rouge reste au maximum, la composante bleue est toujours z\xE9ro et seulement la composante verte croit d\x92une intensit\xE9 0 au maximum. Dans les 60 d\xE9gr\xE9es suivant, vert et bleu restent constants et la composante rouge d\xE9cro\xEEt du maximum \xE0 z\xE9ro, etc.

-- %USERSIG{UliRaich - 2021-06-19}%

Comments

 
I Attachment Action Size Date Who Comment
10kHz10.pngpng 10kHz10.png manage 10 K 19 Jun 2021 - 13:02 UnknownUser  
10kHz25.pngpng 10kHz25.png manage 10 K 19 Jun 2021 - 13:02 UnknownUser  
10kHz50.pngpng 10kHz50.png manage 10 K 19 Jun 2021 - 13:02 UnknownUser  
10kHz75.pngpng 10kHz75.png manage 10 K 19 Jun 2021 - 13:02 UnknownUser  
10kHz90.pngpng 10kHz90.png manage 10 K 19 Jun 2021 - 13:02 UnknownUser  
5kHz10.pngpng 5kHz10.png manage 7 K 19 Jun 2021 - 12:57 UnknownUser  
5kHz25.pngpng 5kHz25.png manage 7 K 19 Jun 2021 - 12:57 UnknownUser  
5kHz50.pngpng 5kHz50.png manage 7 K 19 Jun 2021 - 12:57 UnknownUser  
5kHz75.pngpng 5kHz75.png manage 7 K 19 Jun 2021 - 12:57 UnknownUser  
7segment_display.pngpng 7segment_display.png manage 87 K 21 Jun 2021 - 12:26 UnknownUser  
color-wheel-800px.jpgjpg color-wheel-800px.jpg manage 110 K 21 Jun 2021 - 12:54 UnknownUser  
four_digit_seven_seg.pngpng four_digit_seven_seg.png manage 222 K 24 Jul 2021 - 19:37 UnknownUser  
ledRingBack.pngpng ledRingBack.png manage 348 K 28 Jun 2021 - 09:38 UnknownUser  
ledbar.pngpng ledbar.png manage 113 K 19 Jun 2021 - 15:48 UnknownUser  
ledrgb.pngpng ledrgb.png manage 33 K 19 Jun 2021 - 11:12 UnknownUser  
leds.pngpng leds.png manage 132 K 19 Jun 2021 - 10:58 UnknownUser  
ledschematics.pngpng ledschematics.png manage 7 K 19 Jun 2021 - 10:33 UnknownUser  
rgbLed.pngpng rgbLed.png manage 58 K 19 Jun 2021 - 11:12 UnknownUser  
sevenSeg1Digit.pngpng sevenSeg1Digit.png manage 17 K 21 Jun 2021 - 12:15 UnknownUser  
sevenSeg1DigitPinout.pngpng sevenSeg1DigitPinout.png manage 62 K 21 Jun 2021 - 12:17 UnknownUser  
wrover.pngpng wrover.png manage 250 K 19 Jun 2021 - 10:32 UnknownUser  
wroverLed.pngpng wroverLed.png manage 260 K 19 Jun 2021 - 10:47 UnknownUser  
ws2812.pngpng ws2812.png manage 292 K 19 Jun 2021 - 12:29 UnknownUser  
ws2812data.pngpng ws2812data.png manage 9 K 19 Jun 2021 - 15:23 UnknownUser  
Topic revision: r10 - 24 Jul 2021, UliRaich