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 et le point décimal. 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).
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 de
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.
--
Uli Raich - 2021-06-19
Comments