Étape 9: Programmation Partie 4: assemblage du programme
Nous y sommes presque !Il est plus facile pour moi d’expliquer ce qui se passe dans le programme en commentant les parties ci-dessous.
Début du code
#include < Adafruit_NeoPixel.h >
#define PIN 13 //identifies broche 13 reliée à la neopixels
const int wait_T = 40 ;
const int ACCEL_PIN = A0 ;
const int PixelCount = 29 ; / / J’ai 29 neopixels
const int MAX_AREAD = 370 ; / / La présente section établit maximale, minimale, médiane et médian fenêtre du programme.
const int MIN_AREAD = 280 ;
const int MID_AREAD = 325 ;
const int MID_WINDOW = 10 ;
const int TILT_TIME = 10 ; en quelques secondes / / la quantité de temps nécessaire pour rester dans la fenêtre afin de choisir une nouvelle répartition de la lumière
const int Pixel_Start_End = 0 ; //Settings pour le générateur aléatoire répartition de la lumière
const UsingBar booléen = false ;
int random_pick = 0 ;
Boolean pick_new_random = true ;
int accel_read = 0 ;
unsigned long time_keeper = 0 ;
Bande de Adafruit_NeoPixel = Adafruit_NeoPixel (PixelCount, PIN, NEO_GRB + NEO_KHZ800) ;
void setup() {}
Serial.Begin(57600) ;
Strip.Begin() ; / / Bande de démarrage
Strip.Show() ; / / Initialiser tous les pixels sur « arrêt »
pinMode (entrée, ACCEL_PIN) ; / / Analog Accelerometer configurer lire NIP
randomSeed(analogRead(A3)) ;
}
Voici où le graphique de l’action est codé :
void loop() {}
/ / Lire la valeur de l’accéléromètre
accel_read = analogRead(ACCEL_PIN) ;
/ / Pick un nouveau aléatoire s’il est temps à.
Si (pick_new_random == true) {}
random_pick = random(6) ;
pick_new_random = false ;
}
Lorsque la valeur de l’accéléromètre est à l’intérieur de la fenêtre, elle puise les fonctions suivantes
Si ((accel_read > MID_AREAD - MID_WINDOW) & & (accel_read < MID_AREAD + MID_WINDOW)) {}
Si (random_pick == 0) {}
ThunderAccel() ;
} else if(random_pick == 1) {}
PatternOne() ;
} else if(random_pick == 2) {}
PatternTwo() ;
} else if(random_pick == 3) {}
PatternThree() ;
} else if(random_pick == 4) {}
PatternFour() ;
} else if(random_pick == 5) {}
PatternFive() ;
} else if(random_pick == 6) {}
PatternSix() ;
}
} else {}
time_keeper = millis() ;
tandis que ((millis() - time_keeper) < TILT_TIME * 1000) {}
color_tilt() ;
}
pick_new_random = true ;
}
}
dans le cas contraire, le code fera le modèle inclinable suivant
void setStripColor (int rouge, int vert, int bleu) {}
pour (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, rouge, vert, bleu) ;
}
Strip.Show() ;
}
void color_tilt() {}
int accel_value = analogRead(ACCEL_PIN) ;
accel_value = map(accel_value,MIN_AREAD,MAX_AREAD,0,255) ;
accel_value = constrain(accel_value,0,255) ;
pour (int i = 0; i < strip.numPixels(); i ++) {}
strip.setPixelColor (i, 255-accel_value, 0, accel_value) ;
Strip.Show() ;
Delay(2) ;
}
}
Voici toutes les fonctions de répartition de la lumière
void PatternOne() {}
CylonEyeUp (bande. Color(255,255,255), bande. Color(0,255,255), bande. Color(255,255,255), wait_T, PixelCount, Pixel_Start_End) ;
Delay(wait_T) ;
Exemple : CylonEyeDown (Center_Dot_Color, Second_Dot_color, Third_Dot_color, wait_T, PixelCount, Pixel_Start_End) ;
CylonEyeDown (bande. Color(255,255,255), bande. Color(0,255,255), bande. Color(255,255,255), wait_T, PixelCount, Pixel_Start_End) ;
Delay(wait_T) ;
}
void PatternTwo() {}
pour (int i = 0; i < 102; i ++) {}
setStripColor (i, (204 - i * 2), 204) ;
Delay(20) ;
}
pour (int i = 0; i < 102; i ++) {}
setStripColor (102-i, (i * 2), 204) ;
Delay(20) ;
}
}
void PatternThree() {}
pour (int i = 0; i < 255; i ++) {}
setStripColor (i, 255, 0) ;
Delay(20) ;
}
pour (int i = 255 ; j’ai > 0; i--) {}
setStripColor (i, 255, 0) ;
Delay(20) ;
}
Delay(1000) ;
}
void PatternFour() {}
pour (int i = 0; i < 127; i ++) {}
setStripColor (255-i * 2, 255-i, 255) ;
Delay(20) ;
}
pour (int i = 0; i < 127; i ++) {}
setStripColor (i * 2, 127 + i, 255) ;
Delay(20) ;
}
Delay(2000) ;
}
void PatternFive() {}
strip.setPixelColor (14, 255,255,255) ;
Delay(20) ;
strip.setPixelColor (15, 255,255,255) ;
Delay(20) ;
strip.setPixelColor (13, 255,255,255) ;
Delay(20) ;
strip.setPixelColor (16, 255,255,255) ;
Delay(20) ;
strip.setPixelColor (12, 255,255,255) ;
Delay(20) ;
strip.setPixelColor (17, 204,255,255) ;
Delay(20) ;
strip.setPixelColor (11, 204,255,255) ;
Delay(20) ;
strip.setPixelColor (18, 204,255,255) ;
Delay(20) ;
strip.setPixelColor (10, 204,255,255) ;
Delay(20) ;
strip.setPixelColor (19, 204,255,255) ;
Delay(20) ;
strip.setPixelColor (9, 204,255,255) ;
Delay(20) ;
strip.setPixelColor (20, 0,128,255) ;
Delay(20) ;
strip.setPixelColor (8, 0,128,255) ;
Delay(20) ;
strip.setPixelColor (21, 0,128,255) ;
Delay(20) ;
strip.setPixelColor (7, 0,128,255) ;
Delay(20) ;
strip.setPixelColor (22, 0,128,255) ;
Delay(20) ;
strip.setPixelColor (6, 0,128,255) ;
Delay(20) ;
strip.setPixelColor (23, 0,128,255) ;
Delay(20) ;
strip.setPixelColor (5, 0,128,255) ;
Delay(20) ;
strip.setPixelColor (24, 0,128,255) ;
Delay(20) ;
strip.setPixelColor (4, 0,128,255) ;
Delay(20) ;
strip.setPixelColor (25, 0,128,255) ;
Delay(20) ;
strip.setPixelColor (3, 0,128,255) ;
Delay(20) ;
strip.setPixelColor (26, 0,0,255) ;
Delay(20) ;
strip.setPixelColor (2, 0,0,255) ;
Delay(20) ;
strip.setPixelColor (27, 0,0,255) ;
Delay(20) ;
strip.setPixelColor (1, 0,0,255) ;
Delay(20) ;
strip.setPixelColor (28, 0,0,255) ;
Delay(20) ;
strip.setPixelColor (0, 0,0,255) ;
Delay(20) ;
strip.setPixelColor (29, 0,0,255) ;
Delay(20) ;
Strip.Show() ;
}
void PatternSix() {}
pour (int i = 0; j’ai < 255; i = i + 1) {}
strip.setPixelColor (0, 0, i, 255-i) ;
strip.setPixelColor (1, 0, i, 255-i) ;
strip.setPixelColor (2, 0, i, 255-i) ;
strip.setPixelColor (3, 0, i, 255-i) ;
strip.setPixelColor (4, 0, i, 255-i) ;
strip.setPixelColor (5, 0, i, 255-i) ;
strip.setPixelColor (6, 0, i, 255-i) ;
strip.setPixelColor (8, 0, i, 255-i) ;
strip.setPixelColor (9, 0, i, 255-i) ;
strip.setPixelColor (10, 0, i, 255-i) ;
strip.setPixelColor (11, 0, i, 255-i) ;
strip.setPixelColor (12, 0, i, 255-i) ;
strip.setPixelColor (13, 0, i, 255-i) ;
strip.setPixelColor (14, 0, i, 255-i) ;
strip.setPixelColor (15, 0, i, 255-i) ;
strip.setPixelColor (16, 0, i, 255-i) ;
strip.setPixelColor (17, 0, i, 255-i) ;
strip.setPixelColor (18, 0, i, 255-i) ;
strip.setPixelColor (19, 0, i, 255-i) ;
strip.setPixelColor (20, 0, i, 255-i) ;
strip.setPixelColor (21, 0, i, 255-i) ;
strip.setPixelColor (22, 0, i, 255-i) ;
strip.setPixelColor (23, 0, i, 255-i) ;
strip.setPixelColor (24, 0, i, 255-i) ;
strip.setPixelColor (25, 0, i, 255-i) ;
strip.setPixelColor (26, 0, i, 255-i) ;
strip.setPixelColor (27, 0, i, 255-i) ;
strip.setPixelColor (28, 0, i, 255-i) ;
strip.setPixelColor (29, 0, i, 255-i) ;
Delay(10) ;
Strip.Show() ;
}
pour (int i = 255 ; j’ai > 0; i = i-1) {}
strip.setPixelColor (0, 0, i, 255-i) ;
strip.setPixelColor (1, 0, i, 255-i) ;
strip.setPixelColor (2, 0, i, 255-i) ;
strip.setPixelColor (3, 0, i, 255-i) ;
strip.setPixelColor (4, 0, i, 255-i) ;
strip.setPixelColor (5, 0, i, 255-i) ;
strip.setPixelColor (6, 0, i, 255-i) ;
strip.setPixelColor (8, 0, i, 255-i) ;
strip.setPixelColor (9, 0, i, 255-i) ;
strip.setPixelColor (10, 0, i, 255-i) ;
strip.setPixelColor (11, 0, i, 255-i) ;
strip.setPixelColor (12, 0, i, 255-i) ;
strip.setPixelColor (13, 0, i, 255-i) ;
strip.setPixelColor (14, 0, i, 255-i) ;
strip.setPixelColor (15, 0, i, 255-i) ;
strip.setPixelColor (16, 0, i, 255-i) ;
strip.setPixelColor (17, 0, i, 255-i) ;
strip.setPixelColor (18, 0, i, 255-i) ;
strip.setPixelColor (19, 0, i, 255-i) ;
strip.setPixelColor (20, 0, i, 255-i) ;
strip.setPixelColor (21, 0, i, 255-i) ;
strip.setPixelColor (22, 0, i, 255-i) ;
strip.setPixelColor (23, 0, i, 255-i) ;
strip.setPixelColor (24, 0, i, 255-i) ;
strip.setPixelColor (25, 0, i, 255-i) ;
strip.setPixelColor (26, 0, i, 255-i) ;
strip.setPixelColor (27, 0, i, 255-i) ;
strip.setPixelColor (28, 0, i, 255-i) ;
strip.setPixelColor (29, 0, i, 255-i) ;
Delay(10) ;
Strip.Show() ;
}
}
void ThunderAccel() {}
pour (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 255,255,255) ;
Strip.Show() ;
}
Delay(200) ;
pour (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 0,0,0) ;
Strip.Show() ;
}
retard (100) ;
pour (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 255,255,0) ;
Strip.Show() ;
}
Delay(200) ;
pour (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 0,0,0) ;
Strip.Show() ;
}
Delay(50) ;
pour (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 255,255,0) ;
Strip.Show() ;
}
Delay(40) ;
pour (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 0,0,0) ;
Strip.Show() ;
}
Delay(20) ;
pour (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 255,255,255) ;
Strip.Show() ;
}
Delay(200) ;
pour (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 0,0,0) ;
Strip.Show() ;
}
Delay(1000) ;
pour (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 255,255,255) ;
Strip.Show() ;
}
Delay(200) ;
pour (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 0,0,0) ;
Strip.Show() ;
}
retard (100) ;
pour (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 255,255,0) ;
Strip.Show() ;
}
Delay(100) ;
pour (int i = 0; i < 29; i ++) {}
strip.setPixelColor (i, 0,0,0) ;
Strip.Show() ;
}
Delay(3000) ;
}
Emprunté et adapté de https://github.com/EternalCore/NeoPixel_Cylon_Scrolling_Eye/blob/master/NeoPixel_Cylon_Eye.ino
void CylonEyeUp (uint32_t Co, uint32_t Ct, Ctt uint32_t, retard uint8_t, int TotalPixels, int pStart) {}
pour (int i = pStart; i < TotalPixels; i ++) {}
if (!. UsingBar) {strip.setPixelColor (i + 2, Ctt);} //Third Dot couleur
strip.setPixelColor (i + 1, TC) ; Deuxième point couleur
strip.setPixelColor (i, Co) ; Centre point couleur
strip.setPixelColor (i-1, Ct) ; Deuxième point couleur
if (!. UsingBar) {strip.setPixelColor (i-2, Ctt);} //Third Dot couleur
if (!. UsingBar) {}
strip.setPixelColor (i-3, bande. Color(0,0,0)) ; Efface les points après la 3ème couleur
} else {}
strip.setPixelColor (i-2, bande. Color(0,0,0)) ; Efface les points après la 2ème couleur
}
Strip.Show() ;
Serial.println(i) ; Utilisé pour pixel Count débogage
Delay(Delay) ;
}
}
void CylonEyeDown (uint32_t Co, uint32_t Ct, Ctt uint32_t, retard uint8_t, int TotalPixels, int pEnd) {}
pour (int i = TotalPixels-1; i > pEnd; i--) {}
if (!. UsingBar) {strip.setPixelColor (i-2, Ctt);} //Third Dot couleur
strip.setPixelColor (i-1, Ct) ; Deuxième point couleur
strip.setPixelColor (i, Co) ; Centre point couleur
strip.setPixelColor (i + 1, TC) ; Deuxième point couleur
if (!. UsingBar) {strip.setPixelColor (i + 2, Ctt);} //Third Dot couleur
if (!. UsingBar) {}
strip.setPixelColor (i + 3, de la bande. Color(0,0,0)) ; Efface les points après la 3ème couleur
} else {}
strip.setPixelColor (i + 2, de la bande. Color(0,0,0)) ; Efface les points après la 2ème couleur
}
Strip.Show() ;
Serial.println(i) ; Utilisé pour pixel Count débogage
Delay(Delay) ;
}
}