Përmbajtje:
Video: Ora e Pasqyrës Infinity Me Potenciometra: 3 Hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:12
Kam hasur në pasqyrën e pafundësisë dhe e kam parë të jetë vërtet e lezetshme. Kjo më frymëzoi të bëja një pasqyrë të pafundme, por më duhej që ajo të kishte një qëllim. Kështu, vendosa të bëj një orë pasqyre funksionuese të pafundësisë. Kjo është një pasqyrë e pafundësisë që ju lejon të ndryshoni mënyrat, shpejtësinë dhe ngjyrat duke përdorur potenciometra. (Shënim: Kjo është hera ime e parë që bëj diçka të tillë)
Furnizimet
Le të futemi në atë që ju nevojitet për ta bërë këtë gjë!
Ju do të keni nevojë…
1) 1 Arduino Uno
3) 1 Breadboard
4) 1 Çelës rrëshqitës
5) 3 Potenciometra
6) 1 bateri 9V
7) Rrip LED 5 metrash WS2811
8) Telat e kabllove kërcyes
9) Një orë (Ora që kam përdorur 12 orë të madhe Ora moderne e madhe)
10) Fletë fleksibël pasqyre (ajo që kam përdorur fletë pasqyre)
11) Filmi i privatësisë (ai që kam përdorur One Way Mirror)
12) Mund të kërkohet bashkim, kjo varet nga materialet që keni
Hapi 1: Instalimet elektrike
Lidhja është mjaft e thjeshtë
- Ndërprerësi SPST ndez dhe fik LED -at (A0)
- Potenciometri i majtë kontrollon dritën (A1)
- Potenciometri i mesëm kontrollon mënyrat (A2)
- Potenciometri i duhur kontrollon shpejtësinë (A3)
Hapi 2: Kodi
#përfshi
#përcaktoni PIN -in 6
#përcaktoni NUM_LEDS 54
#përcakto A0 A0
#përcakto A1 A1
#përcaktoni A2 A2
#përcaktoni A3 A3
// Parametri 1 = numri i pikseleve në shirit
// Parametri 2 = numri i kunjit (shumica janë të vlefshme)
// Parametri 3 = flamujt e tipit pixel, shtoni së bashku sipas nevojës:
// NEO_KHZ800 800 KHz bitstream (shumica e produkteve NeoPixel me LED LED WS2812)
// NEO_KHZ400 400 KHz (klasike 'v1' (jo v2) pixel FLORA, drejtues WS2811)
// NEO_GRB Pixel -et janë të lidhur për bitstream GRB (shumica e produkteve NeoPixel)
// Pixel -at NEO_RGB janë të lidhur për transmetim bit RGB (v1 piksela FLORA, jo v2)
Rrip Adafruit_NeoPixel = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
void setup () {
strip.filloj ();
shirit.shfaq (); // Filloni të gjithë pikselët në "jo"
}
lak void () {
nëse (analogRead (A0)> = 512) {
nëse (analogRead (A2)> = 768) {
nëse (analogRead (A3)> = 768) {
rainbowCycle (80, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} tjetër nëse (analogRead (A3)> = 512) {
rainbowCycle (60, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} tjetër nëse (analogRead (A3)> = 256) {
rainbowCycle (40, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
tjeter {
rainbowCycle (20, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
} tjetër nëse (analogRead (A2)> = 512) {
nëse (analogRead (A1)> = 768) {
CylonBounce (i rastësishëm (255), i rastësishëm (255), i rastësishëm (255), 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} tjetër nëse (analogRead (A1)> = 512) {
CylonBounce (rastësore (255), 0, 0, 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} tjetër nëse (analogRead (A1)> = 256) {
CylonBounce (0, rastësor (255), 0, 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
tjeter {
CylonBounce (0, 0, rastësor (255), 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
} tjetër nëse (analogRead (A2)> = 256) {
nëse (analogRead (A1)> = 768) {
bajt r, g, b;
r = rastësore (255);
g = rastësore (255);
b = rastësore (255);
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} tjetër nëse (analogRead (A1)> = 512) {
byte r, g, b;
r = rastësore (255);
g = 0;
b = 0;
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} tjetër nëse (analogRead (A1)> = 256) {
byte r, g, b;
r = 0;
g = rastësore (255);
b = 0;
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
tjeter {
byte r, g, b;
r = 0;
g = 0;
b = rastësore (255);
meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
}
tjetër {if (analogRead (A1)> = 768) {
RunningLights (të rastësishme (255), të rastësishme (255), të rastësishme (255), analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} tjetër nëse (analogRead (A1)> = 512) {
RunningLights (rastësore (255), 1, 1, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
} tjetër nëse (analogRead (A1)> = 256) {
RunningLights (1, rastësore (255), 1, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
tjeter {
RunningLights (1, 1, rastësor (255), analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));
}
}
} tjetër {
setAll (0, 0, 0);
}
}
void rainbowCycle (int SpeedDelay, int oldA0, int oldA1, int oldA2, int oldA3) {
bajt *c;
uint16_t i, j;
për (j = 0; j <256*5; j ++) {// 5 cikle të të gjitha ngjyrave në timon
nëse (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((e vjetërA3+256)
pushim;
}
për (i = 0; i <NUM_LEDS; i ++) {
nëse (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((e vjetërA3+256)
pushim;
}
c = Rrota (((i * 256 / NUM_LEDS) + j) & 255);
setPixel (i, *c, *(c+1), *(c+2));
}
showStrip ();
vonesë (SpeedDelay);
}
}
byte * Rrota (byte WheelPos) {
bajt statik c [3];
nëse (WheelPos <85) {
c [0] = WheelPos * 3;
c [1] = 255 - WheelPos * 3;
c [2] = 0;
} tjetër nëse (WheelPos <170) {
WheelPos -= 85;
c [0] = 255 - WheelPos * 3;
c [1] = 0;
c [2] = WheelPos * 3;
} tjetër {
WheelPos -= 170;
c [0] = 0;
c [1] = WheelPos * 3;
c [2] = 255 - WheelPos * 3;
}
kthimi c;
}
void CylonBounce (byte e kuqe, byte jeshile, byte blu, int EyeSize, int oldA0, int oldA1, int oldA2, int oldA3) {
int SpeedDelay;
int ReturnVonesa;
nëse (analogRead (A3)> = 768) {SpeedDelay = 80; ReturnDelay = 120;}
përndryshe nëse (analogRead (A3)> = 512) {SpeedDelay = 60; ReturnDelay = 100;}
përndryshe nëse (analogRead (A3)> = 256) {SpeedDelay = 40; ReturnDelay = 80;}
tjetër {SpeedDelay = 20; ReturnDelay = 60;}
për (int i = 0; i <NUM_LEDS-EyeSize-2; i ++) {
nëse (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((e vjetërA3+256)
pushim;
}
setAll (0, 0, 0);
setPixel (i, e kuqe/10, jeshile/10, blu/10);
për (int j = 1; j <= Madhësia e syrit; j ++) {
nëse (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((e vjetërA3+256)
pushim;
}
setPixel (i+j, e kuqe, jeshile, blu);
}
setPixel (i+EyeSize+1, e kuqe/10, jeshile/10, blu/10);
showStrip ();
vonesë (SpeedDelay);
}
vonesë (ReturnDelay);
për (int i = NUM_LEDS-madhësia e syrit-2; i> 0; i--) {
setAll (0, 0, 0);
setPixel (i, e kuqe/10, jeshile/10, blu/10);
nëse (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((e vjetërA3+256)
pushim;
}
për (int j = 1; j <= Madhësia e syrit; j ++) {
nëse (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((e vjetërA3+256)
pushim;
}
setPixel (i+j, e kuqe, jeshile, blu);
}
setPixel (i+EyeSize+1, e kuqe/10, jeshile/10, blu/10);
showStrip ();
vonesë (SpeedDelay);
}
vonesë (ReturnDelay);
}
void RunningLights (byte e kuqe, byte jeshile, byte blu, int oldA0, int oldA1, int oldA2, int oldA3) {
int Pozicioni = 0;
int WaveDelay;
nëse (analogRead (A3)> = 768) {WaveDelay = 80;}
përndryshe nëse (analogRead (A3)> = 512) {WaveDelay = 60;}
përndryshe nëse (analogRead (A3)> = 256) {Vonesa me Vala = 40;}
tjetër {Vonesa me Vala = 20;}
për (int j = 0; j
{
nëse (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((e vjetërA3+256)
pushim;
}
Pozicioni ++; // = 0; // Pozicioni + Norma;
për (int i = 0; i
// valë sinus, 3 valë të kompensuara bëjnë një ylber!
// niveli i notimit = mëkati (i + Pozicioni) * 127 + 128;
// setPixel (i, niveli, 0, 0);
// niveli i notimit = mëkati (i + Pozicioni) * 127 + 128;
nëse (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((e vjetërA3+256)
pushim;
}
setPixel (i, ((mëkati (i + Pozicioni) * 127 + 128)/255) * e kuqe, ((mëkati (i + Pozicioni) * 127 + 128)/255) * e gjelbër, ((mëkati (i + Pozicioni) * 127 + 128)/255) * blu);
}
showStrip ();
vonesa (WaveDelay);
}
}
meteor i pavlefshëm Shiu (bajt i kuq, bajt jeshil, bajt blu, meteor bajt Madhësia, meteor byteTrailDecay, meteor booleanRastomitet Dhimbje, int oldA0, int oldA1, int oldA2, int oldA3) {
setAll (0, 0, 0);
int SpeedDelay;
nëse (analogRead (A3)> = 768) {SpeedDelay = 80;}
përndryshe nëse (analogRead (A3)> = 512) {SpeedDelay = 60;}
përndryshe nëse (analogRead (A3)> = 256) {SpeedDelay = 40;}
tjetër {SpeedDelay = 20;}
për (int i = 0; i <NUM_LEDS+NUM_LEDS; i ++) {
nëse (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((e vjetërA3+256)
pushim;
}
// zbeh shkëlqimin e të gjitha LED -ve një hap
për (int j = 0; j
nëse (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((e vjetërA3+256)
pushim;
}
nëse ((! meteorRandomDecay) || (rastësore (10)> 5)) {
fadeToBlack (j, meteorTrailDecay);
}
}
// vizatoni meteor
për (int j = 0; j <meteorSize; j ++) {
nëse (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((e vjetërA3+256)
pushim;
}
nëse ((i-j = 0)) {
setPixel (i-j, e kuqe, jeshile, blu);
}
}
showStrip ();
vonesë (SpeedDelay);
}
}
void fadeToBlack (int ledNo, byte fadeValue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
uint32_t oldColor;
uint8_t r, g, b;
vlera int;
oldColor = strip.getPixelColor (ledNo);
r = (oldColor & 0x00ff0000UL) >> 16;
g = (oldColor & 0x0000ff00UL) >> 8;
b = (oldColor & 0x000000ffUL);
r = (r <= 10)? 0: (int) r- (r*zbehetVlera/256);
g = (g <= 10)? 0: (int) g- (g*zbehetVlera/256);
b = (b <= 10)? 0: (int) b- (b*zbehetVlera/256);
strip.setPixelColor (ledNo, r, g, b);
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds [ledNo].fadeToBlackBy (zbehetVlera);
#endif
}
// *** Zëvendësimi K HTU ***
void showStrip () {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
shirit.shfaq ();
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
FastLED.shfaq ();
#endif
}
void setPixel (int Pixel, byte e kuqe, byte jeshile, byte blu) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.setPixelColor (Pixel, strip. Color (e kuqe, jeshile, blu));
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds [Pixel].r = e kuqe;
leds [Pixel].g = jeshile;
leds [Pixel].b = blu;
#endif
}
i pavlefshëm Të gjitha (byte e kuqe, byte jeshile, byte blu) {
për (int i = 0; i <NUM_LEDS; i ++) {
setPixel (i, e kuqe, jeshile, blu);
}
showStrip ();
}
Hapi 3: Krijimi i Orës
Unë do të rekomandoja marrjen e një ore xhami që është e sheshtë nga brenda. Kur po aplikoja pasqyrën fleksibël në pjesën e brendshme të orës kishte një problem për shkak të numrave brenda orës që dilnin jashtë, pasqyra u përkul duke rezultuar në efektin e pasqyrës së pafundësisë që nuk ndodhi. Ju duhet të keni fletën fleksibël të pasqyrës dhe Filmin e Privacisë për të qenë sa më të sheshtë. Nëse po merrni një orë sigurohuni që mund ta vendosni LED -in brenda pa problem.
Hapi 1: Hapni orën dhe hiqni gotën e përparme
Hapi 2: Vendosni filmin e privatësisë në xhamin e përparmë (Kjo video ju tregon se si ta bëni)
Hapi 3: Aplikoni pasqyrën fleksibël në pjesën e brendshme të orës (Hiqni akrepat e orëve para se ta bëni këtë)
Hapi 4: Bëni një vrimë në mes që akrepat e orës të vendosen përsëri
Hapi 5: Vendosni shiritin LED rreth mureve të brendshme të orës (kam përdorur një armë zam të nxehtë për këtë hap)
Hapi 6: Ndizni shiritin LED dhe vendosni gotën në krye të orës për të parë nëse efekti i pasqyrës së pafundësisë është atje
Hapi 7: Pasi të keni mbaruar me gjithçka vendosni orën së bashku dhe lërini telat të kalojnë në pjesën e pasme
Hapi 8: Urime që keni përfunduar projektin dhe gjithçka duhet të funksionojë mirë
Nëse keni ndonjë pyetje, ju lutemi komentoni ato më poshtë (dijeni që mund të mos jem në gjendje të përgjigjem, por do të bëj çmos)
Recommended:
Bëni një Kub të Pasqyrës së Pafundësisë së Lehtë - JO Printim 3D dhe JO Programim: 15 hapa (me fotografi)
Bëni një Kub të Pasqyrës së Pafundësisë së Lehtë | JO Printim 3D dhe JO Programim: Të gjithëve u pëlqen një kub i mirë pafundësi, por ato duken sikur do të ishin të vështira për t'u bërë. Qëllimi im për këtë Instructable është t'ju tregoj hap pas hapi se si ta bëni atë. Jo vetëm kaq, por me udhëzimet që po ju jap, do të keni mundësi të bëni një
Një Galaxy në dorën tuaj! Kutia e pasqyrës së pafundësisë: 3 hapa (me fotografi)
Një Galaxy në dorën tuaj! Kutia e pasqyrës së pafundësisë: Ky mësim ka të bëjë me krijimin e një forme të vogël që krijon shumë reflektime brenda. Me vrima në çdo kënd për dritën dhe një dritare të vogël për të parë, ju mund të shikoni këtë proces pafundësie në dorën tuaj! Ideja erdhi nga shikimi i pafundësisë mirr
Ekrani i pasqyrës: 8 hapa
Mirror Display: Qëllimi i këtij projekti është të krijojë funksionalitetin e shfaqjes së imazhit të një Smart Mirror. Pasqyra është në gjendje të shfaqë parashikimet (me diell, pjesërisht me diell, me re, me erë, shi, bubullima dhe borë) dhe vlerat e temperaturës nga -9999 ° në 9999 °. Parashikimi dhe
Ora e pasqyrës Infinity: 5 hapa (me fotografi)
Infinity Mirror Clock: Kjo është një orë e punuar me dorë kryesisht për zbukurim. Ka disa drita LED në orë, kur ndizet, është një dekorim i bukur për dhomën e gjumit. Kur fiket, është një pasqyrë e vogël. Sigurisht, është një orë në vetvete
Ndërtoni një Arduino në një Nissan Qashqai për të automatizuar palosjen e pasqyrës së krahut ose ndonjë gjë tjetër: 9 hapa (me fotografi)
Ndërtoni një Arduino në një Nissan Qashqai për të automatizuar palosjen e pasqyrës së krahut ose ndonjë gjë tjetër: Nissan Qashqai J10 ka disa gjëra pak të bezdisshme në lidhje me kontrollet që mund të jenë lehtësisht më të mira. Njëra prej tyre është të mbani mend të shtyni çelësin e hapjes/mbylljes së pasqyrave para se të hiqni çelësin nga ndezja. Një tjetër është konfigurimi i vogël