Luta aktiverat moln ljus (9 / 12 steg)

Steg 9: Programmeringsdel 4: montering av programmet

Vi är nästan där!

Det är lättare för mig att förklara vad som händer i programmet genom att kommentera på delar nedan.

Början av koden

#include < Adafruit_NeoPixel.h >

#define PIN 13 //identifies stift 13 anslutna till neopixels

CONST int wait_T = 40;
CONST int ACCEL_PIN = A0;
CONST int PixelCount = 29. / / jag har 29 neopixels

CONST int MAX_AREAD = 370 och Bull. / / Detta avsnitt fastställs högsta, minimum, median och medianvärdet fönster för programmet.
CONST int MIN_AREAD = 280;
CONST int MID_AREAD = 325;
CONST int MID_WINDOW = 10;
CONST int TILT_TIME = 10; sekunder / / hur lång tid behövs bo i fönstret för att välja ett nytt ljus mönster

CONST int Pixel_Start_End = 0; //Settings för random light mönster generator
CONST boolean UsingBar = false;
int random_pick = 0;
booleska pick_new_random = sant;
int accel_read = 0;
osignerade långa time_keeper = 0;

Adafruit_NeoPixel strip = Adafruit_NeoPixel (PixelCount, stift, NEO_GRB + NEO_KHZ800);

void setup() {
Serial.BEGIN(57600);
Strip.BEGIN(); / / Start Strip
Strip.show(); / / Initiera alla pixlar till "off"
pinMode (ACCEL_PIN, indata); / / Konfigurera Accelerometer analog läsa pin
randomSeed(analogRead(A3));
}

här är där åtgärd diagrammet är kodade:

void loop() {

Läsa värdet accelerometer
accel_read = analogRead(ACCEL_PIN);

Plocka en ny slumpmässig om det är dags att.
om (pick_new_random == true) {
random_pick = random(6);
pick_new_random = false;
}

När accelerometer värdet är innanför fönstret plockar den från följande funktioner
om ((accel_read > MID_AREAD - MID_WINDOW) & & (accel_read < MID_AREAD + MID_WINDOW)) {
om (random_pick == 0) {
ThunderAccel();
} annat if(random_pick == 1) {
PatternOne();
} annat if(random_pick == 2) {
PatternTwo();
} annat if(random_pick == 3) {
PatternThree();
} annat if(random_pick == 4) {
PatternFour();
} annat if(random_pick == 5) {
PatternFive();
} annat if(random_pick == 6) {
PatternSix();
}
} annat {
time_keeper = millis();

medan ((millis() - time_keeper) < TILT_TIME * 1000) {
color_tilt();
}

pick_new_random = sant;

}

}

annars kommer att koden göra följande vippande mönster
void setStripColor (int rött, grönt, int int blå) {
för (int jag = 0; jag < 29; i ++) {
strip.setPixelColor (i, röd, grön, blå);
}
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);

för (int jag = 0; jag < strip.numPixels(); i ++) {
strip.setPixelColor (i, 255-accel_value, 0, accel_value);
Strip.show();
Delay(2);
}
}

Följande är alla lätta mönster funktioner

void PatternOne() {
CylonEyeUp (remsa. Color(255,255,255), band. Color(0,255,255), band. Color(255,255,255), wait_T, PixelCount, Pixel_Start_End);
Delay(wait_T);
Exempel: CylonEyeDown (Center_Dot_Color, Second_Dot_color, Third_Dot_color, wait_T, PixelCount, Pixel_Start_End);
CylonEyeDown (remsa. Color(255,255,255), band. Color(0,255,255), band. Color(255,255,255), wait_T, PixelCount, Pixel_Start_End);
Delay(wait_T);
}

void PatternTwo() {
för (int jag = 0; jag < 102; i ++) {
setStripColor (i, (204 - i * 2), 204);
Delay(20);
}
för (int jag = 0; jag < 102; i ++) {
setStripColor (102-i, (jag * 2), 204);
Delay(20);
}
}

void PatternThree() {

för (int jag = 0; jag < 255; i ++) {
setStripColor 255, i, 0.
Delay(20);
}
för (int jag = 255; jag > 0; i--) {
setStripColor 255, i, 0.
Delay(20);
}
Delay(1000);
}

