Përmbajtje:

Pasqyrë e pafundësisë Me sensorin LCD dhe IR: 5 hapa
Pasqyrë e pafundësisë Me sensorin LCD dhe IR: 5 hapa

Video: Pasqyrë e pafundësisë Me sensorin LCD dhe IR: 5 hapa

Video: Pasqyrë e pafundësisë Me sensorin LCD dhe IR: 5 hapa
Video: Mercedes Benz W203 Secret Function 2024, Korrik
Anonim
Pasqyrë Infinity Me LCD dhe Sensor IR
Pasqyrë Infinity Me LCD dhe Sensor IR
Pasqyrë Infinity Me LCD dhe Sensor IR
Pasqyrë Infinity Me LCD dhe Sensor IR
Pasqyrë Infinity Me LCD dhe Sensor IR
Pasqyrë Infinity Me LCD dhe Sensor IR

Ky projekt do t'ju tregojë se si mund të bëni një pasqyrë të pafundësisë. Koncepti themelor është që LED -të që janë në pasqyrë krijojnë dritë e cila kthehet nga pasqyra e pasme në pasqyrën e përparme ku disa dritë ikin në mënyrë që të shohim brenda dhe disa reflektohen prapa në pasqyrën e pasme dhe prodhojnë efektin e pafund. Kjo bazohet në Pasqyrën e Pafundësisë me Sensorë Ultra Zërit të Udhëzueshëm nga Hack Sioux Falls dhe Si ta Lidhni Ekranin I2C LCD me Arduino Uno nga JunezRiyaz.

Furnizimet

1. A Shadow Box (50 dollarë)

2. Film Mirror me 1 drejtim (17 dollarë)

3. Një shirit dritash LED RGB (30 dollarë)

4. Arduino (35 dollarë)

5. Një pasqyrë (10 dollarë)

Opsionale:

1. Sensori IR dhe telekomanda (20 dollarë)

2. Një LCD (20 dollarë)

3. 7 Lidhëset femra me meshkuj

4. 3 Lidhës meshkuj me meshkuj

Mjetet

1. Hekuri për saldim

2. Prerës dhe heqës telash

3. Me diçka për të prerë pasqyrën

*Vini re të gjitha çmimet në CAD dhe madhësitë do të varen nga kutia që përdorni.

Hapi 1: Instalimi i Mirror dhe Film Mirror

Instalimi i Mirror dhe Film Mirror
Instalimi i Mirror dhe Film Mirror
Instalimi i Mirror dhe Film Mirror
Instalimi i Mirror dhe Film Mirror

Gjëja e parë që duhet të bëni është të instaloni pasqyrën që do të jetë në pjesën e pasme të kutisë së hijes. Ju ose dëshironi të merrni një që është me madhësinë e duhur ose të merrni një që është më i madh dhe pastaj ta shkurtoni atë. Por për këtë, ju duhet të përdorni një pasqyrë dhe jo filmin sepse ne duam që e gjithë drita të reflektohet prapa, filmi i pasqyrës gjithashtu mund të marrë modelin e materialit në të cilin është nëse nuk është xhami.

Kur instaloni pasqyrën, sigurohuni që ta siguroni atë në kutinë e hijes, unë do të rekomandoja përdorimin e copave të vogla të drurit dhe thonjve për t'u siguruar që pasqyra nuk lëviz. Unë nuk kisha një pasqyrë në kohën që kisha për të përfunduar këtë projekt, kështu që unë përdor filmin (Ju mund ta shihni në fotografi). Koncepti funksionon por jo shumë mirë dhe jep një pamje të kënduar dhe kaotike që për mendimin tim nuk duket mirë.

Çdo film pasqyre do të jetë pak më ndryshe, por ai për të cilin thashë pastroni xhamin në të cilin e vendosim filmin, pastaj përdorni kasetë për të hequr filmin mbrojtës që është në njërën anë dhe duke përdorur ujë me sapun në sprucim shishe vendoseni filmin në gotë. Pastaj përdorni një kartë krediti ose fshirëse për të hequr qafe flluskat e ajrit dhe ujin e tepërt. Unë edhe një herë nuk kisha xham, por akoma funksionon njësoj. Pastaj lini gotën të thahet gjatë natës dhe duhet bërë.

Hapi 2: Vendosja e Rripit LED

Vendosja e shiritit LED
Vendosja e shiritit LED
Vendosja e shiritit LED
Vendosja e shiritit LED

