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

#! / usr / bin / env python3

# rpi_ws281x exemple de strandtest de bibliothèque

# Auteur: Tony DiCola ([email protected])

#

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

Articles similaires

Bouton retour en haut de la page
Fermer