Étape 1: Étapes 3/4 FastLED Alternative
L’Arduino peut être programmé avec le FastLED 3.1 NoisePlusPalette https://github.com/FastLED/FastLED/tree/master/exa... Il y a une vidéo d’exemple de ce inclus ci-dessus. Vous devez également installer la bibliothèque de 3,1 FastLED à l’ordinateur que vous programmez l’arduino avec. https://github.com/FastLED/FastLED
S’il vous plaît n’oubliez pas de changer le NIP dans le programme tel qu’illustré dans le code ci-dessous.
Si vous utilisez une source d’alimentation pour votre Arduino vous pouvez simple tour sur le pouvoir à celui et ensuite la puissance de la LED et vous êtes aller !
CODE
---------------------------------------------------------------------------------
#include
#define LED_PIN 3 #define DATA_PIN 2 #define CLOCK_PIN 3 #define NUM_LEDS 120 #define luminosité 64 #define LED_TYPE WS2801 #define COLOR_ORDER GBR CRGB leds [NUM_LEDS] ;
#define UPDATES_PER_SECOND 100
Cet exemple montre plusieurs façons de configurer et utiliser la « palette » de couleurs / / avec FastLED. / / Ces palettes compacts fournissent un moyen facile de re-coloriser votre / / animation à la volée, rapidement, facilement et avec une faible surcharge. / / En utilisant des palettes est beaucoup plus simple en pratique qu’en théorie, donc tout d’abord un peu / / exécuter cette esquisse et regardez les jolies lumières comme vous lisez ensuite / / le code. Bien que ce croquis a huit (ou plus) différents couleurs, / / l’esquisse tout compile jusqu'à environ 6,5 K sur AVR. / / FastLED fournit quelques palettes de couleurs pré-paramétrés et rend / / extrêmement facile composer vos propres jeux de couleurs avec des palettes. / / Quelques notes sur le plus abstrait « théorie et pratique » de / / FastLED palettes compacts sont au bas de ce fichier.
CRGBPalette16 currentPalette ; TBlendType currentBlending ;
extern CRGBPalette16 myRedWhiteBluePalette ; extern const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM ;
void setup() {retarder (3000); / / délai de mise sous tension de sécurité FastLED.addLeds (leds, NUM_LEDS) ; FastLED.setBrightness (luminosité) ; currentPalette = RainbowColors_p ; currentBlending = mélange ; }
void loop() {ChangePalettePeriodically() ;
uint8_t statique startIndex = 0 ; startIndex = startIndex + 1 ; / * Vitesse de mouvement * /
FillLEDsFromPaletteColors (startIndex) ;
FastLED.show() ; FastLED.delay(1000 / UPDATES_PER_SECOND) ; }
void FillLEDsFromPaletteColors (uint8_t colorIndex) {uint8_t luminosité = 255 ; pour (int i = 0; j’ai < NUM_LEDS; i ++) {leds [i] = ColorFromPalette (currentPalette, colorIndex, luminosité, currentBlending); colorIndex += 3;}}
Il y a plusieurs différentes palettes de couleurs démontrés ici. / / FastLED fournit plusieurs palettes « préréglés »: RainbowColors_p, RainbowStripeColors_p, / / OceanColors_p, CloudColors_p, LavaColors_p, ForestColors_p et PartyColors_p. / / / / en outre, vous pouvez définir manuellement vos propres palettes de couleurs, ou vous pouvez écrire / / code qui crée des palettes de couleurs à la volée. Tous sont affichés ici.
void ChangePalettePeriodically() {uint8_t brocante = (millis() / 1000) % 60 ; lastSecond uint8_t statique = 99 ; si (lastSecond! = seconde main) {lastSecond = usagées ; si (secondHand == 0) {currentPalette = RainbowColors_p ; currentBlending = mélange;} si (secondHand == 10) {currentPalette = RainbowStripeColors_p ; currentBlending = NOBLEND;} si (secondHand == 15) {currentPalette = RainbowStripeColors_p ; currentBlending = mélange;} si (secondHand == 20) {SetupPurpleAndGreenPalette() ; currentBlending = mélange;} si (secondHand == 25) {SetupTotallyRandomPalette() ; currentBlending = mélange;} si (secondHand == 30) {SetupBlackAndWhiteStripedPalette() ; currentBlending = NOBLEND;} si (secondHand == 35) {SetupBlackAndWhiteStripedPalette() ; currentBlending = mélange;} si (secondHand == 40) {currentPalette = CloudColors_p ; currentBlending = mélange;} si (secondHand == 45) {currentPalette = PartyColors_p ; currentBlending = mélange ; {Si (secondHand == 50) {currentPalette = myRedWhiteBluePalette_p ; currentBlending = NOBLEND;} si (secondHand == 55) {currentPalette = myRedWhiteBluePalette_p ; currentBlending = mélange;}} }
Cette fonction remplit la palette avec des couleurs totalement aléatoires. void SetupTotallyRandomPalette() {pour (int i = 0; j’ai < 16; i ++) {currentPalette [i] = CHSV (random8(), 255, random8());}}
Cette fonction met en place une palette de bandes noires et blanches, / / à l’aide de code. Étant donné que la palette est en fait un tableau de / / seize couleurs CRGB, fill_ * diverses fonctions peuvent être utilisées / / pour mettre en place. void SetupBlackAndWhiteStripedPalette() {/ / « black out » toutes les entrées de palette 16... fill_solid (currentPalette, 16, CRGB::Black); / / et mettre tout le monde quatrième à blanc. currentPalette [0] = CRGB::White ; currentPalette [4] = CRGB::White ; currentPalette [8] = CRGB::White ; currentPalette [12] = CRGB::White ;
}
Cette fonction met en place une palette de rayures violets et verts. void SetupPurpleAndGreenPalette() {purple CRGB = CHSV (HUE_PURPLE, 255, 255) ; Vert CRGB = CHSV (HUE_GREEN, 255, 255) ; Noir CRGB = CRGB::Black ; currentPalette = CRGBPalette16 (vert, vert, noir, noir, pourpre, violet, noir, noir, vert, vert, noir, noir, pourpre, violet, noir, noir) ; }
Cet exemple montre comment mettre en place une palette de couleurs statique / / qui est stocké dans PROGMEM (flash), qui est presque toujours plus / / abondante que RAM. Une palette PROGMEM statique comme ceci / / reprend 64 octets de flash. const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM = {CRGB::Red, CRGB::Gray, / / « blanc » est trop clair par rapport au rouge et bleu CRGB::Blue, CRGB::Black,
CRGB::Red, CRGB::Gray, CRGB::Blue, CRGB::Black,
CRGB::Red, CRGB::Red, CRGB::Gray, CRGB::Gray, CRGB::Blue, CRGB::Blue, CRGB::Black, CRGB::Black} ;
Additionl notes relatives à le FastLED compacte palettes: / / / / normalement, en infographie, la palette (ou « table de choix de couleur ») / / a 256 entrées, chacune contenant une couleur de RVB 24 bits spécifique. Vous pouvez ensuite / / index dans la palette de couleur à l’aide d’une simple valeur de 8 bits (un octet). Une palette de couleurs 256-entrée reprend 768 octets de mémoire vive, quel sur Arduino / / est très probablement « trop » octets. / / FastLED offre-t-elle des palettes de 256 éléments traditionnels, pour les configurations qui / / peuvent se permettre le coût de 768 octets dans la mémoire RAM. / / Toutefois, FastLED propose également une alternative compacte. Offre FastLED / / palettes qui stockent 16 entrées distinctes, mais peuvent être accédés comme IF / / ils ont en fait 256 entrées ; Ceci est accompli en interpolant / / entre les 16 entrées explicites pour créer quinze palette intermédiaire / / entrées entre chaque paire. / / Si par exemple, si vous définissez les deux premières entrées explicites d’un compact / / palette de vert (0,255,0) et bleu (0,0,255) et ensuite récupérées / / les seize premières entrées de la palette virtuelle (sur 256), vous obtiendriez / / vert, suivie d’une pente douce du vert au bleu et puis bleu.