Për LED -të sapo kam përdorur shiritin e përfshirë të dyanshëm për ta ngjitur në kornizë dhe kam bërë një vrimë që teli të dalë. Në çdo cep, unë bashkova lidhëset për t'u lidhur me një rrip tjetër për të mbajtur formën e kutisë pa skaje të rrumbullakosura. Sigurohuni që të shkurtoni shiritat vetëm në pikat ku ka kontakte që do të lejonin që të ndodhte një gjë e tillë dhe mos e ndërroni drejtimin që LED -të lidhen me njëri -tjetrin, i njohur si përmbysja e polaritetit. Shiriti që mora kishte shigjeta për t'u siguruar që kjo të mos ndodhte, prandaj sigurohuni që të kontrolloni që të gjithë po tregojnë në të njëjtin drejtim.

Bëra një vrimë të vogël për ta futur kabllon në pjesën e jashtme të kutisë, LED -të që kisha ishin LED me 3 Pin të adresueshëm, kështu që kisha lidhës të energjisë, tokëzimit dhe të dhënave. Kam përdorur Digital Pin 3 për lidhësin e të dhënave, sigurohuni që të testoni shiritat tuaj LED për t'u siguruar që funksionojnë para se t'i ngjitni në kornizë dhe sigurohuni që të përdorni vetëm tensionin e rekomanduar për atë tim që është 5 - 6 V.

Hapi 3: Montimi i sensorit IR dhe LCD (Opsionale)

Montimi i sensorit IR dhe LCD (Opsionale)
Montimi i sensorit IR dhe LCD (Opsionale)
Montimi i sensorit IR dhe LCD (Opsionale)
Montimi i sensorit IR dhe LCD (Opsionale)
Montimi i sensorit IR dhe LCD (Opsionale)
Montimi i sensorit IR dhe LCD (Opsionale)

Zgjodha të përdor një sensor IR dhe telekomandë për të ndryshuar efektet e ndriçimit dhe për të përdorur dhe një LCD për t'i treguar përdoruesit opsionet që kanë për efektet.

Për të montuar sensorin LCD dhe IR unë do të përdorja një armë me zam të nxehtë dhe do t'i ngjisja në pjesën e sipërme të kornizës dhe do t'i lidhja të gjitha me pjesën e pasme, por nuk doja që ato të fiksoheshin sepse mund të më duhej t'i hiqja pas projektit është bërë.

Për të lidhur LCD dhe Marrësin IR, kam përdorur lidhëset Male me Femra të cilat futen në Arduino për të dhëna, si dhe tokën dhe fuqinë. Për të lidhur gjithçka, unë përdor pinin 12 me një rezistencë 2 kΩ në kunjin e të dhënave për sensorin IR, Pin Analog A4 për SDA të LCD dhe Pin Analog 5 për SCL të LCD.

Hapi 4: Kodi

Për këtë projekt, unë përdor disa biblioteka që do t'ju duheshin shkarkuar për t'i përdorur. Unë do t'i vendos këtu, mbani në mend se unë jam në Windows, kështu që mund të ketë një efekt nëse jeni në Mac ose Linux.

Ju do të duhet të ndryshoni numrin e pikselave në varësi të numrit të LED -ve që keni. Unë gjithashtu ndërtova një ndërfaqe Serial Monitor kështu që ju mund të ndërhyni në atë mënyrë me të nëse nuk përdorni një sensor IR.

// Bibliotekat

#include Adafruit_NeoPixel.h> #include #include #include // Kunjat dhe vlerat konstante // Kunjat dhe vlerat konstanteconst int RECV_PIN = 12; IRrecv irrecv (RECV_PIN); rezultatet e deshifrimit të rezultateve; çelës i gjatë i panënshkruar_vlera = 0; const int NUMPIXELS = 27;

