Obsah:

Zrcadlo Infinity s LCD a IR senzorem: 5 kroků
Zrcadlo Infinity s LCD a IR senzorem: 5 kroků

Video: Zrcadlo Infinity s LCD a IR senzorem: 5 kroků

Video: Zrcadlo Infinity s LCD a IR senzorem: 5 kroků
Video: КИТАЙЦЫ, ЧТО ВЫ ТВОРИТЕ??? 35 СУПЕР ТОВАРОВ ДЛЯ АВТОМОБИЛЯ С ALIEXPRESS 2024, Listopad
Anonim
Infinity Mirror s LCD a IR senzorem
Infinity Mirror s LCD a IR senzorem
Infinity Mirror s LCD a IR senzorem
Infinity Mirror s LCD a IR senzorem
Infinity Mirror s LCD a IR senzorem
Infinity Mirror s LCD a IR senzorem

Tento projekt vám ukáže, jak si můžete vyrobit Infinity Mirror. Základní koncepce spočívá v tom, že LED diody na zrcadle vytvářejí světlo, které se odráží od zpětného zrcátka k přednímu zrcátku, odkud některé světlo uniká, takže vidíme dovnitř a některé se odráží zpět do zpětného zrcátka a vytváří nekonečný efekt. To je založeno na Infinity Mirror s ultra zvukovými senzory, které lze instruovat Hack Sioux Falls a jak připojit LCD displej I2C k Arduino Uno od JunezRiyaz.

Zásoby

1. Shadow Box (50 $)

2. Jednosměrný zrcadlový film (17 $)

3. RGB LED světelný pás (30 $)

4. Arduino (35 $)

5. Zrcadlo (10 $)

Volitelný:

1. IR senzor a dálkové ovládání (20 $)

2. LCD (20 $)

3. 7 konektorů žena - muž

4. 3 konektory muž - muž

Nástroje

1. Páječka

2. Řezačka drátu a odizolovač

3. Něčím, čím uříznu zrcadlo

*Všechny ceny v CAD a velikostech budou záviset na krabici, kterou použijete.

Krok 1: Instalace zrcadla a zrcadlové fólie

Instalace zrcátka a zrcadlové fólie
Instalace zrcátka a zrcadlové fólie
Instalace zrcátka a zrcadlové fólie
Instalace zrcátka a zrcadlové fólie

První věcí, kterou musíte udělat, je nainstalovat zrcadlo, které bude v zadní části stínového pole. Chcete buď získat ten, který má správnou velikost, nebo si pořídit větší a pak ho snížit. Ale k tomu musíte použít zrcadlo a ne film, protože chceme, aby se veškeré světlo odráželo zpět, zrcadlový film může také převzít vzor materiálu, na kterém je, pokud to není sklo.

Při instalaci zrcadla jej zajistěte ve stínítku, doporučil bych použít malé kousky dřeva a hřebíky, abyste se ujistili, že se zrcadlo nepohybuje. V době, kdy jsem měl dokončit tento projekt, jsem neměl zrcadlo, takže jsem použil film (můžete vidět na obrázcích). Koncept funguje, ale ne příliš dobře a dává šikmý a chaotický vzhled, který podle mého názoru nevypadá dobře.

Každý zrcadlový film bude trochu jiný, ale ten, o kterém jsem řekl, že vyčistí sklo, na které film dáváme, a pak pomocí pásky sundá ochrannou fólii, která je na jedné straně, a pomocí mýdlové vody ve spreji láhev položte film na sklo. Poté pomocí kreditní karty nebo stěrky odstraňte případné vzduchové bubliny a přebytečnou vodu. Znovu jsem neměl sklo, ale stále funguje stejně. Poté nechte sklenici přes noc zaschnout a mělo by být hotovo.

Krok 2: Nastavení LED pásku

Nastavení LED pásku
Nastavení LED pásku
Nastavení LED pásku
Nastavení LED pásku

U LED jsem použil přiloženou oboustrannou pásku, kterou jsem ji přilepil k rámu, a vytvořil otvor pro vyvedení drátu. V každém rohu jsem připájel vývody, abych se připojil k jinému pásu, aby tvar krabice zůstal bez zaoblených hran. Dbejte na to, abyste proužky odřezávali pouze v místech, kde jsou kontakty, které by to umožnily, a neměňte směr, ve kterém se diody LED navzájem spojují, známé jako obrácení polarity. Pruh, který jsem dostal, měl šipky, aby se to nestalo, takže zkontrolujte, zda všechny směřují stejným směrem.

