Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Pag-install ng Mirror at Mirror Film
- Hakbang 2: Pag-set up ng LED Strip
- Hakbang 3: Pag-mount sa IR Sensor at sa LCD (Opsyonal)
- Hakbang 4: Code
- Hakbang 5: Pag-mount
Video: Infinity Mirror Sa LCD at IR Sensor: 5 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:10
Ipapakita sa iyo ng proyektong ito kung paano ka makakagawa ng isang Infinity Mirror. Ang pangunahing konsepto ay ang mga LED na nasa salamin ay lumilikha ng ilaw na tumatalbog mula sa likurang salamin hanggang sa harap na salamin kung saan ang ilang ilaw ay nakatakas upang makita natin ang loob at ang ilan ay makikita sa likurang salamin at makagawa ng walang katapusang epekto. Ito ay batay sa Infinity Mirror Sa Mga Ultra Sonic Sensor na Maaaring Ituro ng Hack Sioux Falls at Paano Ikonekta ang I2C Lcd Display sa Arduino Uno ni JunezRiyaz.
Mga gamit
1. Isang Shadow Box ($ 50)
2. 1-way Mirror Film ($ 17)
3. Isang light strip na RGB LED ($ 30)
4. Arduino ($ 35)
5. Isang salamin ($ 10)
Opsyonal:
1. IR Sensor at Remote ($ 20)
2. Isang LCD ($ 20)
3. 7 Babae sa Mga Konektor na Lalaki
4. 3 Lalaki sa Mga Lalaki na Konektor
Mga kasangkapan
1. Bakal na Bakal
2. Wire Cutter at Stripper
3. Isang bagay upang kunin ang salamin
* Tandaan ang lahat ng mga presyo sa CAD at laki ay nakasalalay sa kahon na iyong ginagamit.
Hakbang 1: Pag-install ng Mirror at Mirror Film
Ang unang bagay na dapat gawin ay i-install ang salamin na magiging sa likod ng shadow box. Nais mong makakuha ng alinman sa tamang sukat o makakuha ng isa na mas malaki at pagkatapos ay i-cut ito. Ngunit para dito, kailangan mong gumamit ng isang salamin at hindi ang pelikula dahil nais naming maipakita ang lahat ng ilaw, ang mirror film ay maaari ding kunin ang pattern ng materyal na ito kung hindi ito salamin.
Kapag na-install mo ang salamin siguraduhin na i-secure ito sa kahon ng anino, inirerekumenda ko ang paggamit ng maliliit na piraso ng kahoy at mga kuko upang matiyak na hindi gumagalaw ang salamin. Wala akong salamin sa oras na kailangan kong makumpleto ang proyektong ito kaya ginamit ko ang pelikula (Maaari mong makita sa mga larawan). Ang konsepto ay gumagana ngunit hindi masyadong maayos at nagbibigay ng isang anggulo at magulong hitsura na sa aking palagay ay hindi maganda ang hitsura.
Ang bawat mirror film ay magkakaroon ng kaunting kakaiba ngunit ang sinabi kong linisin ang baso na inilalagay namin sa pelikula pagkatapos ay upang magamit ang tape upang alisin ang proteksiyon na pelikula na nasa isang gilid at gumagamit ng sabon na tubig sa isang spray bote ilagay ang pelikula sa baso. Pagkatapos ay gumamit ng isang credit card o squeegee upang mapupuksa ang anumang mga bula ng hangin at labis na tubig. Wala na ulit akong baso ngunit pareho pa rin ang gumagana. Pagkatapos ay iwanan ang baso upang matuyo magdamag at dapat itong gawin.
Hakbang 2: Pag-set up ng LED Strip
Para sa mga LED ginamit ko lang ang kasamang dobleng panig na tape upang idikit ito sa frame at gumawa ng isang butas para lumabas ang kawad. Sa bawat sulok, nag-solder ako ng mga lead upang kumonekta sa isa pang strip upang mapanatili ang hugis ng kahon nang walang bilugan na mga gilid. Siguraduhing gupitin lamang ang mga piraso sa mga puntos kung saan may mga contact na magpapahintulot sa ganoong mangyari at huwag ilipat ang direksyon na kumonekta sa mga LED sa bawat isa na kilala bilang baligtarin ang polarity. Ang strip na nakuha ko ay may mga arrow upang matiyak na hindi ito nangyayari kaya tiyaking suriin na lahat sila ay tumuturo sa parehong direksyon.
Gumawa ako ng isang maliit na butas upang ilagay ang cable sa labas ng kahon, ang mga LED na mayroon ako ay 3 Pin na maaaring addressing LEDs kaya't mayroon akong mga power, ground at data konektor. Ginamit ko ang Digital Pin 3 para sa konektor ng data, siguraduhing subukan ang iyong mga LED strip upang matiyak na gumagana ang mga ito bago idikit ang mga ito sa frame at tiyaking gagamitin lamang ang inirekumendang boltahe para sa aking isa na 5 - 6 V.
Hakbang 3: Pag-mount sa IR Sensor at sa LCD (Opsyonal)
Pinili kong gumamit ng isang IR sensor at remote upang mabago ang mga epekto sa pag-iilaw at gamitin at isang LCD upang ipakita sa gumagamit ang mga pagpipilian na mayroon sila para sa mga epekto.
Upang mai-mount ang LCD at IR sensor gagamitin ko ang isang mainit na glue gun at idikit ang mga ito sa tuktok ng frame at i-wire ang lahat sa likuran ngunit hindi ko nais na maayos ang mga ito dahil baka alisin ko sila pagkatapos ng proyekto tapos na
Upang ikonekta ang LCD at IR Receiver ginamit ko ang Lalaki sa Mga Konektor ng Babae na naka-plug sa Arduino para sa data pati na rin ang lupa at lakas. Upang ma-wire ang lahat ginamit ko ang pin 12 na may isang 2 kΩ risistor sa pin ng data para sa IR sensor, Analog Pin A4 para sa SDA ng LCD adn Analog Pin 5 para sa SCL ng LCD.
Hakbang 4: Code
Para sa proyektong ito, gumagamit ako ng kaunting mga aklatan na nais mong i-download upang magamit. Ilalagay ko ang mga ito dito, tandaan na nasa windows ako upang magkaroon ng epekto kung ikaw ay nasa Mac o Linux.
Kakailanganin mong baguhin ang bilang ng mga pixel depende sa bilang ng mga LED na mayroon ka. Nagtayo din ako sa isang interface ng Serial Monitor upang maaari mong i-interface ang ganoong paraan dito kung hindi ka gumagamit ng isang IR sensor.
// Mga Aklatan
#include Adafruit_NeoPixel.h> #include #include #include // Pins and Constant values // Pins and Constant valuesconst int RECV_PIN = 12; IRrecv irrecv (RECV_PIN); mga resulta sa pag-decode_resulta; unsigned mahabang key_value = 0; const int NUMPIXELS = 27;
Adafruit_NeoPixel pixel = Adafruit_NeoPixel (NUMPIXELS, 3);
LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Variables int IRNumb; int IRNumb2; int bahaghari = 0; uint32_t rainbowColor = pixel. Color (0, 0, 0); input ng char = 0; char input2 = 0; int r; int g; int b; int breakCondition = 0; void setup () {// Pinasimulan ang mga elemento na hindi na kailangang ulitin. lcd.begin (16, 2); // Pagtukoy ng 16 haligi at 2 hilera ng lcd display lcd.backlight (); // Upang buksan ang backlight Serial.begin (9600); pix.begin (); irrecv.enableIRIn (); Serial.println ("Ipasok ang isang 0 upang patayin ang mga ilaw"); // Begining Instructions Serial.println ("Ipasok ang isang 1 upang gawing puti ang mga LED"); Serial.println ("Ipasok ang isang 2 upang magkaroon ng LEDs cycle sa pamamagitan ng iba't ibang mga kulay"); Serial.println ("Ipasok ang isang 3 upang ipasadya nang manu-mano ang mga kulay na LED"); } void loop () {IRNumb = 10; IRScan (); mainOptions (); kung (Serial.available ()> 0) {// Sinusuri kung magagamit ang isang character? input = (char) Serial.read (); } // Pinipili ang iba't ibang mga pagpipilian kung (input == '1' || IRNumb == 1) {rainbowColor = colourChange (255, 255, 255); // White setAll (rainbowColor); // Update the LEDs} else if (input == '0' || IRNumb == 0) {rainbowColor = colourChange (0, 0, 0); // Off setAll (rainbowColor); // Update the LEDs} else if (input == '2' || IRNumb == 2) {breakCondition = 0; r = 0; g = 0; b = 0;
Serial.println ("Ipasok ang anumang bagay na hindi isang 2 upang lumabas sa epektong ito, kung gayon alinman sa mga kanais-nais na pagpipilian para sa isang bagong epekto.");
lcd.clear (); // Clean the screen lcd.setCursor (0, 0); lcd.print ("Exit using any-"); lcd.setCursor (0, 1); lcd.print ("manhid kana! = 2"); para sa (int i = 0; i = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Sinusuri kung ang epekto ay kailangang lumabas ng rainbowColor = colourChange (0, 0, 0); setAll (bahaghari ng kulay); breakCondition = 1; pahinga; } bahaghariColor = colourChange (i, 0, 0); setAll (bahaghari ng kulay); showStrip (); pagkaantala (100); } para sa (int i = 0; i = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Sinusuri kung ang epekto ay kailangang lumabas ng rainbowColor = colourChange (0, 0, 0); setAll (bahaghari ng kulay); breakCondition = 1; pahinga; } g ++; bahaghariColor = colourChange (i, g, 0); setAll (bahaghari ng kulay); showStrip (); pagkaantala (100); } para sa (int g = 0; g = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Sinusuri kung ang epekto ay kailangang lumabas ng rainbowColor = colourChange (0, 0, 0); setAll (bahaghari ng kulay); breakCondition = 1; pahinga; } r + = 2; bahaghariColor = colourChange (r, g, 0); setAll (bahaghari ng kulay); showStrip (); pagkaantala (100); } para sa (int b = 0; b = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Sinusuri kung ang epekto ay kailangang lumabas ng rainbowColor = colourChange (0, 0, 0); setAll (bahaghari ng kulay); breakCondition = 1; pahinga; } r + = 2; g + = 5; bahaghariColor = colourChange (r, g, b); setAll (bahaghari ng kulay); showStrip (); pagkaantala (100); } mainOptions (); } iba pa kung (input == '3' || IRNumb == 3) {r = 0; g = 0; b = 0;
Serial.println ("Enter n to exit");
Serial.println ("Gumamit ng w at s upang madagdagan o mabawasan ang pulang kulay"); Serial.println ("Gumamit ng r at f upang madagdagan o mabawasan ang berdeng kulay"); Serial.println ("Gumamit ng y at h upang madagdagan o mabawasan ang asul na kulay"); lcd.clear (); // Linisin ang screen lcd.setCursor (0, 0); lcd.print ("exit: 0, 4/7: +/- red"); lcd.setCursor (0, 1); lcd.print ("5/8: berde, 6/9: asul");
habang (input2! = 'n' || IRNumb2! = 0) {
kung (Serial.available ()> 0) {// magagamit ang isang character? input2 = (char) Serial.read (); } //Serial.println(IRNumb2); IRNumb2 = 10; IRScan2 ();
kung (IRNumb2 == 0) {
pahinga; } kung (input2 == 'w' || IRNumb2 == 4) {r + = 2; bahaghariColor = colourChange (r, g, b); setAll (bahaghari ng kulay); showStrip (); } iba pa kung (input2 == 's' || IRNumb2 == 7) {---------------- = 2; bahaghariColor = colourChange (r, g, b); setAll (bahaghari ng kulay); showStrip (); } iba pa kung (input2 == 'r' || IRNumb2 == 5) {g + = 2; bahaghariColor = colourChange (r, g, b); setAll (bahaghari ng kulay); showStrip (); } iba pa kung (input2 == 'f' || IRNumb2 == 8) {g- = 2; bahaghariColor = colourChange (r, g, b); setAll (bahaghari ng kulay); showStrip (); }
kung hindi man (input2 == 'y' || IRNumb2 == 6) {
b + = 2; bahaghariColor = colourChange (r, g, b); setAll (bahaghari ng kulay); showStrip (); }
kung hindi man (input2 == 'h' || IRNumb2 == 9) {
b- = 2; bahaghariColor = colourChange (r, g, b); setAll (bahaghari ng kulay); showStrip (); }} mainOptions (); } setAll (bahaghariColor); showStrip (); } walang bisa showStrip () {pix.show (); } void setAll (uint32_t color) {para (int i = 0; i <NUMPIXELS; i ++) {pix.setPixelColor (i, kulay); }} // Magpasok ng halagang 0 hanggang 255 upang makakuha ng isang halagang kulay. uint32_t colourChange (int r, int g, int b) {return pix. Color (r, g, b); } void mainOptions () {// Sjows the main effects options lcd.clear (); // Clean the screen lcd.setCursor (0, 0); lcd.print ("0 Para sa mga ilaw na patay"); lcd.setCursor (0, 1); lcd.print ("1: White Light"); pagkaantala (1000); lcd.clear (); // Linisin ang screen lcd.setCursor (0, 0); lcd.print ("2: Kulay na epekto"); lcd.setCursor (0, 1); lcd.print ("3: Manu-manong"); pagkaantala (1000); } walang bisa IRScan () {kung (irrecv.decode (& mga resulta)) {
kung (resulta.value == 0XFFFFFFFF)
results.value = key_value; iba pa {//Serial.println(results.value, HEX); kung (results.value == 0xFF6897 || results.value == 0xC101E57B) {IRNumb = 0; //Serial.println("0 "); } iba pa kung (mga resulta.value == 0x9716BE3F || mga resulta.value == 0xFF30CF) {IRNumb = 1; //Serial.println("1 "); } iba pa kung (mga resulta.value == 0x3D9AE3F7 || mga resulta.value == 0xFF18E7) {IRNumb = 2; //Serial.println("2 "); } iba pa kung (mga resulta.value == 0xFF7A85 || resulta.value == 0x6182021B) {IRNumb = 3; // Serial.println ("3"); } iba pa kung (mga resulta.value == 0x8C22657B || mga resulta.value == 0xFF10EF) {IRNumb = 4; //Serial.println("4 "); } iba pa kung (mga resulta.value == 0xFF38C7 || mga resulta.value == 0x488F3CBB) {IRNumb = 5; // Serial.println ("5"); } iba pa kung (mga resulta.value == 0x449E79F || mga resulta.value == 0xFF5AA5) {IRNumb = 6; // Serial.println ("6"); } iba pa kung (mga resulta.value == 0xFF42BD || mga resulta.value == 0x32C6FDF7) {IRNumb = 7; //Serial.println("7 "); } iba pa kung (mga resulta.value == 0x1BC0157B || resulta.value == 0xFF4AB5) {IRNumb = 8; //Serial.println("8 "); } iba pa kung (mga resulta.value == 0xFF52AD || resulta.value == 0x3EC3FC1B) {IRNumb = 9; // Serial.println ("9"); }} key_value = results.value; irrecv.resume (); }} void IRScan2 () {if (irrecv.decode (& mga resulta)) {
kung (resulta.value == 0XFFFFFFFF)
results.value = key_value; iba pa {// Serial.println (results.value, HEX); kung (resulta.value == 0xFF6897 || resulta.value == 0xC101E57B) {IRNumb2 = 0; //Serial.println("0 "); } iba pa kung (mga resulta.value == 0x9716BE3F || mga resulta.value == 0xFF30CF) {IRNumb2 = 1; //Serial.println("1 "); } iba pa kung (mga resulta.value == 0x3D9AE3F7 || mga resulta.value == 0xFF18E7) {IRNumb2 = 2; //Serial.println("2 "); } iba pa kung (mga resulta.value == 0xFF7A85 || mga resulta.value == 0x6182021B) {IRNumb2 = 3; // Serial.println ("3"); } iba pa kung (mga resulta.value == 0x8C22657B || mga resulta.value == 0xFF10EF) {IRNumb2 = 4; //Serial.println("4 "); } iba pa kung (mga resulta.value == 0xFF38C7 || mga resulta.value == 0x488F3CBB) {IRNumb2 = 5; // Serial.println ("5"); } iba pa kung (mga resulta.value == 0x449E79F || mga resulta.value == 0xFF5AA5) {IRNumb2 = 6; // Serial.println ("6"); } iba pa kung (mga resulta.value == 0xFF42BD || mga resulta.value == 0x32C6FDF7) {IRNumb2 = 7; //Serial.println("7 "); } iba pa kung (mga resulta.value == 0x1BC0157B || resulta.value == 0xFF4AB5) {IRNumb2 = 8; //Serial.println("8 "); } iba pa kung (mga resulta.value == 0xFF52AD || resulta.value == 0x3EC3FC1B) {IRNumb2 = 9; // Serial.println ("9"); }} key_value = results.value; irrecv.resume (); }}
Hakbang 5: Pag-mount
Upang mai-mount ang Arduino sa frame ay ididikit ko lamang ito at ang breadboard na ginamit ko sa likuran ng frame at subukang takpan / itago ang mga kable upang magmukhang maganda ito.
Inirerekumendang:
Gumawa ng isang Infinity Mirror Clock: 15 Hakbang (na may Mga Larawan)
Gumawa ng isang Infinity Mirror Clock: Sa isang nakaraang proyekto bumuo ako ng isang infinity mirror, kung saan ang aking panghuli na layunin para dito ay gawin itong isang orasan. (Gumawa ng isang Makukulay na Infinity Mirror) Hindi ko ito tinuloy matapos ang pagbuo nito dahil, kahit na mukhang cool ito, may ilang mga bagay na kasama
Gumawa ng isang Madaling Infinity Mirror Cube - WALANG 3D Pagpi-print at WALANG Programming: 15 Hakbang (na may Mga Larawan)
Gumawa ng isang Madaling Infinity Mirror Cube | WALANG 3D Pagpi-print at WALANG Programming: Lahat ay may gusto ng isang mahusay na infinity cube, ngunit mukhang mahirap silang gawin. Ang layunin ko para sa Instructable na ito ay ipakita sa iyo ng sunud-sunod kung paano makakagawa ng isa. Hindi lamang iyon, ngunit sa mga tagubilin na ibinibigay ko sa iyo, makakagawa ka ng isa
Madaling Infinity Mirror Sa Arduino Gemma at NeoPixels: 8 Hakbang (na may Mga Larawan)
Madaling Infinity Mirror Sa Arduino Gemma at NeoPixels: Narito! Tumingin ng malalim sa kaakit-akit at mapanlinlang na simpleng infinity mirror! Ang isang solong strip ng LEDs ay sumisikat papasok sa isang mirror sandwich upang likhain ang epekto ng walang katapusang pagsasalamin. Ang proyekto na ito ay ilalapat ang mga kasanayan at diskarte mula sa aking intro Arduin
Infinity Mirror Illusion Magic: 3 Mga Hakbang
Infinity Mirror Illusion Magic: Kumusta mga kaibigan, Gumawa tayo ng isang Infinity mirror, na isang magic ng ilusyon
Gumawa ng isang 2 Sided, Desktop Infinity Mirror: 14 Mga Hakbang (na may Mga Larawan)
Gumawa ng isang 2 Sided, Desktop Infinity Mirror: Karamihan sa mga infinity mirror na nakita ko ay isang panig, ngunit nais kong bumuo ng isang medyo kakaiba. Ang isang ito ay magiging 2 panig at idinisenyo upang maipakita ito sa isang desktop o isang istante. Ito ay isang madali, napaka-cool na proyekto upang gawin!