Étape 3: programmation
# J’ai échantillonner la lune image couleur avec photoshop et obtenir la valeur RVB, puis les copier dans le code
# la fonction fade() serait prendre une valeur RBG puis fondu par une autre valeur RGB
#include #ifdef __AVR__ #include #endif
#define broche 4
Paramètre 1 = nombre de pixels dans la bande de / / paramètre 2 = nombre de goupille de Arduino (la plupart sont valide) / / paramètre 3 = type de pixel drapeaux, additionner au besoin: / / NEO_KHZ800 800 KHz bitstream (la plupart NeoPixel produits w/WS2812 LEDs) / / NEO_KHZ400 400 KHz (classique « v1 » (pas v2) pixels de flore, WS2811 pilotes) / / NEO_GRB Pixels sont câblés pour GRB bitstream (la plupart des produits NeoPixel) / / NEO_RGB Pixels sont câblés pour RGB bitstream (v1 pixels de flore pas de v2) bande de Adafruit_NeoPixel = Adafruit_NeoPixel (94, PIN, NEO_GRB + NEO_KHZ800) ;
IMPORTANT : Afin de réduire le risque d’épuisement professionnel NeoPixel, ajouter 1000 uF condensateur partout / / câbles d’alimentation pixel, ajouter résistance 300-500 ohms sur la saisie des données du premier pixel / / et de minimiser la distance entre Arduino et premier pixel. Eviter de brancher / / sur un circuit sous tension... Si vous devez connecter GND tout d’abord.
void setup() {/ / This is pour bijou 5V 16MHz, vous pouvez supprimer ces trois lignes si vous n’utilisez pas un bibelot #if défini (__AVR_ATtiny85__) si (F_CPU == 16000000) clock_prescale_set(clock_div_1) ; #endif / / fin de code spécial bijou
Strip.Begin() ; Strip.Show() ; Initialiser tous les pixels sur "arrêt"}
void loop() {}
fondu (50, 0, 0, 0, 202, 168, 76) ; fondu (50, 222, 161, 57, 202, 168, 76) ; fondu (50, 202, 168, 76, 156, 153, 140) ; fondu (50, 156, 153, 140, 144, 139, 129) ; fondu (50, 144, 139, 129, 172, 127, 65) ; fondu (50, 172, 127, 65, 191, 108, 22) ; fondu (50, 191, 108, 22, 222, 161, 57) ; fondu (50, 222, 161, 57, 169, 86, 18) ; se fanent (50, 169, 86, 18, 169-18 ans, 86-18, 18-18) ; se fanent (50, 169-18, 86-18, 18-18, 0, 0, 0) ;
}
Sub fondu (durée uint16_t, int startColorR, int startColorG, int startColorB, int endColorR, int endColorG, int endColorB) {}
int16_t redDiff = endColorR - startColorR ; int16_t greenDiff = endColorG - startColorG ; int16_t blueDiff = endColorB - startColorB ;
int16_t delaya = 20 ; int16_t étapes = durée / delaya ;
int16_t redValue, greenValue, blueValue ;
pour (int16_t j’ai = 0; j’ai < étapes - 1; ++ j’ai) {redValue = startColorR (int16_t) + (redDiff * je / étapes); greenValue = startColorG (int16_t) + (greenDiff * je / étapes); blueValue = startColorB (int16_t) + (blueDiff * je / étapes) ;
pour (uint16_t i = 0; i
Strip.Show() ;
} / * s’allument en demi-cercle pour (uint16_t i = 0; i
} pour (uint16_t i=strip.numPixels () / 2; i
Strip.Show() ;
} * / / * pour (uint16_t i = 0; i
} * / * / / / waitMs(delay) ; }
LED.Shine(EndColor) ; strip.setPixelColor (i, Wheel((i+j) & 255)) ; }
Remplir les points un après l’autre avec une colorWipe Sub de couleur (uint32_t c, uint8_t attente) {pour (uint16_t j’ai = 0; i
Sub arc-en-ciel (attente uint8_t) {uint16_t i, j ;
pour (j = 0; j < 256; j ++) {pour (i = 0; i
Légèrement différent, ce qui rend l’arc en ciel également réparti tout au long de Sub rainbowCycle (attente uint8_t) {uint16_t i, j ;
pour (j = 0; j < 256 * 5; j ++) {/ / 5 cycles de toutes les couleurs sur la roue pour (i = 0; j’ai < strip.numPixels(); i ++) {strip.setPixelColor (i, roue (((i * 256/strip.numPixels()) + j) & 255));} strip.show() ; delay(wait);}} Lumières de ramper en style théâtre. void theaterChasex (uint32_t c, uint8_t attente) {pour (int j = 0; j < 10; j ++) {//do 10 cycles de chasse pour (q int = 0; q < 3; q ++) {pour (int j’ai = 0; j’ai < strip.numPixels(); i = i + 3) {strip.setPixelColor (i + q, c); //turn chaque pixel troisième sur} strip.show() ;
Delay(Wait) ;
pour (int i = 0; j’ai < strip.numPixels(); i = i + 3) {strip.setPixelColor (i + q, 30); //turn chaque pixel troisième arrêt}}}}
Lumières de ramper en style théâtre. void theaterChase (uint32_t c, uint8_t attente) {pour (int j = 0; j < 10; j ++) {//do 10 cycles de chasse pour (q int = 0; q < 3; q ++) {pour (int j’ai = 0; j’ai < strip.numPixels(); i = i + 3) {strip.setPixelColor (i + q, c); //turn chaque pixel troisième sur} strip.show() ;
Delay(Wait) ;
pour (int i = 0; j’ai < strip.numPixels(); i = i + 3) {strip.setPixelColor (i + q, 0); //turn chaque pixel troisième arrêt}}}}
Style théâtre rampant s’allume avec arc-en-ciel effet Sub theaterChaseRainbow (uint8_t attente) {pour (int j = 0; j < 256; j ++) {/ / cycle tous les 256 couleurs dans la roue de (q int = 0; q < 3; q ++) {pour (int j’ai = 0; j’ai < strip.numPixels(); i = i + 3) {strip.setPixelColor (i + q, roue ((i + j) % 255)); //turn chaque pixel troisième sur} strip.show() ;
Delay(Wait) ;
pour (int i = 0; j’ai < strip.numPixels(); i = i + 3) {strip.setPixelColor (i + q, 0); //turn chaque pixel troisième arrêt}}}}
Entrer une valeur de 0 à 255 pour obtenir une valeur de couleur. Les couleurs sont un transition r - g - b - retour à r. roue d’uint32_t (WheelPos octets) {WheelPos = 255 - WheelPos ; if(WheelPos < 85) {bande de retour. Couleur (255 - WheelPos * 3, 0, WheelPos * 3) ; } if(WheelPos < 170) {WheelPos-= 85 ; bande de retour. Couleur (0, WheelPos * 3, 255 - WheelPos * 3) ; } WheelPos-= 170 ; retourner la bande. Couleur (WheelPos * 3, 255 - WheelPos * 3, 0) ; }