Connectez et contrôlez les bandes LED RVB WS2812 via Raspberry Pi

Connectez et controlez les bandes LED RVB WS2812 via Raspberry
Connectez et controlez les bandes LED RVB WS2812 via Raspberry

#! / usr / bin / env python3

# rpi_ws281x exemple de strandtest de bibliothèque

# Auteur: Thomas DiCola (tony@tonydicola.com)

#

# Port direct de l’exemple de strandtest de la bibliothèque Arduino NeoPixel. Vitrines

# animations diverses sur une bande de NeoPixels.

importation temps

de rpi_ws281x importation *

importation argparse

# Configuration de la bande LED:

LED_COUNT = 16 # Nombre de pixels LED.

LED_PIN = 18 # Broche GPIO connectée aux pixels (18 utilise PWM!).

#LED_PIN = 10 # broche GPIO connectée aux pixels (10 utilise SPI /dev/spidev0.0).

LED_FREQ_HZ = 800000 # Fréquence du signal LED en hertz (généralement 800 kHz)

LED_DMA = dix # Canal DMA à utiliser pour générer un signal (essayez 10)

LED_BRIGHTNESS = 255 # Défini sur 0 pour le plus sombre et 255 pour le plus clair

LED_INVERT = Faux # True pour inverser le signal (lors de l’utilisation d’un changement de niveau de transistor NPN)

LED_CHANNEL = 0 # défini sur ‘1’ pour les GPIO 13, 19, 41, 45 ou 53

# Définissez les fonctions qui animent les LED de différentes manières.

def colorWipe(bande, Couleur, wait_ms=50):

«  » « Effacer la couleur sur un pixel à la fois. » «  »

pour je dans gamme(bande.numPixels()):

bande.setPixelColor(je, Couleur)

bande.spectacle()

temps.dormir(wait_ms/1000,0)

def théâtreChase(bande, Couleur, wait_ms=50, itérations=dix):

«  » « Animation de chasseur de style léger de cinéma. » «  »

pour j dans gamme(itérations):

pour q dans gamme(3):

pour je dans gamme(0, bande.numPixels(), 3):

bande.setPixelColor(je+q, Couleur)

bande.spectacle()

temps.dormir(wait_ms/1000,0)

pour je dans gamme(0, bande.numPixels(), 3):

bande.setPixelColor(je+q, 0)

def roue(pos):

«  » « Générez des couleurs arc-en-ciel sur 0 à 255 positions. » «  »

si pos < 85:

revenir Couleur(pos * 3, 255 pos * 3, 0)

elif pos < 170:

pos – = 85

revenir Couleur(255 pos * 3, 0, pos * 3)

autre:

pos – = 170

revenir Couleur(0, pos * 3, 255 pos * 3)

def arc en ciel(bande, wait_ms=20, itérations=1):

«  » « Dessinez un arc-en-ciel qui s’estompe sur tous les pixels à la fois. » «  »

pour j dans gamme(256*itérations):

pour je dans gamme(bande.numPixels()):

bande.setPixelColor(je, roue((je+j) & 255))

bande.spectacle()

temps.dormir(wait_ms/1000,0)

def rainbowCycle(bande, wait_ms=20, itérations=5):

«  » « Dessine un arc-en-ciel qui se répartit uniformément sur tous les pixels. » «  »

pour j dans gamme(256*itérations):

pour je dans gamme(bande.numPixels()):

bande.setPixelColor(je, roue((int(je * 256 / bande.numPixels()) + j) & 255))

bande.spectacle()

temps.dormir(wait_ms/1000,0)

def théâtreChaseArc-en-ciel(bande, wait_ms=50):

«  » « Animation de chasseur de style de lumière de cinéma arc-en-ciel. » «  »

pour j dans gamme(256):

pour q dans gamme(3):

pour je dans gamme(0, bande.numPixels(), 3):

bande.setPixelColor(je+q, roue((je+j) % 255))

bande.spectacle()

temps.dormir(wait_ms/1000,0)

pour je dans gamme(0, bande.numPixels(), 3):

bande.setPixelColor(je+q, 0)

# La logique du programme principal suit:

si __Nom__ == ‘__principale__’:

# Arguments de processus

analyseur = argparse.ArgumentParser()

analyseur.add_argument(«-c», ‘–clair’, action=‘store_true’, Aidez-moi=«effacer l’affichage à la sortie»)

args = analyseur.parse_args()

# Créer un objet NeoPixel avec une configuration appropriée.

bande = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL)

# Initialisez la bibliothèque (doit être appelée une fois avant les autres fonctions).

bande.commencer()

impression (‘Appuyez sur Ctrl-C pour quitter.’)

si ne pas args.clair:

impression(‘Utiliser l’argument « -c » pour effacer les LED à la sortie’)

essayer:

tandis que Vrai:

impression («Animations à effacement des couleurs».)

colorWipe(bande, Couleur(255, 0, 0)) # Lingette rouge

colorWipe(bande, Couleur(0, 255, 0)) # Lingette bleue

colorWipe(bande, Couleur(0, 0, 255)) # Lingette verte

impression («Animations de poursuite en théâtre.)

théâtreChase(bande, Couleur(127, 127, 127)) # Chasse au théâtre blanc

théâtreChase(bande, Couleur(127, 0, 0)) # Chasse au théâtre rouge

théâtreChase(bande, Couleur( 0, 0, 127)) # Chasse au théâtre bleu

impression (« Animations arc-en-ciel. »)

arc en ciel(bande)

rainbowCycle(bande)

théâtreChaseArc-en-ciel(bande)

sauf KeyboardInterrupt:

si args.clair:

colorWipe(bande, Couleur(0,0,0), dix)

  • Lot de 10 modules LED RVB WS2812 - 8 embouts - Pilotes intégrés pour Arduino Raspberry Pi ESP32
  • Zicojia Contrôleur LED Programmable HC008, 133 Modes D'Effet, Contrôle 2048 Pixels LED pour Bande Lumineuse LED RVB WS2811 WS2812