Piksela Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, 3);

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Variablat në IRNumb; int IRNumb2; int ylber = 0; uint32_t rainbowColor = pixel. Color (0, 0, 0); hyrja e karbonit = 0; hyrja char2 = 0; int r; int g; int b; int breakCondition = 0; void setup () {// Initalizon elementët që nuk kanë nevojë të përsëriten. lcd.begin (16, 2); // Përcaktimi i 16 kolonave dhe 2 rreshtave të ekranit LCD lcd.backlight (); // Për të ndezur dritën e pasme Serial.begin (9600); piksele.filloj (); irrecv.enableIRIn (); Serial.println ("Fut një 0 për të fikur dritat"); // Udhëzimet fillestare Serial.println ("Fut një 1 për t'i kthyer LED -et në të bardhë"); Serial.println ("Fut një 2 për të pasur LED ciklin nëpër ngjyra të ndryshme"); Serial.println ("Fut një 3 për të personalizuar ngjyrat LED me dorë"); } void loop () {IRNumb = 10; IRScan (); opsionet kryesore (); nëse (Serial.disponueshëm ()> 0) {// Kontrollon nëse është i disponueshëm një karakter? input = (char) Serial.read (); } // Zgjedh opsionet e ndryshme nëse (input == '1' || IRNumb == 1) {rainbowColor = colourChange (255, 255, 255); // Set i bardhëTë gjitha (ylber Ngjyra); // Përditëson LED -të} tjetër nëse (input == '0' || IRNumb == 0) {rainbowColor = colourChange (0, 0, 0); // Off setAll (rainbowColor); // Përditëson LED -të} tjetër nëse (input == '2' || IRNumb == 2) {breakCondition = 0; r = 0; g = 0; b = 0;

Serial.println ("Futni çdo gjë që nuk është 2 për të dalë nga ky efekt, pastaj ndonjë nga opsionet e preferuara për një efekt të ri.");

lcd.qartë (); // Pastroni ekranin lcd.setCursor (0, 0); lcd.print ("Dilni duke përdorur çdo-"); lcd.setCursor (0, 1); lcd.print ("mpirë atë! = 2"); për (int i = 0; i = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Kontrollon nëse efekti duhet të dalë nga rainbowColor = colourChange (0, 0, 0); setAll (rainbowColor); breakCondition = 1; pushim; } rainbowColor = ndryshimi i ngjyrës (i, 0, 0); setAll (rainbowColor); showStrip (); vonesë (100); } për (int i = 0; i = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Kontrollon nëse efekti duhet të dalë nga rainbowColor = colourChange (0, 0, 0); setAll (rainbowColor); breakCondition = 1; pushim; } g ++; rainbowColor = colorChange (i, g, 0); setAll (rainbowColor); showStrip (); vonesë (100); } për (int g = 0; g = 48 && input <= 57) || prishetKushti == 1 || IRNumb! = 2) {// Kontrollon nëse efekti duhet të dalë nga rainbowColor = colourChange (0, 0, 0); setAll (rainbowColor); breakCondition = 1; pushim; } r+= 2; rainbowColor = colorChange (r, g, 0); setAll (rainbowColor); showStrip (); vonesë (100); } për (int b = 0; b = 48 && input <= 57) || prishetKushti == 1 || IRNumb! = 2) {// Kontrollon nëse efekti duhet të dalë nga rainbowColor = colourChange (0, 0, 0); setAll (rainbowColor); breakCondition = 1; pushim; } r+= 2; g+= 5; rainbowColor = colorChange (r, g, b); setAll (rainbowColor); showStrip (); vonesë (100); } mainOptions (); } else if (input == '3' || IRNumb == 3) {r = 0; g = 0; b = 0;

Serial.println ("Fut n për të dalë");

Serial.println ("Përdorni w dhe s për të rritur ose zvogëluar ngjyrën e kuqe"); Serial.println ("Përdorni r dhe f për të rritur ose zvogëluar ngjyrën e gjelbër"); Serial.println ("Përdorni y dhe h për të rritur ose zvogëluar ngjyrën blu"); lcd.clear (); // Pastroni ekranin lcd.setCursor (0, 0); lcd.print ("dalja: 0, 4/7: +/- e kuqe"); lcd.setCursor (0, 1); lcd.print ("5/8: jeshile, 6/9: blu");

ndërsa (input2! = 'n' || IRNumb2! = 0) {

nëse (Serial.disponueshëm ()> 0) {// është një karakter i disponueshëm? input2 = (char) Serial.read (); } //Serial.println(IRNumb2); IRNumb2 = 10; IRScan2 ();

nëse (IRNumb2 == 0) {

pushim; } if (input2 == 'w' || IRNumb2 == 4) {r+= 2; rainbowColor = colorChange (r, g, b); setAll (rainbowColor); showStrip (); } tjetër if (input2 == 's' || IRNumb2 == 7) {r- = 2; rainbowColor = colorChange (r, g, b); setAll (rainbowColor); showStrip (); } tjetër if (input2 == 'r' || IRNumb2 == 5) {g+= 2; rainbowColor = colorChange (r, g, b); setAll (rainbowColor); showStrip (); } tjetër if (input2 == 'f' || IRNumb2 == 8) {g- = 2; rainbowColor = colorChange (r, g, b); setAll (rainbowColor); showStrip (); }

tjetër nëse (input2 == 'y' || IRNumb2 == 6) {

b+= 2; rainbowColor = colorChange (r, g, b); setAll (rainbowColor); showStrip (); }

tjetër nëse (input2 == 'h' || IRNumb2 == 9) {

b- = 2; rainbowColor = colorChange (r, g, b); setAll (rainbowColor); showStrip (); }} mainOptions (); } setAll (rainbowColor); showStrip (); } void showStrip () {pixels.show (); } void setAll (ngjyra uint32_t) {për (int i = 0; i <NUMPIXELS; i ++) {pixels.setPixelColor (i, ngjyra); }} // Fut një vlerë 0 deri në 255 për të marrë një vlerë ngjyrash. uint32_t colourChange (int r, int g, int b) {kthehu pixel. Color (r, g, b); } void mainOptions () {// Fshin opsionet e efektit kryesor lcd.clear (); // Pastroni ekranin lcd.setCursor (0, 0); lcd.print ("0 Për dritat e fikura"); lcd.setCursor (0, 1); lcd.print ("1: Drita e Bardhë"); vonesa (1000); lcd.clear (); // Pastroni ekranin lcd.setCursor (0, 0); lcd.print ("2: Efekti i ngjyrave"); lcd.setCursor (0, 1); lcd.print ("3: Manual"); vonesa (1000); } void IRScan () {if (irrecv.decode (& results)) {

