Stap 9: Programmeren-deel 4: montage van het programma
We zijn er bijna!Het is makkelijker voor mij om uit te leggen wat er gebeurt in het programma door te reageren op delen hieronder.
Begin van de code
#include < Adafruit_NeoPixel.h >
#define PIN 13 //identifies pin 13 aangesloten op de neopixels
Const int wait_T = 40;
Const int ACCEL_PIN = A0;
Const int PixelCount = 29; / / ik heb 29 neopixels
Const int MAX_AREAD = 370; / / Deze sectie stelt het maximum, minimum, mediaan en mediaan venster voor het programma.
Const int MIN_AREAD = 280;
Const int MID_AREAD = 325;
Const int MID_WINDOW = 10;
Const int TILT_TIME = 10; in seconden / / de hoeveelheid tijd die nodig is voor een verblijf in het venster om te kiezen van een nieuwe licht patroon
Const int Pixel_Start_End = 0; //Settings voor de generator van willekeurige lichtpatroon
Const Boole UsingBar = false;
int random_pick = 0;
Boole pick_new_random = waar;
int accel_read = 0;
unsigned long time_keeper = 0;
Adafruit_NeoPixel strip = Adafruit_NeoPixel (PixelCount, PIN, NEO_GRB + NEO_KHZ800);
VOID Setup {}
Serial.begin(57600);
strip.begin(); / / Opstarten Strip
strip.show(); / / Initialiseren van alle pixels op 'off'
pinMode (ACCEL_PIN, INPUT); / / Configureren versnellingsmeter analoge Lees pin
randomSeed(analogRead(A3));
}
Hier is waar de grafiek van de actie is gecodeerd:
void loop {}
/ / De waarde van de versnellingsmeter Lees
accel_read = analogRead(ACCEL_PIN);
/ / Kies een nieuwe willekeurige als it's time to.
Als (pick_new_random == true) {}
random_pick = random(6);
pick_new_random = false;
}
Wanneer de waarde van de versnellingsmeter binnen het venster is pakt het van de volgende functies
Als ((accel_read > MID_AREAD - MID_WINDOW) & & (accel_read < MID_AREAD + MID_WINDOW)) {}
Als (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();
terwijl ((millis() - time_keeper) < TILT_TIME * 1000) {}
color_tilt();
}
pick_new_random = true;
}
}
anders doet de code het volgende kantelbare patroon
VOID setStripColor (int rood, int GREEN, int blauw) {}
for (int i = 0; ik < 29; i ++) {}
strip.setPixelColor (i, rood, groen, blauw);
}
strip.show();
}
ongeldig 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);
for (int i = 0; ik < strip.numPixels(); i ++) {}
strip.setPixelColor (i, 255-accel_value, 0, accel_value);
strip.show();
delay(2);
}
}
Hieronder vindt u alle functies van het lichtpatroon
VOID PatternOne() {}
CylonEyeUp (strip. Color(255,255,255), strip. Color(0,255,255), strip. Color(255,255,255), wait_T, PixelCount, Pixel_Start_End);
delay(wait_T);
Voorbeeld: CylonEyeDown (Center_Dot_Color, Second_Dot_color, Third_Dot_color, wait_T, PixelCount, Pixel_Start_End);
CylonEyeDown (strip. Color(255,255,255), strip. Color(0,255,255), strip. Color(255,255,255), wait_T, PixelCount, Pixel_Start_End);
delay(wait_T);
}
VOID PatternTwo() {}
for (int i = 0; ik < 102; i ++) {}
setStripColor (i, (204 - i * 2), 204);
vertraging(20);
}
for (int i = 0; ik < 102; i ++) {}
setStripColor (102-i, (i * 2), 204);
vertraging(20);
}
}
VOID PatternThree() {}
for (int i = 0; ik < 255; i ++) {}
setStripColor (255, i, 0);
vertraging(20);
}
for (int i = 255; ik > 0; ik--) {}
setStripColor (255, i, 0);
vertraging(20);
}
delay(1000);
}
VOID PatternFour() {}
for (int i = 0; ik < 127; i ++) {}
setStripColor (255-i * 2, 255-i, 255);
vertraging(20);
}
for (int i = 0; ik < 127; i ++) {}
setStripColor (i * 2, 127 + i, 255);
vertraging(20);
}
delay(2000);
}
VOID PatternFive() {}
strip.setPixelColor (14, 255,255,255);
vertraging(20);
strip.setPixelColor (15, 255,255,255);
vertraging(20);
strip.setPixelColor (13, 255,255,255);
vertraging(20);
strip.setPixelColor (16, 255,255,255);
vertraging(20);
strip.setPixelColor (12, 255,255,255);
vertraging(20);
strip.setPixelColor (17, 204,255,255);
vertraging(20);
strip.setPixelColor (11, 204,255,255);
vertraging(20);
strip.setPixelColor (18, 204,255,255);
vertraging(20);
strip.setPixelColor (10, 204,255,255);
vertraging(20);
strip.setPixelColor (19, 204,255,255);
vertraging(20);
strip.setPixelColor (9, 204,255,255);
vertraging(20);
strip.setPixelColor (20, 0,128,255);
vertraging(20);
strip.setPixelColor (8, 0,128,255);
vertraging(20);
strip.setPixelColor (21, 0,128,255);
vertraging(20);
strip.setPixelColor (7, 0,128,255);
vertraging(20);
strip.setPixelColor (22, 0,128,255);
vertraging(20);
strip.setPixelColor (6, 0,128,255);
vertraging(20);
strip.setPixelColor (23, 0,128,255);
vertraging(20);
strip.setPixelColor (5, 0,128,255);
vertraging(20);
strip.setPixelColor (24, 0,128,255);
vertraging(20);
strip.setPixelColor (4, 0,128,255);
vertraging(20);
strip.setPixelColor (25, 0,128,255);
vertraging(20);
strip.setPixelColor (3, 0,128,255);
vertraging(20);
strip.setPixelColor (26, 0,0,255);
vertraging(20);
strip.setPixelColor (2, 0,0,255);
vertraging(20);
strip.setPixelColor (27, 0,0,255);
vertraging(20);
strip.setPixelColor (1, 0,0,255);
vertraging(20);
strip.setPixelColor (28, 0,0,255);
vertraging(20);
strip.setPixelColor (0, 0,0,255);
vertraging(20);
strip.setPixelColor (29, 0,0,255);
vertraging(20);
strip.show();
}
VOID PatternSix() {}
voor (int i = 0; ik < 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();
}
for (int i = 255; ik > 0; ik = 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() {}
for (int i = 0; ik < 29; i ++) {}
strip.setPixelColor (i, 255,255,255);
strip.show();
}
delay(200);
for (int i = 0; ik < 29; i ++) {}
strip.setPixelColor (i, 0,0,0);
strip.show();
}
vertraging (100);
for (int i = 0; ik < 29; i ++) {}
strip.setPixelColor (i, 255,255,0);
strip.show();
}
delay(200);
for (int i = 0; ik < 29; i ++) {}
strip.setPixelColor (i, 0,0,0);
strip.show();
}
delay(50);
for (int i = 0; ik < 29; i ++) {}
strip.setPixelColor (i, 255,255,0);
strip.show();
}
delay(40);
for (int i = 0; ik < 29; i ++) {}
strip.setPixelColor (i, 0,0,0);
strip.show();
}
vertraging(20);
for (int i = 0; ik < 29; i ++) {}
strip.setPixelColor (i, 255,255,255);
strip.show();
}
delay(200);
for (int i = 0; ik < 29; i ++) {}
strip.setPixelColor (i, 0,0,0);
strip.show();
}
delay(1000);
for (int i = 0; ik < 29; i ++) {}
strip.setPixelColor (i, 255,255,255);
strip.show();
}
delay(200);
for (int i = 0; ik < 29; i ++) {}
strip.setPixelColor (i, 0,0,0);
strip.show();
}
vertraging (100);
for (int i = 0; ik < 29; i ++) {}
strip.setPixelColor (i, 255,255,0);
strip.show();
}
delay(100);
for (int i = 0; ik < 29; i ++) {}
strip.setPixelColor (i, 0,0,0);
strip.show();
}
delay(3000);
}
Geleend en aangepast van https://github.com/EternalCore/NeoPixel_Cylon_Scrolling_Eye/blob/master/NeoPixel_Cylon_Eye.ino
VOID CylonEyeUp (uint32_t Co uint32_t Ct, uint32_t Ctt, uint8_t vertraging, int TotalPixels, int pStart) {}
for (int i = pStart; ik < TotalPixels; i ++) {}
if (!. UsingBar) {strip.setPixelColor (i + 2, Ctt);} //Third Dot kleur
strip.setPixelColor (i + 1, Ct); Tweede kleur van de stip
strip.setPixelColor (i, Co); Middelste Dot kleur
strip.setPixelColor (i-1, Ct); Tweede kleur van de stip
if (!. UsingBar) {strip.setPixelColor (i-2, Ctt);} //Third Dot kleur
if (!. UsingBar) {}
strip.setPixelColor (i-3, strip. Color(0,0,0)); Hiermee wist u de puntjes na de 3de kleur
} else {}
strip.setPixelColor (i-2, strip. Color(0,0,0)); Hiermee wist u de puntjes na de 2rd kleur
}
strip.show();
Serial.println(i); Gebruikt voor pixel graaf foutopsporing
delay(delay);
}
}
VOID CylonEyeDown (uint32_t Co uint32_t Ct, uint32_t Ctt, uint8_t vertraging, int TotalPixels, int pEnd) {}
voor (int i = TotalPixels-1; ik > Premier Inn London Hampstead; i--) {}
if (!. UsingBar) {strip.setPixelColor (i-2, Ctt);} //Third Dot kleur
strip.setPixelColor (i-1, Ct); Tweede kleur van de stip
strip.setPixelColor (i, Co); Middelste Dot kleur
strip.setPixelColor (i + 1, Ct); Tweede kleur van de stip
if (!. UsingBar) {strip.setPixelColor (i + 2, Ctt);} //Third Dot kleur
if (!. UsingBar) {}
strip.setPixelColor (i + 3, strip. Color(0,0,0)); Hiermee wist u de puntjes na de 3de kleur
} else {}
strip.setPixelColor (i + 2, strip. Color(0,0,0)); Hiermee wist u de puntjes na de 2rd kleur
}
strip.show();
Serial.println(i); Gebruikt voor pixel graaf foutopsporing
delay(delay);
}
}