Përmbajtje:

Ora e Pasqyrës Infinity Me Potenciometra: 3 Hapa
Ora e Pasqyrës Infinity Me Potenciometra: 3 Hapa

Video: Ora e Pasqyrës Infinity Me Potenciometra: 3 Hapa

Video: Ora e Pasqyrës Infinity Me Potenciometra: 3 Hapa
Video: ПРИЗРАКИ ПОКАЗАЛИ СЕБЯ ЧЕРЕЗ НЕЙРОСЕТИ / СУЩНОСТЬ ПРОНИКЛА В МОЮ КВАРТИРУ ИЗ ЗЕРКАЛА 2024, Korrik
Anonim
Orë Pasqyre Infinity Me Potenciometra
Orë Pasqyre Infinity Me Potenciometra

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

Instalime elektrike
Instalime elektrike
Instalime elektrike
Instalime 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

Krijimi i Ores
Krijimi i Ores
Krijimi i Ores
Krijimi i Ores
Krijimi i Ores
Krijimi i Ores

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: