Satura rādītājs:
- Piegādes
- 1. darbība: spoguļa un spoguļplēves uzstādīšana
- 2. darbība: LED sloksnes iestatīšana
- 3. darbība: IR sensora un LCD uzstādīšana (pēc izvēles)
- 4. solis: kods
- 5. solis: montāža
Video: Bezgalības spogulis ar LCD un IR sensoru: 5 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:51
Šis projekts parādīs, kā jūs varat izveidot bezgalības spoguli. Pamatkoncepcija ir tāda, ka uz spoguļa esošās gaismas diodes rada gaismu, kas atlec no aizmugurējā spoguļa uz priekšējo spoguli, kur daļa gaismas izplūst, lai mēs varētu redzēt iekšpusi, un daži tiek atspoguļoti atpakaļ aizmugurējā spogulī un rada bezgalīgu efektu. Tas ir balstīts uz bezgalības spoguli ar ultraskaņas sensoriem, ko nosaka Hack Sioux Falls, un to, kā JunezRiyaz savienot I2C LCD displeju ar Arduino Uno.
Piegādes
1. Ēnu kaste (50 ASV dolāri)
2. Vienvirziena spoguļplēve (17 ASV dolāri)
3. RGB LED gaismas sloksne (30 ASV dolāri)
4. Arduino (35 ASV dolāri)
5. Spogulis (10 ASV dolāri)
Neobligāti:
1. IR sensors un tālvadības pults (20 ASV dolāri)
2. LCD (20 ASV dolāri)
3. 7 sieviešu un vīriešu savienotāji
4. 3 savienotāji no vīriešiem līdz vīriešiem
Rīki
1. Lodāmurs
2. Stiepļu griezējs un noņēmējs
3. Ar ko griezt spoguli
*Ņemiet vērā, ka visas CAD cenas un izmēri būs atkarīgi no izmantotās kastes.
1. darbība: spoguļa un spoguļplēves uzstādīšana
Pirmā lieta, kas jādara, ir uzstādīt spoguli, kas atradīsies ēnu kastes aizmugurē. Jūs vēlaties iegūt vienu, kas ir pareizā izmēra, vai lielāku, un pēc tam to sagriezt. Bet šim nolūkam jums ir jāizmanto spogulis, nevis plēve, jo mēs vēlamies, lai visa gaisma tiktu atstarota atpakaļ, un arī spoguļplēve var pārņemt materiāla modeli, uz kura tas ir, ja tas nav stikls.
Uzstādot spoguli, noteikti to nostipriniet ēnu kastē, es ieteiktu izmantot mazus koka gabaliņus un naglas, lai pārliecinātos, ka spogulis nekustās. Man nebija spoguļa laikā, kad vajadzēja pabeigt šo projektu, tāpēc es izmantoju filmu (to var redzēt attēlos). Koncepcija darbojas, bet ne pārāk labi, un rada leņķisku un haotisku izskatu, kas, manuprāt, neizskatās labi.
Katra spoguļplēve būs nedaudz atšķirīga, bet tā, par ko es teicu, lai notīrītu stiklu, uz kuras mēs uzliekam plēvi, lai izmantotu lenti, lai noņemtu aizsargplēvi, kas atrodas vienā pusē, un izmantojot ziepjūdeni smidzinātājā pudele uzliek plēvi uz stikla. Pēc tam izmantojiet kredītkarti vai slotiņu, lai atbrīvotos no gaisa burbuļiem un liekā ūdens. Man atkal nebija stikla, bet tas joprojām darbojas tāpat. Pēc tam atstājiet stiklu nožūt uz nakti, un tas ir jādara.
2. darbība: LED sloksnes iestatīšana
Gaismas diodēm es vienkārši izmantoju komplektā iekļauto divpusējo lenti, lai to pielīmētu pie rāmja, un izveidoju caurumu, lai vads varētu iznākt. Katrā stūrī es lodēju vadus, lai izveidotu savienojumu ar citu sloksni, lai saglabātu kastes formu bez noapaļotām malām. Noteikti nogrieziet sloksnes tikai vietās, kur ir kontakti, kas ļautu tam notikt, un nepārslēdziet virzienu, kādā gaismas diodes savienojas viena ar otru, kas pazīstama kā polaritātes maiņa. Manai sloksnei bija bultiņas, lai pārliecinātos, ka tas nenotiek, tāpēc pārbaudiet, vai tās visas ir vērstas vienā virzienā.
Es izveidoju nelielu caurumu, lai izvilktu kabeli kastes ārpusei, manās gaismas diodes bija 3 kontaktu adresējamas gaismas diodes, tāpēc man bija strāvas, zemes un datu savienotāji. Datu savienotājam es izmantoju 3. ciparu tapu, noteikti pārbaudiet savas LED sloksnes, lai pārliecinātos, ka tās darbojas, pirms tās pielīmējat pie rāmja, un pārliecinieties, ka izmantojat tikai ieteicamo spriegumu, kas ir 5–6 V.
3. darbība: IR sensora un LCD uzstādīšana (pēc izvēles)
Es izvēlējos izmantot IR sensoru un tālvadības pulti, lai mainītu apgaismojuma efektus, un izmantot LCD, lai parādītu lietotājam to efektu iespējas.
Lai uzstādītu LCD un infrasarkano staru sensoru, es izmantotu karstu līmes pistoli un pielīmētu tos pie rāmja augšdaļas un visu savienotu ar aizmuguri, bet es negribēju, lai tie tiktu salaboti, jo, iespējams, man tie būs jānoņem pēc projekta ir darīts.
Lai savienotu LCD un IR uztvērēju, es izmantoju vīriešu un sieviešu savienotājus, kas tiek pievienoti Arduino, lai iegūtu datus, kā arī zemi un barošanu. Lai visu pieslēgtu vadam, es izmantoju 12. tapu ar 2 kΩ rezistoru uz IR sensora datu tapas, analogo tapu A4 LCD SDA un analoģisko tapu 5 LCD SCL.
4. solis: kods
Šim projektam es izmantoju dažas bibliotēkas, kuras jums būtu jāielādē, lai tās izmantotu. Es tos ievietošu šeit, paturiet prātā, ka es esmu uz Windows, lai tas varētu ietekmēt, ja izmantojat Mac vai Linux.
Jums būs jāmaina pikseļu skaits atkarībā no jūsu esošo gaismas diožu skaita. Es arī iebūvēju seriālā monitora saskarni, lai jūs varētu ar to saskarties, ja neizmantojat IR sensoru.
// Bibliotēkas
#include Adafruit_NeoPixel.h> #include #include #include // Piespraudes un nemainīgās vērtības // Piespraudes un nemainīgās vērtībasconst int RECV_PIN = 12; IRrecv irrecv (RECV_PIN); decode_results rezultāti; neparakstīts garš atslēgas_vērtība = 0; const int NUMPIXELS = 27;
Adafruit_NeoPixel pikseļi = Adafruit_NeoPixel (NUMPIXELS, 3);
LiquidCrystal_I2C LCD (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Mainīgie int IRNumb; int IRNumb2; int varavīksne = 0; uint32_t rainbowColor = pikseļi. Krāsa (0, 0, 0); char ievade = 0; char ieeja2 = 0; int r; int g; int b; int breakCondition = 0; void setup () {// Formalizē elementus, kas nav jāatkārto. lcd.begin (16, 2); // 16 kolonnu un 2 LCD displeja rindu definēšana lcd.backlight (); // Lai ieslēgtu fona apgaismojumu Serial.begin (9600); pikseļi.sākas (); irrecv.enableIRIn (); Serial.println ("Ievadiet 0, lai izslēgtu gaismas"); // Sākuma instrukcijas Serial.println ("Ievadiet 1, lai gaismas diodes kļūtu baltas"); Serial.println ("Ievadiet 2, lai gaismas diodes izietu dažādās krāsās"); Serial.println ("Ievadiet 3, lai manuāli pielāgotu LED krāsas"); } void loop () {IRNumb = 10; IRScan (); mainOptions (); if (Serial.available ()> 0) {// Pārbauda, vai rakstzīme ir pieejama? ievade = (char) Serial.read (); } // Izvēlas dažādas iespējas, ja (input == '1' || IRNumb == 1) {rainbowColor = colourChange (255, 255, 255); // Balts setAll (varavīksnesKrāsa); // Atjaunina gaismas diodes} else if (input == '0' || IRNumb == 0) {rainbowColor = colourChange (0, 0, 0); // Off setAll (varavīksnes krāsa); // Atjaunina gaismas diodes} else if (input == '2' || IRNumb == 2) {breakCondition = 0; r = 0; g = 0; b = 0;
Serial.println ("Ievadiet visu, kas nav 2, lai izietu no šī efekta, tad jebkuru no jaunajām iespējām, lai iegūtu jaunu efektu.");
lcd.clear (); // Notīriet ekrānu lcd.setCursor (0, 0); lcd.print ("Iziet, izmantojot jebkuru"); lcd.setCursor (0, 1); lcd.print ("sastindzis tas! = 2"); par (int i = 0; i = 48 && ievade <= 57) || breakCondition == 1 || IRNumb! = 2) {// Pārbauda, vai no efekta jāiziet varavīksneColor = colourChange (0, 0, 0); setAll (varavīksnes krāsa); breakCondition = 1; pārtraukums; } varavīksneKrāsa = krāsaMainīt (i, 0, 0); setAll (varavīksnes krāsa); showStrip (); kavēšanās (100); } par (int i = 0; i = 48 && ievade <= 57) || breakCondition == 1 || IRNumb! = 2) {// Pārbauda, vai no efekta jāiziet varavīksneColor = colourChange (0, 0, 0); setAll (varavīksnes krāsa); breakCondition = 1; pārtraukums; } g ++; varavīksneKrāsa = krāsaMainīt (i, g, 0); setAll (varavīksnes krāsa); showStrip (); kavēšanās (100); } par (int g = 0; g = 48 && ievade <= 57) || breakCondition == 1 || IRNumb! = 2) {// Pārbauda, vai no efekta jāiziet varavīksneColor = colourChange (0, 0, 0); setAll (varavīksnes krāsa); breakCondition = 1; pārtraukums; } r+= 2; varavīksneKrāsa = krāsaMainīt (r, g, 0); setAll (varavīksnes krāsa); showStrip (); kavēšanās (100); } par (int b = 0; b = 48 && ievade <= 57) || breakCondition == 1 || IRNumb! = 2) {// Pārbauda, vai no efekta jāiziet varavīksneColor = colourChange (0, 0, 0); setAll (varavīksnes krāsa); breakCondition = 1; pārtraukums; } r+= 2; g+= 5; varavīksneKrāsa = krāsaMainīt (r, g, b); setAll (varavīksnes krāsa); showStrip (); kavēšanās (100); } mainOptions (); } cits if (ievade == '3' || IRNumb == 3) {r = 0; g = 0; b = 0;
Serial.println ("Ievadiet n, lai izietu");
Serial.println ("Izmantojiet w un s, lai palielinātu vai samazinātu sarkano krāsu"); Serial.println ("Izmantojiet r un f, lai palielinātu vai samazinātu zaļo krāsu"); Serial.println ("Izmantojiet y un h, lai palielinātu vai samazinātu zilo krāsu"); lcd.clear (); // Notīriet ekrānu lcd.setCursor (0, 0); lcd.print ("izeja: 0, 4/7: +/- sarkana"); lcd.setCursor (0, 1); lcd.print ("5/8: zaļa, 6/9: zila");
kamēr (ievade2! = 'n' || IRNumb2! = 0) {
ja (Serial.available ()> 0) {// vai ir pieejama rakstzīme? input2 = (char) Serial.read (); } // Sērijas.println (IRNumb2); IRNumb2 = 10; IRScan2 ();
ja (IRNumb2 == 0) {
pārtraukums; } ja (ievade2 == 'w' || IRNumb2 == 4) {r+= 2; varavīksneKrāsa = krāsaMainīt (r, g, b); setAll (varavīksnes krāsa); showStrip (); } cits if (input2 == 's' || IRNumb2 == 7) {r- = 2; varavīksneKrāsa = krāsaMainīt (r, g, b); setAll (varavīksnes krāsa); showStrip (); } cits if (input2 == 'r' || IRNumb2 == 5) {g+= 2; varavīksneKrāsa = krāsaMainīt (r, g, b); setAll (varavīksnes krāsa); showStrip (); } cits if (input2 == 'f' || IRNumb2 == 8) {g- = 2; varavīksneKrāsa = krāsaMainīt (r, g, b); setAll (varavīksnes krāsa); showStrip (); }
citādi, ja (ievade2 == 'y' || IRNumb2 == 6) {
b+= 2; varavīksneKrāsa = krāsaMainīt (r, g, b); setAll (varavīksnes krāsa); showStrip (); }
citādi, ja (ievade2 == 'h' || IRNumb2 == 9) {
b- = 2; varavīksneKrāsa = krāsaMainīt (r, g, b); setAll (varavīksnes krāsa); showStrip (); }} mainOptions (); } setAll (varavīksnes krāsa); showStrip (); } void showStrip () {pixels.show (); } void setAll (uint32_t color) {for (int i = 0; i <NUMPIXELS; i ++) {pixels.setPixelColor (i, krāsa); }} // Ievadiet vērtību no 0 līdz 255, lai iegūtu krāsas vērtību. uint32_t colourChange (int r, int g, int b) {return pixels. Color (r, g, b); } void mainOptions () {// Izskata galvenās efektu iespējas lcd.clear (); // Notīriet ekrānu lcd.setCursor (0, 0); lcd.print ("0 Lights off"); lcd.setCursor (0, 1); lcd.print ("1: balta gaisma"); kavēšanās (1000); lcd.clear (); // Notīriet ekrānu lcd.setCursor (0, 0); lcd.print ("2: krāsu efekts"); lcd.setCursor (0, 1); lcd.print ("3: rokasgrāmata"); kavēšanās (1000); } void IRScan () {if (irrecv.decode (& rezultāti)) {
ja (results.value == 0XFFFFFFFF)
results.value = atslēgas_vērtība; else {//Serial.println(results.value, HEX); ja (results.value == 0xFF6897 || results.value == 0xC101E57B) {IRNumb = 0; //Serial.println("0 "); } cits if (results.value == 0x9716BE3F || results.value == 0xFF30CF) {IRNumb = 1; //Serial.println("1 "); } cits if (results.value == 0x3D9AE3F7 || results.value == 0xFF18E7) {IRNumb = 2; //Serial.println("2 "); } cits if (results.value == 0xFF7A85 || results.value == 0x6182021B) {IRNumb = 3; // Serial.println ("3"); } cits if (results.value == 0x8C22657B || results.value == 0xFF10EF) {IRNumb = 4; //Serial.println("4 "); } cits if (results.value == 0xFF38C7 || results.value == 0x488F3CBB) {IRNumb = 5; // Serial.println ("5"); } cits if (results.value == 0x449E79F || results.value == 0xFF5AA5) {IRNumb = 6; // Serial.println ("6"); } cits if (results.value == 0xFF42BD || results.value == 0x32C6FDF7) {IRNumb = 7; //Serial.println("7 "); } cits if (results.value == 0x1BC0157B || results.value == 0xFF4AB5) {IRNumb = 8; //Serial.println("8 "); } cits if (results.value == 0xFF52AD || results.value == 0x3EC3FC1B) {IRNumb = 9; // Serial.println ("9"); }} atslēgas_vērtība = rezultāti.vērtība; irrecv.resume (); }} anulēts IRScan2 () {if (irrecv.decode (& rezultāti)) {
ja (results.value == 0XFFFFFFFF)
results.value = atslēgas_vērtība; else {// Serial.println (results.value, HEX); ja (results.value == 0xFF6897 || results.value == 0xC101E57B) {IRNumb2 = 0; //Serial.println("0 "); } cits if (results.value == 0x9716BE3F || results.value == 0xFF30CF) {IRNumb2 = 1; //Serial.println("1 "); } cits if (results.value == 0x3D9AE3F7 || results.value == 0xFF18E7) {IRNumb2 = 2; //Serial.println("2 "); } cits if (results.value == 0xFF7A85 || results.value == 0x6182021B) {IRNumb2 = 3; // Serial.println ("3"); } cits if (results.value == 0x8C22657B || results.value == 0xFF10EF) {IRNumb2 = 4; //Serial.println("4 "); } cits if (results.value == 0xFF38C7 || results.value == 0x488F3CBB) {IRNumb2 = 5; // Serial.println ("5"); } cits if (results.value == 0x449E79F || results.value == 0xFF5AA5) {IRNumb2 = 6; // Serial.println ("6"); } cits if (results.value == 0xFF42BD || results.value == 0x32C6FDF7) {IRNumb2 = 7; //Serial.println("7 "); } cits if (results.value == 0x1BC0157B || results.value == 0xFF4AB5) {IRNumb2 = 8; //Serial.println("8 "); } cits if (results.value == 0xFF52AD || results.value == 0x3EC3FC1B) {IRNumb2 = 9; // Serial.println ("9"); }} atslēgas_vērtība = rezultāti.vērtība; irrecv.resume (); }}
5. solis: montāža
Lai uzstādītu Arduino pie rāmja, es vienkārši pielīmēju to un rīvdēli, ko izmantoju rāmja aizmugurē, un mēģinu pārklāt/slēpt kabeļus, lai tas izskatās labi.
Ieteicams:
Vienkāršs bezgalības spogulis ar Arduino Gemma un Neo pikseļiem: 8 soļi (ar attēliem)
Vienkāršs bezgalības spogulis ar Arduino Gemma un NeoPixels: Lūk! Ieskaties dziļi burvīgajā un maldinoši vienkāršajā bezgalības spogulī! Viena gaismas diodes sloksne spīd uz iekšu uz spoguļa sviestmaizi, lai radītu bezgalīgas pārdomas efektu. Šis projekts izmantos manā ievadā Arduin iegūtās prasmes un paņēmienus
Skaņas reaktīvs bezgalības spogulis: 5 soļi
Skaņas reaktīvs bezgalības spogulis: šajā pamācībā es jums parādīšu, kā jūs varat izveidot šo bezgalības spoguli. Tātad, sāksim
Bezgalības spogulis un galds (ar ikdienas instrumentiem): 7 soļi (ar attēliem)
Bezgalības spogulis un galds (ar ikdienas instrumentiem): Čau visiem! Pirms kāda laika es saskāros ar šo pamācību, un es to uzreiz paņēmu līdzi un gribēju izveidot savu, bet nevarēju pieķerties 1) Vienvirziena plexiglass spogulis, ne 2) CNC maršrutētājs. Mazliet meklējot apkārt, es nonācu pie
Burbuļsienas bezgalības spogulis: 11 soļi
Burbuļsienas bezgalības spogulis: Laipni lūdzam burbuļsienas bezgalības spoguļa projektā
Interaktīvs bezgalības spogulis: 9 soļi (ar attēliem)
Interaktīvs bezgalības spogulis: šīs klases uzdevums bija vienkāršs, taču sarežģīts: izveidojiet kaut ko interaktīvu ar Arduino. Tam bija jābūt labi izstrādātam, pietiekami tehniski izaicinošam un oriģinālam, lai mūsdienās oriģinālās idejas būtu pieejamas tādās vietnēs kā Instructables. Fro