Udělal jsem malý otvor, kterým prošel kabel ven z krabice, LED diody, které jsem měl, byly 3 pinové adresovatelné LED, takže jsem měl napájecí, zemní a datové konektory. Pro datový konektor jsem použil Digital Pin 3, nezapomeňte otestovat své LED pásky, abyste se ujistili, že fungují, než je přilepíte k rámu, a ujistěte se, že používáte pouze doporučené napětí pro ten, který je 5 - 6 V.

Krok 3: Montáž infračerveného senzoru a displeje LCD (volitelně)

Montáž infračerveného senzoru a LCD (volitelně)
Montáž infračerveného senzoru a LCD (volitelně)
Montáž infračerveného senzoru a LCD (volitelně)
Montáž infračerveného senzoru a LCD (volitelně)
Montáž infračerveného senzoru a LCD (volitelně)
Montáž infračerveného senzoru a LCD (volitelně)

Rozhodl jsem se použít IR senzor a dálkové ovládání pro změnu světelných efektů a použít LCD displej, abych uživateli ukázal možnosti, které má pro efekty.

K montáži senzoru LCD a IR bych použil horkou lepicí pistoli a přilepil je k horní části rámu a zapojil vše na zadní stranu, ale nechtěl jsem je opravit, protože je možná budu muset po projektu sundat je hotovo.

Pro připojení LCD a IR přijímače jsem použil konektory Male to Female, které se připojují k Arduinu pro data i uzemnění a napájení. K propojení všeho jsem použil pin 12 s odporem 2 kΩ na datovém pinu pro IR senzor, analogový pin A4 pro SDA na LCD a analogový pin 5 pro SCL LCD.

Krok 4: Kód

Pro tento projekt používám několik knihoven, které byste si museli stáhnout, abyste je mohli používat. Dám je sem, mějte na paměti, že jsem na Windows, takže to může mít účinek, pokud jste na Macu nebo Linuxu.

Budete muset změnit počet pixelů v závislosti na počtu LED, které máte. Také jsem vestavěl rozhraní sériového monitoru, takže s ním můžete komunikovat, pokud nepoužíváte IR senzor.

// Knihovny

#include Adafruit_NeoPixel.h> #include #include #include // Pins and Constant values // Pins and Constant valuesconst int RECV_PIN = 12; IRrecv unbcv (RECV_PIN); decode_results výsledky; unsigned long key_value = 0; const int NUMPIXELS = 27;

Pixely Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, 3);

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POZITIVNÍ); // Proměnné int IRNumb; int IRNumb2; int duha = 0; uint32_t rainbowColor = pixely. Color (0, 0, 0); char vstup = 0; char vstup2 = 0; int r; int g; int b; int breakCondition = 0; void setup () {// Inicializuje prvky, které není třeba opakovat. lcd.begin (16, 2); // Definování 16 sloupců a 2 řádků displeje lcd.backlight (); // Zapnutí podsvícení Serial.begin (9600); pixely.begin (); unbcv.enableIRIn (); Serial.println („Zadáním 0 vypnete světla“); // Pokyny pro začátek Serial.println ("Zadáním 1 změníte LED na bílou"); Serial.println („Zadejte 2, aby diody LED procházely různými barvami“); Serial.println („Zadejte 3 pro ruční přizpůsobení barev LED“); } void loop () {IRNumb = 10; IRScan (); mainOptions (); if (Serial.available ()> 0) {// Zkontroluje, zda je k dispozici znak? vstup = (char) Serial.read (); } // Volí různé možnosti if (input == '1' || IRNumb == 1) {rainbowColor = colourChange (255, 255, 255); // White setAll (rainbowColor); // Aktualizuje LED} else if (vstup == '0' || IRNumb == 0) {rainbowColor = colourChange (0, 0, 0); // Vypnuto setAll (rainbowColor); // Aktualizuje LED} else if (vstup == '2' || IRNumb == 2) {breakCondition = 0; r = 0; g = 0; b = 0;

Serial.println ("Chcete -li tento efekt ukončit, zadejte cokoli, co není 2, pak některou z předchozích možností pro nový efekt.");