nëse (results.value == 0XFFFFFFFF)

rezultate.vlera = vlera_çelës; tjetër {//Serial.println(results.value, HEX); nëse (results.value == 0xFF6897 || results.value == 0xC101E57B) {IRNumb = 0; //Serial.println("0 "); } tjetër if (results.value == 0x9716BE3F || results.value == 0xFF30CF) {IRNumb = 1; //Serial.println("1 "); } tjetër if (results.value == 0x3D9AE3F7 || results.value == 0xFF18E7) {IRNumb = 2; //Serial.println("2 "); } tjetër if (results.value == 0xFF7A85 || results.value == 0x6182021B) {IRNumb = 3; // Serial.println ("3"); } tjetër nëse (results.value == 0x8C22657B || results.value == 0xFF10EF) {IRNumb = 4; //Serial.println("4 "); } tjetër nëse (results.value == 0xFF38C7 || results.value == 0x488F3CBB) {IRNumb = 5; // Serial.println ("5"); } tjetër if (results.value == 0x449E79F || results.value == 0xFF5AA5) {IRNumb = 6; // Serial.println ("6"); } tjetër if (results.value == 0xFF42BD || results.value == 0x32C6FDF7) {IRNumb = 7; //Serial.println("7 "); } tjetër if (results.value == 0x1BC0157B || results.value == 0xFF4AB5) {IRNumb = 8; //Serial.println("8 "); } tjetër nëse (results.value == 0xFF52AD || results.value == 0x3EC3FC1B) {IRNumb = 9; // Serial.println ("9"); }} vlera_çelës = rezultatet.vlera; irrecv.resume (); }} void IRScan2 () {if (irrecv.decode (& results)) {

nëse (results.value == 0XFFFFFFFF)

rezultate.vlera = vlera_çelës; else {// Serial.println (results.value, HEX); nëse (results.value == 0xFF6897 || results.value == 0xC101E57B) {IRNumb2 = 0; //Serial.println("0 "); } tjetër if (results.value == 0x9716BE3F || results.value == 0xFF30CF) {IRNumb2 = 1; //Serial.println("1 "); } tjetër if (results.value == 0x3D9AE3F7 || results.value == 0xFF18E7) {IRNumb2 = 2; //Serial.println("2 "); } tjetër nëse (results.value == 0xFF7A85 || results.value == 0x6182021B) {IRNumb2 = 3; // Serial.println ("3"); } tjetër nëse (results.value == 0x8C22657B || results.value == 0xFF10EF) {IRNumb2 = 4; //Serial.println("4 "); } tjetër nëse (results.value == 0xFF38C7 || results.value == 0x488F3CBB) {IRNumb2 = 5; // Serial.println ("5"); } tjetër if (results.value == 0x449E79F || results.value == 0xFF5AA5) {IRNumb2 = 6; // Serial.println ("6"); } tjetër if (results.value == 0xFF42BD || results.value == 0x32C6FDF7) {IRNumb2 = 7; //Serial.println("7 "); } tjetër nëse (results.value == 0x1BC0157B || results.value == 0xFF4AB5) {IRNumb2 = 8; //Serial.println("8 "); } tjetër nëse (results.value == 0xFF52AD || results.value == 0x3EC3FC1B) {IRNumb2 = 9; // Serial.println ("9"); }} vlera_çelës = rezultatet.vlera; irrecv.resume (); }}

Hapi 5: Montimi

Montim
Montim

Për ta montuar Arduinon në kornizë, thjesht do ta ngjisja atë dhe tabelën e bukës që përdorja në pjesën e pasme të kornizës dhe do të përpiqesha të mbuloja/fshehja kabllot për ta bërë atë të duket mirë.

Recommended: