LEDs
Introduction
Notre kit d'expérience contient trois types d'LEDs différentes :
- 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ème boitier.
- LED RGB du type WS2812
Il s'agit d'un LED rgb, digital adressable, qui est utilisé dans des chaines à LED
LED mono-couleur
Sur la plupart des cartes micro-contrôleurs on trouve un LED programmable par l'utilisateur (user LED)
Souvent cette LED est connectée 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érieure, on doit limiter le courant qui traverse la LED avec une résistance (valeurs typiques : 330 ohms, qui, avec une tension GPIO de 3.3 V, limite le courant à 10 mA).
Changer l'intensité de la lumière de la LED avec la modulation de largeur d'impulsion
La LED est contrôlée par un seul pin GPIO qui peut prendre que de valeurs zéro, avec la LED éteinte, ou 1, avec la LED en intensité de lumière maximale. Pour changer l'intensité de lumière, il faut changer le courant qui traverse la LED. Ceci peut être accompli si, au lieu d'un signale constant, le pin GPIO émet une fréquence (la fréquence 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équence est assez élevée et avec la persistance de la LED on observe seulement le courant moyen comme variation de l'intensité de lumière. L'intensité de lumière peut alors être changé en changeant le "duty cycle" du signal PWM.
L'illustration ci-dessus montre le signale PWM (mesuré avec un autre pin GPIO programmé en entrée et avec un taux d’échantillonnage de 4 us entre les enchantions) avec un cycle de service (duty cycle) de 10%, 25%, 50%, 75% et 90%.
La barre à LED
La barre à LEDs contient 10 LEDs aligné dans un seul boitier. Chaque LED est contrôlée par un pin GPIO de la même manière que celui décrit dans les sections dessus. Bien sûr, les LEDs peuvent aussi être contrôlées en PWM. Néanmoins, if faut noter que la barre à LED contient 10 LEDs mais le nombre de signaux PWM dans MicroPython est limité à 8.
Les afficheurs sept segments
Les afficheurs sept segments fonctionnent un peu comme la barre à LED avec un arrangement des LEDs en forme de "8". Ils consistent en 8 LEDs: les sept segments a..g et le point décimal dp. En allument une certaine combinaison de LEDs, on peut afficher tous les digits hexadécimaux. Le kit fourni un module à un seul digit et un autre à quatre digits. Contrairement à la barre à LEDs soit toutes les anodes des LEDs sept segments sont connecté ensemble (type anodes communes) soit toutes les cathodes (type cathodes communes).
Les connexions de deux types du module sept segments n'est pas très différents. L'anode commune est connecté à Vcc, tandis que la cathode commune se connecte sur la masse. Les autres pins sont connectés avec des pins GPIO via la résistance de limitation de courant.
Les afficheurs sept segments à quatre digits
Si on étudie bien le schéma de connexion ci-dessous, on observe que tous les même segments des digits sont connecté ensemble. Ceci a comme conséquence qu’à un moment donné un seul digit peut être affiché. 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és en même temps.
Pour faire marcher l'afficheur sept segments à quatre digits, les valeurs des digits individuels doivent alors être rafraîchi en permanence. Ceci peut être accompli dans un système multitâche (voir asyncio dans MicroPython) ou une tache s'occupe du rafraichissement de l'afficheur tandis une autre tache permet d'exécuter d'autres fonctions.
La LED rgb
La LED rgb existe en deux variants : la LED à anode commune et la LED a cathode commune dont les connexions sont montrés 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és à des pins GPIO. Le pin commun est connecté à Vcc (3.3 V) dans le cas de l'anode commune et à la masse dans l'autre cas.
Pour allumer le composant de couleur le pin GPIO doit être tiré à la masse pour l'anode commune et mis à Vcc pour la cathode commune.
La LED WS2812
Cette LED est accédé avec un protocole de communication qui permet d'adresser chaque LED dans une chaine de LEDs individuellement. Dans notre cas nous utilisons une chaîne avec sept LEDs (ou huit LEDs pour le module dans le kit Freenove) :
Le WS2812 est décrit par la fiche technique :
https://cdn-shop.adafruit.com/datasheets/WS2812.pdf
Chaque LED de la chaine est contrôlé avec 8 bit de résolutions pour chaque composant de couleurs ce qui demande un total de : 3 * 8 * nombre d'LEDs, de bits. Ces données sont envoyées en série via une seule ligne de données. Chaque LED a un pin de donnée en entrée et un autre en sortie.
La première LED de la chaine considère les premières 24 bits comme information de couleur pour elle et passe les autres bits à la LED suivant. Les données sont envoyées avec une vitesse de 800 kbit/s et nécessite un timing bien précis.
MicroPython fournit un pilote "NeoPixel" pour ce type de chaine à 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é de ses composants r,g,b. Le WS2812 reçoit ces valeurs d'intensités 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égrées la composante rouge reste au maximum, la composante bleue est toujours zéro et seulement la composante verte croit d’une intensité 0 au maximum. Dans les 60 dégrées suivant, vert et bleu restent constants et la composante rouge décroît du maximum à zéro, etc.
--
Uli Raich - 2021-06-19
Comments