lcd.clear (); // Vyčištění obrazovky lcd.setCursor (0, 0); lcd.print ("Ukončit pomocí any-"); lcd.setCursor (0, 1); lcd.print ("otupit to! = 2"); pro (int i = 0; i = 48 && vstup <= 57) || breakCondition == 1 || IRNumb! = 2) {// Zkontroluje, zda je třeba efekt ukončit rainbowColor = colourChange (0, 0, 0); setAll (rainbowColor); breakCondition = 1; přestávka; } rainbowColor = colourChange (i, 0, 0); setAll (rainbowColor); showStrip (); zpoždění (100); } pro (int i = 0; i = 48 && vstup <= 57) || breakCondition == 1 || IRNumb! = 2) {// Zkontroluje, zda je třeba efekt ukončit rainbowColor = colourChange (0, 0, 0); setAll (rainbowColor); breakCondition = 1; přestávka; } g ++; rainbowColor = colourChange (i, g, 0); setAll (rainbowColor); showStrip (); zpoždění (100); } pro (int g = 0; g = 48 && vstup <= 57) || breakCondition == 1 || IRNumb! = 2) {// Zkontroluje, zda je třeba efekt ukončit rainbowColor = colourChange (0, 0, 0); setAll (rainbowColor); breakCondition = 1; přestávka; } r+= 2; rainbowColor = colourChange (r, g, 0); setAll (rainbowColor); showStrip (); zpoždění (100); } pro (int b = 0; b = 48 && vstup <= 57) || breakCondition == 1 || IRNumb! = 2) {// Zkontroluje, zda je třeba efekt ukončit rainbowColor = colourChange (0, 0, 0); setAll (rainbowColor); breakCondition = 1; přestávka; } r+= 2; g+= 5; rainbowColor = colourChange (r, g, b); setAll (rainbowColor); showStrip (); zpoždění (100); } mainOptions (); } else if (vstup == '3' || IRNumb == 3) {r = 0; g = 0; b = 0;

Serial.println ("Enter n to exit");

Serial.println („Pomocí w a s zvyšte nebo snižte červenou barvu“); Serial.println („Použijte r a f ke zvýšení nebo snížení zelené barvy“); Serial.println („Použijte y a h ke zvýšení nebo snížení modré barvy“); lcd.clear (); // Vyčištění obrazovky lcd.setCursor (0, 0); lcd.print ("exit: 0, 4/7: +/- red"); lcd.setCursor (0, 1); lcd.print („5/8: zelená, 6/9: modrá“);

while (input2! = 'n' || IRNumb2! = 0) {

if (Serial.available ()> 0) {// is a character available? input2 = (char) Serial.read (); } //Serial.println(IRNumb2); IRNumb2 = 10; IRScan2 ();

if (IRNumb2 == 0) {

přestávka; } if (input2 == 'w' || IRNumb2 == 4) {r+= 2; rainbowColor = colourChange (r, g, b); setAll (rainbowColor); showStrip (); } else if (input2 == 's' || IRNumb2 == 7) {r- = 2; rainbowColor = colourChange (r, g, b); setAll (rainbowColor); showStrip (); } else if (input2 == 'r' || IRNumb2 == 5) {g+= 2; rainbowColor = colourChange (r, g, b); setAll (rainbowColor); showStrip (); } else if (input2 == 'f' || IRNumb2 == 8) {g- = 2; rainbowColor = colourChange (r, g, b); setAll (rainbowColor); showStrip (); }

else if (input2 == 'y' || IRNumb2 == 6) {

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

else if (input2 == 'h' || IRNumb2 == 9) {

b- = 2; rainbowColor = colourChange (r, g, b); setAll (rainbowColor); showStrip (); }} mainOptions (); } setAll (rainbowColor); showStrip (); } void showStrip () {pixely.show (); } void setAll (barva uint32_t) {for (int i = 0; i <NUMPIXELS; i ++) {pixely.setPixelColor (i, barva); }} // Zadáním hodnoty 0 až 255 získáte hodnotu barvy. uint32_t colourChange (int r, int g, int b) {návrat pixelů. Color (r, g, b); } void mainOptions () {// Zobrazí hlavní možnosti efektu lcd.clear (); // Vyčištění obrazovky lcd.setCursor (0, 0); lcd.print („0 pro zhasnutá světla“); lcd.setCursor (0, 1); lcd.print („1: White Light“); zpoždění (1000); lcd.clear (); // Vyčištění obrazovky lcd.setCursor (0, 0); lcd.print ("2: Barevný efekt"); lcd.setCursor (0, 1); lcd.print ("3: Manual"); zpoždění (1000); } void IRScan () {if (unbcv.decode (& results)) {

if (results.value == 0XFFFFFFFF)

results.value = hodnota_klíče; 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 (vysledky.hodnota == 0xFF7A85 || vysledky.hodnota == 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"); }} key_value = results.value; unbcv.resume (); }} neplatné IRScan2 () {if (unbcv.decode (& results)) {

if (results.value == 0XFFFFFFFF)

results.value = hodnota_klíče; 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"); }} key_value = results.value; unbcv.resume (); }}

Krok 5: Montáž

Montáž
Montáž

Chcete -li namontovat Arduino na rám, jednoduše bych jej nalepil a prkénko, které jsem použil na zadní stranu rámu, a pokusil se zakrýt/skrýt kabely, aby to vypadalo dobře.

Doporučuje: