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

# 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)

Articles similaires

Bouton retour en haut de la page
Fermer