LED Adressables et Micro:Bit

Dans un précédent article, je vous expliquais comment contrôler une LED RGB avec un Micro:Bit. Mais pour créer des animations ou des effets de lumière en utilisant plusieurs LED RGB, les LED adressables (Neopixel) sont beaucoup plus adaptées.

En fait, il s’agit simplement d’un réseau de LED RGB. Chacune d’elle possède une adresse spécifique et peut donc recevoir les instructions qui la concerne (allumage, extinction, couleur). Évidement, pour que cela fonctionne, il faut que chaque LED soit reliée à une puce électronique capable d’interpréter les informations qui circulent sur le réseau.

Bon, ça c’est le principe de fonctionnement, mais nous n’allons pas nous lancer dans la construction d’un module de LED Adressables. Il suffit simplement de se procurer un module de LED NeoPixel déjà assemblées. Vous en trouverez sous forme de guirlande, de ruban, d’anneau ou même de LED individuelles.

Branchements

Le branchement ne présente pas de difficultés particulière car les bornes du module sont clairement identifiées. Il suffit donc de relier l’alimentation du module (V+ au 3,3 V et G à la borne GND) et de choisir une sortie du Micro:Bit (P0, par exemple) pour les données (borne In du module).

Pour les longues chaines, il faudra ajoutez une alimentation externe. Dans ce cas branchez ensembles les bornes (-) et GND. Mais ne reliez surtout pas la borne (+) de l’alimentation à la borne 3,3V du Micro:Bit. Pour plus d’infos, je vous conseille de lire cet article de Dominique Meurisse, qui traite beaucoup plus en détail de ce sujet.

Le nombre de LED varie d’un module à l’autre mais vous pouvez tout à fait relier plusieurs modules en série. En effet, pour piloter les LED, vous avez besoin de seulement 3 Bornes (2 bornes d’alimentation et 1 borne de données). La 4ème borne permet de chaîner les modules. Pour cela, reliez simplement la borne « Out » à la borne « In » du module suivant. Avec 3 modules de 12 LED, vous obtenez une chaine de 36 LED.

Mais vous pouvez aussi relier l’entrée de tous modules à la même sortie du Micro:Bit. Dans cet exemple, les 3 modules de 12 LED se comportent à l’identique.

Installation de la bibliothèque NeoPixel

Quel que soit le langage, le plus simple est d’installer la bibliothèque NeoPixel. Vous disposerez ainsi d’instructions spécifiques qui facilitent énormément le contrôle des LED.

Avec MakeCode, déroulez le menu « Avancé » et cliquez sur « Extensions« .

Cliquez sur « neopixel » et attendez quelques instants…

Ça y est, la bibliothèque est installée. Vous avez maintenant accès à de nouvelles fonctions.

En MicroPython (avec Mu), c’est encore plus facile, car la bibliothèque est déjà installée. Il suffit donc de l’appeler au début du code.

from neopixel import NeoPixel

Programmation

Au début du programme, vous créez un objet (« strip » dans cet exemple) et définissez le nombre et le type de LED.

Ensuite, vous pouvez programmer pour chaque LED (numérotée de 0 à 15), la proportion de rouge, de vert et de bleu (de 0 à 255). Si vous chercher à reproduire une couleur spécifique, vous la retrouverez ici.

Mais ça ne suffit pas. Il ne faut pas oublier d’afficher le résultat. C’est un peu comme si l’on mettait en place un décors en coulisse. Si vous ne levez pas le rideau, le public ne verra rien. L’idée est de définir individuellement l’état de chaque LED, mais d’afficher ponctuellement le résultat pour toutes les LED en même temps.

Il est également possible d’éteindre toutes les LED en même temps

Pour automatiser la programmation d’un module de 16 LED, vous pouvez utiliser une boucle avec un compteur de 0 à 15. La variable « index » correspond au numéro de la LED que l’on est en train de programmer.

Voila un exemple d’animation avec un module de 16 LED.

Et le code correspondant en MicroPython

# Appel des bibliothèques
from microbit import *
from neopixel import NeoPixel
import random
# Indique le nombre de LED du module
nombre_de_LED = 16
# Crée l'objet "strip" pour piloter les LED
strip = NeoPixel(pin0, nombre_de_LED)
# Boucle infinie
while True:
    # Choisir une couleur au hasard
    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    # boucle correspondant au nombre de LED
    for index in range(0, nombre_de_LED):
        # Programme la couleur de la LED
        strip[index] = [r, g, b]
        # Affiche toutes les LED
        strip.show()
        # Attends 100 millisecondes (1/10 de seconde)
        sleep(100)
        # Éteins toutes les LED
        strip.clear()
    # boucle correspondant au nombre de LED 
    for index in range(0, nombre_de_LED):
        # Programme la couleur de la LED  
        strip[index] = [r, g, b]
    # Affiche toutes les LED 
    strip.show()
    # Attends 1 seconde
    sleep(1000)
    # Éteins toutes les LED 
    strip.clear()

Une réflexion sur “LED Adressables et Micro:Bit

Laisser un commentaire