Comment connecter et contrôler une bande LED RVB Raspberry Pi WS2801

Comment connecter et controler une bande LED RVB Raspberry Pi
Comment connecter et controler une bande LED RVB Raspberry Pi

# Démo simple des lampes LED RGB adressables de type WS2801 / SPI.

importation temps

importation RPi.GPIO comme GPIO

# Importez le module WS2801.

importation Adafruit_WS2801

importation Adafruit_GPIO.SPI comme SPI

# Configurez le nombre de pixels:

PIXEL_COUNT = 32

# Vous pouvez également spécifier une connexion SPI matérielle sur /dev/spidev0.0:

SPI_PORT = 0

SPI_DEVICE = 0

pixels = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE), gpio=GPIO)

# Définissez la fonction de roue pour interpoler entre différentes teintes.

def roue(pos):

si pos < 85:

revenir Adafruit_WS2801.RGB_to_color(pos * 3, 255 pos * 3, 0)

elif pos < 170:

pos – = 85

revenir Adafruit_WS2801.RGB_to_color(255 pos * 3, 0, pos * 3)

autre:

pos – = 170

revenir Adafruit_WS2801.RGB_to_color(0, pos * 3, 255 pos * 3)

# Définissez la fonction du cycle arc-en-ciel pour effectuer un cycle de toutes les teintes.

def rainbow_cycle_successive(pixels, attendre=0,1):

pour je dans gamme(pixels.compter()):

# mathématiques difficiles! nous utilisons chaque pixel comme une fraction de la roue complète de 96 couleurs

# (c’est la partie i / strip.numPixels ())

# Ajoutez ensuite j qui fait tourner les couleurs par pixel

# le% 96 est de faire tourner la roue

pixels.set_pixel(je, roue(((je * 256 // pixels.compter())) % 256) )

pixels.spectacle()

si attendre > 0:

temps.dormir(attendre)

def rainbow_cycle(pixels, attendre=0,005):

pour j dans gamme(256): # un cycle de 256 couleurs dans la roue

pour je dans gamme(pixels.compter()):

pixels.set_pixel(je, roue(((je * 256 // pixels.compter()) + j) % 256) )

pixels.spectacle()

si attendre > 0:

temps.dormir(attendre)

def rainbow_colors(pixels, attendre=0,05):

pour j dans gamme(256): # un cycle de 256 couleurs dans la roue

pour je dans gamme(pixels.compter()):

pixels.set_pixel(je, roue(((256 // pixels.compter() + j)) % 256) )

pixels.spectacle()

si attendre > 0:

temps.dormir(attendre)

def luminosité_diminuer(pixels, attendre=0,01, étape=1):

pour j dans gamme(int(256 // étape)):

pour je dans gamme(pixels.compter()):

r, g, b = pixels.get_pixel_rgb(je)

r = int(max(0, r étape))

g = int(max(0, g étape))

b = int(max(0, b étape))

pixels.set_pixel(je, Adafruit_WS2801.RGB_to_color( r, g, b ))

pixels.spectacle()

si attendre > 0:

temps.dormir(attendre)

def blink_color(pixels, blink_times=5, attendre=0,5, Couleur=(255,0,0)):

pour je dans gamme(blink_times):

# clignote deux fois, puis attendez

pixels.clair()

pour j dans gamme(2):

pour k dans gamme(pixels.compter()):

pixels.set_pixel(k, Adafruit_WS2801.RGB_to_color( Couleur[[0], Couleur[[1], Couleur[[2] ))

pixels.spectacle()

temps.dormir(0,08)

pixels.clair()

pixels.spectacle()

temps.dormir(0,08)

temps.dormir(attendre)

def appear_from_back(pixels, Couleur=(255, 0, 0)):

pos = 0

pour je dans gamme(pixels.compter()):

pour j dans renversé(gamme(je, pixels.compter())):

pixels.clair()

# définissez d’abord tous les pixels au début

pour k dans gamme(je):

pixels.set_pixel(k, Adafruit_WS2801.RGB_to_color( Couleur[[0], Couleur[[1], Couleur[[2] ))

# place alors le pixel à la position j

pixels.set_pixel(j, Adafruit_WS2801.RGB_to_color( Couleur[[0], Couleur[[1], Couleur[[2] ))

pixels.spectacle()

temps.dormir(0,02)

si __Nom__ == « __principale__ »:

# Effacez tous les pixels pour les désactiver.

pixels.clair()

pixels.spectacle() # Assurez-vous d’appeler show () après avoir changé les pixels!

rainbow_cycle_successive(pixels, attendre=0,1)

rainbow_cycle(pixels, attendre=0,01)

luminosité_diminuer(pixels)

appear_from_back(pixels)

pour je dans gamme(3):

blink_color(pixels, blink_times = 1, Couleur=(255, 0, 0))

blink_color(pixels, blink_times = 1, Couleur=(0, 255, 0))

blink_color(pixels, blink_times = 1, Couleur=(0, 0, 255))

rainbow_colors(pixels)

luminosité_diminuer(pixels)