Tartalomjegyzék:
- Kellékek
- 1. lépés: A tükör és a tükörfilm felszerelése
- 2. lépés: A LED csík beállítása
- 3. lépés: Az infravörös érzékelő és az LCD felszerelése (opcionális)
- 4. lépés: Kód
- 5. lépés: Szerelés
Videó: Végtelen tükör LCD és IR érzékelővel: 5 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Ez a projekt megmutatja, hogyan készíthet Infinity Mirror -t. Az alapkoncepció az, hogy a tükrön lévő LED -ek olyan fényt hoznak létre, amely visszapattan a hátsó tükörről az első tükörre, ahol némi fény kiszökik, így belátunk, néhány pedig visszaverődik a hátsó tükörbe, és végtelen hatást kelt. Ennek alapja az Infinity Mirror Ultra Sonic érzékelőkkel, amelyeket a Hack Sioux Falls utasít, és hogyan lehet az I2C LCD -kijelzőt az Arduino Uno -hoz csatlakoztatni JunezRiyaz.
Kellékek
1. Árnyékdoboz ($ 50)
2. 1-utas tükörfilm (17 USD)
3. RGB LED fénycsík ($ 30)
4. Arduino (35 dollár)
5. Tükör ($ 10)
Választható:
1. IR érzékelő és távirányító ($ 20)
2. LCD ($ 20)
3. 7 Nő -férfi csatlakozók
4. 3 Férfi - férfi csatlakozók
Eszközök
1. Forrasztópáka
2. Drótvágó és csupaszító
3. Valami, amivel levághatod a tükröt
*Vegye figyelembe, hogy a CAD -ban és a méretekben megadott árak a használt doboztól függenek.
1. lépés: A tükör és a tükörfilm felszerelése
Az első dolog az, hogy telepítse a tükröt, amely az árnyékdoboz hátsó részében lesz. Szeretne beszerezni egy megfelelő méretű vagy nagyobbat, majd vágja le. Ehhez azonban tükröt kell használnia, nem pedig a fóliát, mert azt akarjuk, hogy az összes fény visszaverődjön, a tükörfilm is felveheti az anyag mintáját, amelyen van, ha nem üveg.
A tükör felszerelésekor ügyeljen arra, hogy rögzítse az árnyékdobozban. Javaslom, hogy kis fadarabokat és szögeket használjon annak biztosítására, hogy a tükör ne mozduljon el. A projekt befejezésekor nem volt tükör, ezért a filmet használtam (a képeken látható). A koncepció működik, de nem túl jól, és olyan szögletes és kaotikus megjelenést kölcsönöz, amely véleményem szerint nem néz ki jól.
Minden tükörfilm kicsit más lesz, de azt mondtam, hogy akkor tisztítsuk meg az üveget, amelyre rátesszük a fóliát, hogy szalaggal távolítsuk el az egyik oldalon lévő védőfóliát, és szappanos vizet használjunk spray -ben üveg tegye a fóliát az üvegre. Ezután használjon hitelkártyát vagy gumibetétet, hogy megszabaduljon a légbuborékoktól és a felesleges víztől. Ismét nem volt üveg, de még mindig ugyanúgy működik. Ezután hagyja az üveget egy éjszakán át száradni, és meg kell tenni.
2. lépés: A LED csík beállítása
A LED -ekhez csak a mellékelt kétoldalas ragasztószalagot használtam a kerethez való ragasztáshoz, és lyukat készítettem a huzal kijutásához. Minden sarokban vezetéket forrasztottam egy másik csíkhoz való csatlakozáshoz, hogy a doboz alakja lekerekített élek nélkül maradjon. Ügyeljen arra, hogy a csíkokat csak azokon a helyeken vágja le, ahol vannak érintkezők, amelyek lehetővé teszik ezt, és ne változtassa meg a LED -ek egymáshoz való csatlakoztatásának irányát, amelyet polaritás megfordításának neveznek. A csíkon, amelyet kaptam, nyilak voltak, hogy ez ne történjen meg, ezért ellenőrizze, hogy mindegyik ugyanabba az irányba mutat -e.
Csináltam egy kis lyukat, hogy áthelyezzem a kábelt a doboz külsejére, a LED -eim 3 tűs címezhető LED -ek voltak, így volt táp-, föld- és adatcsatlakozóm. Az adatcsatlakozóhoz a Digitális 3 -as tűt használtam, ellenőrizze a LED -szalagokat, hogy megbizonyosodjon arról, hogy működnek -e, mielőtt a kerethez rögzítené, és győződjön meg róla, hogy csak az ajánlott feszültséget használja, az én 5-6 V -os feszültséget.
3. lépés: Az infravörös érzékelő és az LCD felszerelése (opcionális)
Úgy döntöttem, hogy infravörös érzékelőt és távirányítót használok a fényhatások megváltoztatásához, és egy LCD -t, hogy megmutassam a felhasználónak az effektusokkal kapcsolatos lehetőségeit.
Az LCD- és infravörös érzékelő felszereléséhez forró ragasztópisztolyt használnék, és a keret tetejére ragasztanám, és mindent a hátsó részhez kötnék, de nem akartam, hogy rögzítsék, mert a projekt után le kell vennem őket kész.
Az LCD és az infravörös vevő csatlakoztatásához férfi -női csatlakozókat használtam, amelyek az Arduino -hoz csatlakoznak az adatok, valamint a föld és a tápellátás érdekében. Az összes vezeték bekötéséhez a 12 -es tűt használtam 2 kΩ -os ellenállással az infravörös érzékelő adatcsapján, az A4 -es analóg tűt az LCD SDA -jához, és az analóg 5 -ös tűt az LCD SCL -hez.
4. lépés: Kód
Ehhez a projekthez kevés könyvtárat használok, amelyeket letöltenie kell a használatához. Ide fogom tenni őket, ne feledje, hogy Windows -on vagyok, ami hatással lehet, ha Mac vagy Linux operációs rendszert használ.
A képpontok számát a LED -ek számától függően módosítania kell. Beépítettem egy soros monitor interfészt is, így így is interfészelhet vele, ha nem használ infravörös érzékelőt.
// Könyvtárak
#include Adafruit_NeoPixel.h> #include #include #include // Tűk és állandó értékek // Pins és Constant valuesconst int RECV_PIN = 12; IRrecv irrecv (RECV_PIN); decode_results eredmények; előjel nélküli hosszú kulcsérték = 0; const int NUMPIXELS = 27;
Adafruit_NeoPixel pixelek = Adafruit_NeoPixel (NUMPIXELS, 3);
LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Változók int IRNumb; int IRNumb2; int szivárvány = 0; uint32_t rainbowColor = pixel. Color (0, 0, 0); char input = 0; char input2 = 0; int r; int g; int b; int breakCondition = 0; void setup () {// Olyan elemeket inicializál, amelyeket nem kell megismételni. lcd.begin (16, 2); // 16 oszlop és 2 sor LCD kijelzés meghatározása lcd.backlight (); // A háttérvilágítás bekapcsolása Serial.begin (9600); pixels.begin (); irrecv.enableIRIn (); Serial.println ("Írja be a 0 -t a lámpák kikapcsolásához"); // Kezdeti utasítások Serial.println ("Írja be az 1 -et, hogy a LED -ek fehérek legyenek"); Serial.println ("Írja be a 2 -t, hogy a LED -ek különböző színekben ciklusozhassanak"); Serial.println ("Írjon be egy 3 -at a LED -színek manuális testreszabásához"); } void loop () {IRNumb = 10; IRScan (); mainOptions (); if (Serial.available ()> 0) {// Ellenőrzi, hogy elérhető -e egy karakter? input = (char) Serial.read (); } // A különböző beállításokat választja, ha (input == '1' || IRNumb == 1) {rainbowColor = colourChange (255, 255, 255); // Fehér setAll (rainbowColor); // Frissíti a LED -eket} else if (input == '0' || IRNumb == 0) {rainbowColor = colourChange (0, 0, 0); // Off setAll (rainbowColor); // Frissíti a LED -eket} else if (input == '2' || IRNumb == 2) {breakCondition = 0; r = 0; g = 0; b = 0;
Serial.println ("Írjon be mindent, ami nem 2, hogy kilépjen ebből a hatásból, majd az új hatás bármelyikét.");
lcd.clear (); // A képernyő tisztítása lcd.setCursor (0, 0); lcd.print ("Kilépés bármelyik használatával"); lcd.setCursor (0, 1); lcd.print ("érzéketlen, hogy! = 2"); for (int i = 0; i = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Ellenőrzi, hogy ki kell -e lépni a hatásból rainbowColor = colourChange (0, 0, 0); setAll (szivárványSzín); breakCondition = 1; szünet; } szivárványSzín = színVáltozás (i, 0, 0); setAll (szivárványSzín); showStrip (); késleltetés (100); } for (int i = 0; i = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Ellenőrzi, hogy ki kell -e lépni a hatásból rainbowColor = colourChange (0, 0, 0); setAll (szivárványSzín); breakCondition = 1; szünet; } g ++; szivárványSzín = színVáltozás (i, g, 0); setAll (szivárványSzín); showStrip (); késleltetés (100); } for (int g = 0; g = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Ellenőrzi, hogy ki kell -e lépni a hatásból rainbowColor = colourChange (0, 0, 0); setAll (szivárványSzín); breakCondition = 1; szünet; } r+= 2; szivárványSzín = színVáltozás (r, g, 0); setAll (szivárványSzín); showStrip (); késleltetés (100); } for (int b = 0; b = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Ellenőrzi, hogy ki kell -e lépni a hatásból rainbowColor = colourChange (0, 0, 0); setAll (szivárványSzín); breakCondition = 1; szünet; } r+= 2; g+= 5; szivárványSzín = színVáltozás (r, g, b); setAll (szivárványSzín); showStrip (); késleltetés (100); } mainOptions (); } else if (input == '3' || IRNumb == 3) {r = 0; g = 0; b = 0;
Serial.println ("Enter n, hogy kilépjen");
Serial.println ("Használja a w és az s gombot a piros szín növeléséhez vagy csökkentéséhez"); Serial.println ("Használja az r és f gombokat a zöld szín növeléséhez vagy csökkentéséhez"); Serial.println ("Az y és h gombokkal növelheti vagy csökkentheti a kék színt"); lcd.clear (); // A képernyő tisztítása lcd.setCursor (0, 0); lcd.print ("kilépés: 0, 4/7: +/- piros"); lcd.setCursor (0, 1); lcd.print ("5/8: zöld, 6/9: kék");
while (input2! = 'n' || IRNumb2! = 0) {
if (Serial.available ()> 0) {// elérhető egy karakter? input2 = (char) Serial.read (); } // Sorozat.println (IRNumb2); IRNumb2 = 10; IRScan2 ();
ha (IRNumb2 == 0) {
szünet; } if (input2 == 'w' || IRNumb2 == 4) {r+= 2; szivárványSzín = színVáltozás (r, g, b); setAll (szivárványSzín); showStrip (); } else if (input2 == 's' || IRNumb2 == 7) {r- = 2; szivárványSzín = színVáltozás (r, g, b); setAll (szivárványSzín); showStrip (); } else if (input2 == 'r' || IRNumb2 == 5) {g+= 2; szivárványSzín = színVáltozás (r, g, b); setAll (szivárványSzín); showStrip (); } else if (input2 == 'f' || IRNumb2 == 8) {g- = 2; szivárványSzín = színVáltozás (r, g, b); setAll (szivárványSzín); showStrip (); }
egyébként if (input2 == 'y' || IRNumb2 == 6) {
b+= 2; szivárványSzín = színVáltozás (r, g, b); setAll (szivárványSzín); showStrip (); }
egyébként if (input2 == 'h' || IRNumb2 == 9) {
b- = 2; szivárványSzín = színVáltozás (r, g, b); setAll (szivárványSzín); showStrip (); }} mainOptions (); } setAll (rainbowColor); showStrip (); } void showStrip () {pixels.show (); } void setAll (uint32_t color) {for (int i = 0; i <NUMPIXELS; i ++) {pixels.setPixelColor (i, color); }} // Adjon meg 0 és 255 közötti értéket, hogy színértéket kapjon. uint32_t colourChange (int r, int g, int b) {return pixels. Color (r, g, b); } void mainOptions () {// Megjeleníti a fő hatásbeállításokat lcd.clear (); // A képernyő tisztítása lcd.setCursor (0, 0); lcd.print ("0 For Lights off"); lcd.setCursor (0, 1); lcd.print ("1: Fehér fény"); késleltetés (1000); lcd.clear (); // A képernyő tisztítása lcd.setCursor (0, 0); lcd.print ("2: Színhatás"); lcd.setCursor (0, 1); lcd.print ("3: Kézi"); késleltetés (1000); } void IRScan () {if (irrecv.decode (és eredmények)) {
if (results.value == 0XFFFFFFFF)
results.value = kulcsérték; else {//Serial.println(results.value, HEX); if (results.value == 0xFF6897 || results.value == 0xC101E57B) {IRNumb = 0; //Serial.println("0 "); } else if (results.value == 0x9716BE3F || results.value == 0xFF30CF) {IRNumb = 1; //Serial.println("1 "); } else if (results.value == 0x3D9AE3F7 || results.value == 0xFF18E7) {IRNumb = 2; //Serial.println("2 "); } else if (results.value == 0xFF7A85 || results.value == 0x6182021B) {IRNumb = 3; // Serial.println ("3"); } else if (results.value == 0x8C22657B || results.value == 0xFF10EF) {IRNumb = 4; //Serial.println("4 "); } else if (results.value == 0xFF38C7 || results.value == 0x488F3CBB) {IRNumb = 5; // Serial.println ("5"); } else if (results.value == 0x449E79F || results.value == 0xFF5AA5) {IRNumb = 6; // Serial.println ("6"); } else if (results.value == 0xFF42BD || results.value == 0x32C6FDF7) {IRNumb = 7; //Serial.println("7 "); } else if (results.value == 0x1BC0157B || results.value == 0xFF4AB5) {IRNumb = 8; //Serial.println("8 "); } else if (results.value == 0xFF52AD || results.value == 0x3EC3FC1B) {IRNumb = 9; // Serial.println ("9"); }} kulcs_érték = eredmények.érték; irrecv.resume (); }} void IRScan2 () {if (irrecv.decode (és eredmények)) {
if (results.value == 0XFFFFFFFF)
results.value = kulcsérték; else {// Serial.println (results.value, HEX); if (results.value == 0xFF6897 || results.value == 0xC101E57B) {IRNumb2 = 0; //Serial.println("0 "); } else if (results.value == 0x9716BE3F || results.value == 0xFF30CF) {IRNumb2 = 1; //Serial.println("1 "); } else if (results.value == 0x3D9AE3F7 || results.value == 0xFF18E7) {IRNumb2 = 2; //Serial.println("2 "); } else if (results.value == 0xFF7A85 || results.value == 0x6182021B) {IRNumb2 = 3; // Serial.println ("3"); } else if (results.value == 0x8C22657B || results.value == 0xFF10EF) {IRNumb2 = 4; //Serial.println("4 "); } else if (results.value == 0xFF38C7 || results.value == 0x488F3CBB) {IRNumb2 = 5; // Serial.println ("5"); } else if (results.value == 0x449E79F || results.value == 0xFF5AA5) {IRNumb2 = 6; // Serial.println ("6"); } else if (results.value == 0xFF42BD || results.value == 0x32C6FDF7) {IRNumb2 = 7; //Serial.println("7 "); } else if (results.value == 0x1BC0157B || results.value == 0xFF4AB5) {IRNumb2 = 8; //Serial.println("8 "); } else if (results.value == 0xFF52AD || results.value == 0x3EC3FC1B) {IRNumb2 = 9; // Serial.println ("9"); }} kulcs_érték = eredmények.érték; irrecv.resume (); }}
5. lépés: Szerelés
Ahhoz, hogy az Arduino -t a kerethez rögzítsem, csak ragasztanám azt és a kenyérsütőt, amit használtam a keret hátuljához, és megpróbálnám lefedni/elrejteni a kábeleket, hogy jól nézzen ki.
Ajánlott:
Készítsen végtelen tükör órát: 15 lépés (képekkel)
Készíts egy végtelen tükör órát: Egy korábbi projektemben építettem egy végtelen tükröt, ahol a végső célom az volt, hogy órává váljon. (Készíts egy színes végtelen tükröt) Az építés után nem folytattam ezt, mert bár jól nézett ki, volt néhány dolog a
Könnyű végtelen tükör Arduino Gemma és Neo Pixelekkel: 8 lépés (képekkel)
Könnyű végtelen tükör Arduino Gemma & NeoPixels -el: Íme! Nézzen mélyen a varázslatos és megtévesztően egyszerű végtelen tükörbe! A LED -ek egyetlen csíkja befelé ragyog a tükör szendvicsen, hogy a végtelen tükröződés hatását keltse. Ez a projekt az Arduin bevezetőm készségeit és technikáit fogja alkalmazni
Hangreaktív végtelen tükör: 5 lépés
Hangreaktív Infinity Mirror: Ebben az utasításban megmutatom, hogyan készítheti el ezt az Infinity Mirror -t. Kezdjük hát
Arduino interfész ultrahangos érzékelővel és érintésmentes hőmérséklet -érzékelővel: 8 lépés
Arduino interfész ultrahangos érzékelővel és érintésmentes hőmérséklet -érzékelővel: Manapság a gyártók, fejlesztők az Arduino -t részesítik előnyben a projektek prototípusainak gyors fejlesztése érdekében. Az Arduino egy nyílt forráskódú elektronikai platform, amely könnyen használható hardverre és szoftverre épül. Az Arduino nagyon jó felhasználói közösséggel rendelkezik. Ebben a projektben
Végtelen tükör és asztal (alkalmi eszközökkel): 7 lépés (képekkel)
Végtelen tükör és asztal (alkalmi eszközökkel): Szia mindenkinek! Egy ideje rátaláltam erre az oktathatóra, és azonnal magával vitt, és magam akartam készíteni, de nem tudtam a kezembe venni 1) Egyirányú plexiüveg, sem 2) CNC router. Kis keresgélés után rájöttem, hogy