void PatternFour() {

för (int jag = 0; jag < 127; i ++) {
setStripColor (255-i * 2, 255-i, 255);
Delay(20);
}
för (int jag = 0; jag < 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() {

för (int jag = 0; jag < 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();
}

för (int jag = 255; jag > 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() {

för (int jag = 0; jag < 29; i ++) {
strip.setPixelColor i, 255,255,255.
Strip.show();
}
Delay(200);

för (int jag = 0; jag < 29; i ++) {
strip.setPixelColor (i, 0,0,0);
Strip.show();
}
fördröjning (100);

för (int jag = 0; jag < 29; i ++) {
strip.setPixelColor i, 255,255,0.
Strip.show();
}
Delay(200);

för (int jag = 0; jag < 29; i ++) {
strip.setPixelColor (i, 0,0,0);
Strip.show();
}
Delay(50);

för (int jag = 0; jag < 29; i ++) {
strip.setPixelColor i, 255,255,0.
Strip.show();
}
Delay(40);

för (int jag = 0; jag < 29; i ++) {
strip.setPixelColor (i, 0,0,0);
Strip.show();
}
Delay(20);

för (int jag = 0; jag < 29; i ++) {
strip.setPixelColor i, 255,255,255.
Strip.show();
}
Delay(200);

för (int jag = 0; jag < 29; i ++) {
strip.setPixelColor (i, 0,0,0);
Strip.show();
}
Delay(1000);

för (int jag = 0; jag < 29; i ++) {
strip.setPixelColor i, 255,255,255.
Strip.show();
}
Delay(200);

för (int jag = 0; jag < 29; i ++) {
strip.setPixelColor (i, 0,0,0);
Strip.show();
}
fördröjning (100);

för (int jag = 0; jag < 29; i ++) {
strip.setPixelColor i, 255,255,0.
Strip.show();
}
Delay(100);

för (int jag = 0; jag < 29; i ++) {
strip.setPixelColor (i, 0,0,0);
Strip.show();
}
Delay(3000);
}

Lånat och anpassad från 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 dröjsmål, int TotalPixels, int pStart) {
för (int jag = pStart; jag < TotalPixels; i ++) {
IF (!. UsingBar) {strip.setPixelColor (i + 2, Ctt);} //Third Dot färg
strip.setPixelColor (jag + 1, Ct); Andra Dot färg
strip.setPixelColor (i, Co); Center Dot färg
strip.setPixelColor (i-1, Ct); Andra Dot färg
IF (!. UsingBar) {strip.setPixelColor (i-2, Ctt);} //Third Dot färg

IF (!. UsingBar) {
strip.setPixelColor (i-3, strip. Color(0,0,0)); Rensar prickar efter den 3: e färgen
} annat {
strip.setPixelColor (i-2, strip. Color(0,0,0)); Rensar prickar efter 2rd färg
}
Strip.show();
Serial.println(i); Används till pixel Count-felsökning
Delay(delay);
}
}
void CylonEyeDown (uint32_t Co, uint32_t Ct, uint32_t Ctt, uint8_t dröjsmål, int TotalPixels, int pEnd) {
för (int jag = TotalPixels-1; jag > pEnd; i--) {
IF (!. UsingBar) {strip.setPixelColor (i-2, Ctt);} //Third Dot färg
strip.setPixelColor (i-1, Ct); Andra Dot färg
strip.setPixelColor (i, Co); Center Dot färg
strip.setPixelColor (jag + 1, Ct); Andra Dot färg
IF (!. UsingBar) {strip.setPixelColor (i + 2, Ctt);} //Third Dot färg

IF (!. UsingBar) {
strip.setPixelColor (i + 3, band. Color(0,0,0)); Rensar prickar efter den 3: e färgen
} annat {
strip.setPixelColor (i + 2, remsa. Color(0,0,0)); Rensar prickar efter 2rd färg
}
Strip.show();
Serial.println(i); Används till pixel Count-felsökning
Delay(delay);
}
}

Se Steg
Relaterade Ämnen

LED moln ljus

Detta ljusa och mångsidig moln ljus kan vara stora eller små, ändra eller vit och hängde från taket eller fristående! Tillverkad i huvudsak papper lanternor och bomull vadd, är molnet lätt att montera och lätt. Lampor är små och batteridriven så att...

Lätt programmerbar LED moln ljus

Jag läste artikeln "CLOUD lampor få THE MAGIC av THE utomhus insidan" postat av RACHAEL BERKEY ON mars 26, 2016.Jag kopiera hans idé och använda den ws2812 led strippen (en av neopixel) och blinkytape controller och avsluta mitt eget moln ljus i...

Luta aktiverat växla

det är en 3 position SPDT strömbrytare som stänger (på) när lutas. Tillverkad med 3 bitar av plast, en bricka, och tre maskinskruvar + nötter. Jag gjorde den här växeln som en hacka för en billig r/c bil controller, inspirerad av wiimote kontrollerad...

Snabb Tips #3 - snabb och enkel rörelse aktiverat cykel chef ljus

Min El-cykel ledde huvudet ljus inte hade arbetat sedan jag fick den. Så... vad göra vad göra...?Jag bestämde mig snarare än avfall strålkastare eftersom den ser bra ut på cykeln, tills jag kan fixa det på rätt sätt, jag var tvungen att tillfälligt t...

Hur man lägger ut en ljus magi (party trick!)

detta instructable visar dig hur du skapar co2 använder hus håll produkter sedan använda gasen för att släcka ett ljus som "magic". Detta instructable behöver en förälder hjälp som flames är inblandade.Steg 1: Lägga till i bikarbonat Placera ca...

Awesome anpassade fall (från $20 - $2000)

En översikt: Detta instructable kommer att utbilda dig på de olika teknikerna för att skapa awesomely anpassade fall. Varje steg vandrar du genom snabb & billig val till eftertänksam, mer hantverksmässig alternativ. Detta instructable är lämplig för...

Kartong radiostyrda K-9, som talar

Läkare som har haft många följeslagare genom åren, och när fans får frågan "Vem är din favorit Dr Who kamrat?", kommer du oftast höra svar som Rose Tyler, Sarah-Jane Smith, kapten jack Harkness, Leela och Jamie McCrimmon bland några andra. Men n...

Programmerbara Motion Sensing Night Light

Jag har alltid svårt att hitta strömbrytare under mitten av natten i mörkret eller går in i ett kolsvart rum när jag kommer hem. Det är varför jag skapat denna anpassade och programmerbara nattlampa.Jag vill ha följande kriterier för denna anpassad d...

Kartong radiostyrda Dalek

"Läkare Whoo oo, HEY, Doctor Who, läkare Whoo oo, HEY, The T.A.R.D.I.S". Vem minns den lilla pärla av en låt (eller inte lika omständigheterna ;-) från 1988 av The Timelords (AKA The KLF). Det var ändå inte den inspiration jag fick för att start...

Bygga en ingefära bröd hus

Detta Instructable var ursprungligen endast ett foto Instructable men nu har konverterats till en steg för steg Instructable så att du kan bättre se de kommentarer som jag lagt till bilder. Jag hoppas du njuta av denna översyn.Färdiga ingefära bröd h...

Den ultimata bil Camping Setup

Jag har camping hela mitt liv, mestadels med min familj i våra RV. Nu som är roligt och ett bra sätt att resa utan om två år sedan började jag verkligen camping med mina vänner. Du vet, rakt upp camping i ett tält utanför med en lägereld. "Riktiga&qu...

Tilt switch aktiverat, glödande pappersmodell, LED-ljus

detta instructable visar hur man skapar pappersmodeller,som lyser när du slår dem runt.Det enda du behöver är några enkla elektronik!För detta projekt använde jag papper mall av en diamant,du hittar dem här: http://www.minieco.co.uk/paper-gems-new-te...

Rörelse detektor aktiverat fåfänga ljus

Jag köpte en infraröd rörelse detektorenhet på eBay för $1,50 och beslutade att lägga den till god användning. Kunde jag ha gjort min egen rörelse detektor ombord, men på $1,50 (som inkluderar 2 trim krukor för att justera känsligheten och avstängd t...

Hand gest styrd robot med ljud aktiverat ljus system

I detta Instructable visar jag steg för steg instruktion för hur man gör finger styrd robot med ljud aktiverat ljus systemdenna robot kan styras med fingrarna fyra av din hand(left/right). Och roboten växla automatiskt på/av dess ljus när det behövs...

Ljud aktiverat ljus för klockan

Har du någonsin omkull något bara för att du ville kolla tiden på natten?Du vaknar mitt i natten som undrar vad det är.Vad händer om larmet fungerade inte och du har sovit!På vintern när det är mörkt ute, är det lätt att bli förvirrad.Jag gillar inte...

Ljus-aktiverat öppna kylskåpsdörren larm

Denna hörbart / visuella larm krets börjar en kort tid efter ljus träffar LDR(light beroende motstånd) . Om larmet är inne i kylskåpet, kommer den att utlösas av yttre ljus (när dörren är öppen) och inre lampan. Det är en mycket vanlig vana att lämna...

Webb aktiverat lata studie ljus Controller

Detta Instructable är en skriva upp på min första någonsin Arduino projekt.Som är i allmänhet fallet med hobby ingenjörer, jag funderat länge och mycket att komma med ett projekt som var inte bara cool men har några faktiska praktiskt värde. Detta va...

Bromsning aktiverat bakre Bike ljus

jag fick uttråkad och beslöt att befria min gamla dynamo ljus,så jag rensad, och fast lampan till 3 AAA batterier och leda 2 leder ut på sidan av lätta höljet,Jag sprang sedan kablarna till båda sidor av skivan/bromsok, för armen som inte skulle vara...

Fot aktiverat ljus upp ansiktet

en Halloween inför en fågelskrämma som lyser upp när fotpedalen är klev på.Steg Switch denna länk visar den grundläggande idén för växeln steg som jag använde. Jag inte löda något för detta projekt, som jag ville att det skulle vara ett projekt som s...