Utiliser des NeoPixel sur ESP8266 sous MicroPython

Un petit week-end de travail pour produire un nouveau tutoriel pour notre section "ESP8266 sous MicroPython".

Cette semaine, nous nous attardons sur les LED intelligentes WS2812 / SK6812 plus communément appelée NeoPixel.
Gamme NeoPixel disponible de stock chez MCHobby
Montage de base (3.3v)
Le montage pour une utilisation sous 3.3v est assez rudimentaire. Il a cependant quelques inconvénients:
  1. Les couleurs ne sont pas aussi éclatante que sous 5V.
  2. Les couleurs vives sont plus difficiles à produire.
  3. Le régulateur de tension 3.3V est un peu limité en courant, ce qui limite le nombre de LEDs utilisables. 
Voir la section "Utilisation sous 3.3V" dans le tutoriel pour plus d'informations.
Utiliser quelques NeoPixels sous 3.3v avec un Feather Huzza ESP8266 sous MicroPython.
Source: ce tutoriel de MCHobby
Montage avancé (5V)
Alimenter les NeoPixel sous 5V permet d'avoir des couleurs éclatantes et élimine tous les problèmes rencontrés sous 3.3V. Cette approche nécessite néanmoins un LevelShifter très réactif (capable de suivre le débit d'un signal à 800 KHz) comme le 74AHCT125.
Ne pas oublier la capacité de protection sur le circuit 5V des NeoPixels.

Utiliser des NeoPixels sous 5v avec un Feather Huzza ESP8266 sous MicroPython.
Source: ce tutoriel de MCHobby
Et le code?
Utiliser des NeoPixels en MicroPython est tout aussi simple que le montage.
# Utilisation de la bibliothèque neopixel avec Feather ESP8266 
# sous MicroPython
#
# Shop: https://shop.mchobby.be/55-leds-neopixels-et-dotstar
# Wiki: https://wiki.mchobby.be/index.php?title=MicroPython-Accueil#ESP8266_en_MicroPython

from machine import Pin
from neopixel import NeoPixel

# NeoPixel( broche_signal, nbre_de_led )
np = NeoPixel( Pin(2), 8 )

# Fixer la couleur la couleur du premier pixel
# avec un tuple (r,g,b) ou chaque valeur est 
# située entre 0 et 255
np[0] = (255,0,0) # rouge

# couleur des autres pixels
np[1] = (0, 255, 0) # vert
np[2] = (0, 0, 128) # bleu (1/2 brillance)
np[3] = (255, 102, 0) # Orange
np[4] = (255, 0, 102) # Rose bonbon
np[5] = (153, 51, 255) # Violet
np[6] = (102, 153, 255) # bleu pastel
np[7] = (153, 255, 153) # vert pastel

# Envoyer l'info aux NeoPixels
np.write()

Des animations NeoPixel? 
Le GitHub ESP8266-uPy/NeoPixel contient également du code de démonstration utilisant quelques fonctions d' effets lumineux.

# theater_chase sample
theater_chase( np, (127,0,0) ) # red
theater_chase( np, (127,127,127) ) # white
theater_chase( np, (0,0,127) ) # blue
clear( np )
sleep( 1 )

# Wipe in color
np.fill( (190, 0, 0) ) # fill in red
np.write()
wipe( np, (0,180,0), pause=0.150 ) # wipe in green
wipe( np, (0,0,255), pause=0.150 ) # wipe in blue
wipe( np, (0,0,0),   pause=0.150 ) # wipe in black
sleep( 1 )

# Moving_rainbow
for i in range( 4 ):
 moving_rainbow( np )
clear( np )
sleep( 1 )

# Fade In And Out
fade_inout( np, (255,   0,   0) ) # Red
fade_inout( np, (0  , 255,   0) ) # Green
fade_inout( np, (0  ,   0, 255) ) # Blue
clear( np )
sleep( 1 )

# moving_wheel
moving_wheel( np )
clear( np )
sleep( 1 )

# cycle_wheel
for i in range(2):
 cycle_wheel( np )
clear( np )
sleep( 1 )

# Candle Effect
candle( np )
clear( np )
sleep( 1 )

# Larson Scanner (K2000)
#   execute 3 iterations
posdir = None
for i in range( 3 ):
 posdir = larson_scanner( np, posdir )
clear( np )
sleep( 1 )


Le code complet se trouve sur le GitHub GitHub ESP8266-uPy/NeoPixel .
Après avoir copié le fichier fxdemo.py sur votre ESP8266, vous pourrez facilement l'exécuter en utilisant la commande import fxdemo depuis une session REPL.

Des tutos et du code pour le peuple!
Il ne reste qu'a suivre les liens suivants pour accéder au ressources.
Où acheter