Étape 10 :
Oh ! Dans d’autres nouvelles d’utiliser ce code, vous devez télécharger la bibliothèque LPD8806 ou cela ne va pas travailler https://github.com/adafruit/LPD8806
#include « LPD8806.h »
#include « SPI.h »
Cela est principalement tirée de la simple test sur une mèche LED RGB et juste joué un peu avec
/*****************************************************************************/
Nombre de LEDs RGB en chapelet : il ne faut pas spécifier combien sont dans votre plus longue bande
int nLEDs = 20 ;
A choisi 2 broches pour la sortie ; peut être n’importe quel broches de sortie valide :
int dataPin = 11 ;
int clockPin = 13 ;
Premier paramètre est le nombre de LEDs dans le brin. Les bandes de LED
sont 32 LEDs par mètre, mais vous pouvez étendre ou couper la bande. Deux prochaines
paramètres sont les broches de données et horloge SPI :
Bande de LPD8806 = LPD8806 (nLEDs, dataPin, clockPin) ;
Vous pouvez éventuellement utiliser matériel SPI pour les écritures plus rapides, justes laisser de côté
les paramètres de broches de données et horloge. Mais cela ne limite permet de très
broches spécifiques sur l’Arduino. Pour « classique » Arduinos (Uno, Duemilanove,
des données etc.), = broche 11, horloge = pin 13. Arduino Mega, données = pin 51,
horloge = broche 52. Pour 32u4 Breakout Board + et Teensy, données = broche B2,
horloge = pin B1. Pour Leonardo, cela n’est possible sur les broches du PDCI.
Bande de LPD8806 = LPD8806(nLEDs) ;
void setup() {}
Commencez vers le haut de la bande de LED
Strip.Begin() ;
Mise à jour de la bande, pour commencer, ils sont tous « arrêt »
Strip.Show() ;
}
void loop() {}
Envoyer une chasse simple pixel en...
colorChase (bande. Color(127, 127, 127), 500) ; Blanc
colorChase (bande. Color(127, 0, 0), 500) ; Rouge
colorChase (bande. Color(127, 127, 0), 500) ; Jaune
colorChase (bande. Couleur (0, 127, 0), 500) ; Vert
colorChase (bande. Couleur (0, 127, 127), 500) ; Cyan
colorChase (bande. Couleur (0, 0, 127), 500) ; Bleu
colorChase (bande. Color(127, 0, 127), 500) ; Violet
Remplir le strip intégral avec...
colorWipe (bande. Color(127, 0, 0), 50) ; Rouge
colorWipe (bande. Couleur (0, 127, 0), 50) ; Vert
colorWipe (bande. Couleur (0, 0, 127), 50) ; Bleu
colorWipe (strip2. Color(127, 0, 0), 50) ; Rouge
colorWipe (strip2. Couleur (0, 127, 0), 50) ; Vert
colorWipe (strip2. Couleur (0, 0, 127), 50) ; Bleu
Rainbow(10) ;
rainbowCycle(0) ; faire passer le cycle assez rapide
}
Sub arc-en-ciel (attente uint8_t) {}
int i, j ;
pour (j = 0; j < 384; j ++) {/ / 3 cycles de toutes les couleurs de 384 dans la roue
pour (i = 0; i < strip.numPixels(); i ++) {}
strip.setPixelColor (i, roue ((i + j) % 384)) ;
}
Strip.Show() ; écrire tous les pixels
Delay(Wait) ;
}
}
Légèrement différent, celui-ci rend la roue de l’arc-en-ciel qui soient également répartie
le long de la chaîne
void rainbowCycle (attente uint8_t) {}
uint16_t i, j ;
pour (j = 0; j < 384 * 5; j ++) {/ / 5 cycles de toutes les couleurs de 384 dans la roue
pour (i = 0; i < strip.numPixels(); i ++) {}
math difficile ! Nous utilisons chaque pixel comme une fraction de la roue complète 384-couleur
(c’est le i / strip.numPixels() partie)
Puis ajouter dans j qui rend que les couleurs contournez par pixel
le % 384 est de faire la roue un cycle autour de
strip.setPixelColor (je, roue (((i * 384/strip.numPixels()) + j) % 384)) ;
}
Strip.Show() ; écrire tous les pixels
Delay(Wait) ;
}
}
Remplir les points progressivement le long de la bande.
void colorWipe (uint32_t c, uint8_t attente) {}
int i ;
pour (i = 0; i < strip.numPixels(); i ++) {}
strip.setPixelColor (i, c) ;
Strip.Show() ;
Delay(Wait) ;
}
}
Chasser un point vers le bas de la bande complète.
void colorChase (uint32_t c, uint8_t attente) {}
int i ;
Commencez par éteindre tous les pixels :
pour (i = 0; i < strip.numPixels(); i ++) strip.setPixelColor (i, 0) ;
Puis afficher un pixel à la fois :
pour (i = 0; i < strip.numPixels(); i ++) {}
strip.setPixelColor (i, c) ; Nouveau pixel la valeur « on »
Strip.Show() ; Actualiser les États LED
strip.setPixelColor (i, 0) ; Effacer des pixels, mais ne pas actualiser !
Delay(Wait) ;
}
Strip.Show() ; Rafraîchissement pour éteindre dernier pixel
}
/ * Fonctions d’assistance * /
Entrer une valeur de 0 à 384 pour obtenir une valeur de couleur.
Les couleurs sont une transition r - g -b - retour à r
Roue d’uint32_t (uint16_t WheelPos)
{
octet r, g, b ;
Switch(WheelPos / 128)
{
case 0 :
r = 127 - WheelPos % 128 ; Rouge vers le bas
g = WheelPos % 128 ; Vert vers le haut
b = 0 ; bleu large
rupture ;
cas 1 :
g = 127 - WheelPos % 128 ; bas vert
b = WheelPos % 128 ; haut bleu
r = 0 ; rouge off
rupture ;
cas 2 :
b = 127 - WheelPos % 128 ; bas bleu
r = WheelPos % 128 ; haut rouge
g = 0 ; vert éteint
rupture ;
}
retour (bande. Color(r,g,b)) ;
}
Yay ! Maintenant ça marche ! ' Tis fantaisies ! J’ai inclus ce code parce qu’à partir de ce code vous pouvez vraiment lui faire faire une variété de choses, il suffit de couper ce que vous ne voulez pas !