Les NeoPixels sont des LEDS RVB intelligentes ultra lumineuses. On peut les associer pour former des bandeaux, des rectangles etc....

     



Exemple : ce petit module sous la forme d'un stick, est équipé de 8 NeoPixels WS2812




Chaque NeoPixel possède à l’intérieur : 

    • une LED  RVB,
    • un  circuit électronique intégré,
    • une patte Data in (données entrantes) et une patte Data out (données sortantes).


Les NeoPixel sont chainable entre eux, c’est à dire que les données entrantes de l’un vont être les données sortantes du suivant et ainsi de suite. 

Cette information est transmise très rapidement d’un NeoPixel à l’autre et chaque NeoPixel prend l’information qui le concerne.

Le 1er NeoPixel aura l'adresse 0, le suivant 1 etc.....

On parle de LED adressables. 

Les données viennent d'une seule broche d’un microcontrôleur comme Microbit, ESP ou Arduino.


Le microcontrôleur doit envoyer une information  concernant :

    • la luminosité de 0 à 255 pour chaque canal en Rouge Vert Bleu,
    • l'adresse du NeoPixel concerné.


Raspberry Pi Pico MicroPython Neopixel WS2812


Programme pour définir le stick de 8 NeoPixels connecté à la broche GP16 (repère D16 shield Grove)


import machine
import neopixel                                                    # import de la bibliothèque NeoPixel

np = neopixel.NeoPixel(machine.Pin(16), 8)                # 8 LEDS connectées broche GP16 (repère D16 shield Grove)



Pour allumer en rouge le 1er NeoPixel

Chaque tuple (255, 0, 0) représente le mélange de couleurs RVB (Rouge Vert Bleu) pour un pixel spécifique.

Les valeurs RVB peuvent varier entre 0 et 255.


np[0] = (255, 0, 0)

np.write()



Pour allumer en vert le 2ème NéoPixel


np[1] = (0, 255, 0)

np.write()



Exemple pour donner une couleur et une intensité aléatoire aux 8 NeoPixels


import machine, neopixel
from time import *
from random import randint
np = neopixel.NeoPixel(machine.Pin(16), 8)

while True:
    # Pour chaque NeoPixel du stick, de l'adresse_pixel = 0 à 7
    for adresse_pixel in range(0, 8):
        # intensité aléatoire entre 0-60 par canaux RVB 
        r = randint(0, 60)
        v = randint(0, 60)
        b = randint(0, 60)

        # Affecte le tuple (r, v, b) au NeoPixel
        np[adresse_pixel] = (r, v, b)

        # Envoi des données sur le stick Neopixel
        np.write()
        sleep_ms(100)
























Créé avec HelpNDoc Personal Edition: Créer facilement des fichiers Qt Help