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)
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).
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.
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.
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).
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.
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 :
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) :

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.
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 :
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}%