PYBStick-RP2040 : Documentation NeoPixel / WS2812

Bonsoir à tous,

Encore une petite avancée sur la documentation de la PYBStick-RP2040.

Cette fois, nous nous sommes concentrés sur l'utilisation des LEDs NeoPixels (WS2812) sous MicroPython avec le processeur RP2040.

NeoPixel sous 3.3V

Le montage est relativement simple si l'on a besoin de contrôler quelques Pixels.
Il est évidemment hors de question d'alimenter un ruban ou un anneau néopixel avec le régulateur de tension de la PYBStick!

Source: PYBStick-RP2040
Et le code d'exemple est disponible dans le dépôt GitHub et se résume à quelques fonctions utilitaires et quelques appels.

Très simple à utiliser en fin de compte.

Attention:
Contrairement à de nombreux exemples sur Internet, le niveau logique du signal de donnée doit correspondre à la tension d'alimentation des pixels. Alimenter les pixels sous 5V avec un signal 3.3V, c'est prendre le risque d'avoir des surprises et des instabilités.

NeoPixel sous 5V

Utiliser des NeoPixels sous 5V, c'est s'assurer une meilleur luminosité mais aussi l'opportunité de pouvoir compter sur une alimentation 5V 10A... car les NeoPixels sont vraiment très énergivores.

Voici comment amener le signal logique 3.3V du RP2040 à 5V à l'aide d'un 74AHCT125.  

Source: PYBStick-RP2040

Du Code

Hormis quelques fonctions utilitaires (voir exemple) que l'utilisation des NeoPixels est relativement simple.

# Tous les pixels de la même couleur
#
pixels_fill( RED )   # Remplir en Rouge
pixels_show()        # Envoi des données sur le Ruban
time.sleep( 2 )      # Attendre 2 seconde
pixels_fill( GREEN ) # en Vert
pixels_show()
time.sleep( 2 )
pixels_fill( BLUE )  # en Bleu
pixels_show()
time.sleep( 2 )

# Eteindre le ruban
pixels_fill( BLACK ) # Remplir en noir
pixels_show()
time.sleep( 2 )

# Assigner la couleur Pixel par Pixel
#
pixels_set( 0, RED )   # Pixel 0 en Rouge
pixels_set( 1, GREEN ) # Pixel 1 en Vert
pixels_set( 2, BLUE )  # Pixel 1 en Bleu
pixels_set( 3, YELLOW )# ...
pixels_set( 4, CYAN )
pixels_set( 5, PURPLE )
pixels_set( 6, WHITE )
pixels_set( 7, RED )
pixels_show()          # Envoi des données sur le Ruban
time.sleep( 4 )        # Attendre 4 secondes

# Eteindre le Ruban
pixels_fill( BLACK )   
pixels_show()
time.sleep( 2 )

Ressources



Aucun commentaire