Isi kandungan:
- Bekalan
- Langkah 1: Memasang Cermin dan Filem Cermin
- Langkah 2: Menyiapkan Jalur LED
- Langkah 3: Memasang Sensor IR dan LCD (Pilihan)
- Langkah 4: Kod
- Langkah 5: Pemasangan
Video: Infinity Mirror Dengan Sensor LCD dan IR: 5 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
Projek ini akan menunjukkan kepada anda bagaimana anda boleh membuat Infinity Mirror. Konsep asasnya adalah bahawa LED yang ada di cermin menghasilkan cahaya yang memantul dari cermin belakang ke cermin depan di mana beberapa cahaya keluar sehingga kita dapat melihat ke dalam dan ada yang dipantulkan kembali ke cermin belakang dan menghasilkan kesan yang tidak terhingga. Ini berdasarkan Infinity Mirror With Ultra Sonic Sensors Instructable oleh Hack Sioux Falls dan Cara Menghubungkan Paparan Lcd I2C ke Arduino Uno oleh JunezRiyaz.
Bekalan
1. Kotak Bayangan ($ 50)
2. Filem Cermin 1 arah ($ 17)
3. Jalur lampu LED RGB ($ 30)
4. Arduino ($ 35)
5. Cermin ($ 10)
Pilihan:
1. Sensor IR dan Alat Jauh ($ 20)
2. LCD ($ 20)
3. 7 Penyambung Wanita ke Lelaki
4. 3 Penyambung Lelaki ke Lelaki
Alat
1. Besi Pematerian
2. Wire Cutter dan Stripper
3. Sesuatu untuk memotong cermin dengan
* Perhatikan semua harga dalam CAD dan ukuran akan bergantung pada kotak yang anda gunakan.
Langkah 1: Memasang Cermin dan Filem Cermin
Perkara pertama yang perlu dilakukan ialah memasang cermin yang akan berada di bahagian belakang kotak bayangan. Anda mahu mendapatkan satu yang berukuran tepat atau mendapatkan yang lebih besar dan kemudian memotongnya. Tetapi untuk ini, anda harus menggunakan cermin dan bukan filemnya kerana kita ingin semua cahaya dipantulkan kembali, filem cermin juga dapat mengambil corak bahan yang dipakainya jika bukan kaca.
Semasa anda memasang cermin pastikan untuk menyimpannya di kotak bayangan, saya akan mengesyorkan menggunakan potongan kayu dan paku kecil untuk memastikan cermin tidak bergerak. Saya tidak mempunyai cermin pada masa saya harus menyelesaikan projek ini jadi saya menggunakan filem ini (Anda dapat lihat dalam gambar). Konsepnya berjaya tetapi tidak begitu baik dan memberikan pandangan bersudut dan huru-hara yang pada pendapat saya tidak kelihatan baik.
Setiap filem cermin akan sedikit berbeza tetapi yang saya katakan untuk membersihkan kaca yang kita pasangkan filem itu kemudian menggunakan pita untuk menanggalkan filem pelindung yang ada di satu sisi dan menggunakan air sabun dalam semburan botol meletakkan filem di kaca. Kemudian gunakan kad kredit atau pemeras untuk menghilangkan gelembung udara dan lebihan air. Saya sekali lagi tidak mempunyai kaca tetapi masih berfungsi sama. Kemudian biarkan gelas hingga kering semalaman dan ia mesti selesai.
Langkah 2: Menyiapkan Jalur LED
Untuk LED, saya hanya menggunakan pita dua sisi yang disertakan untuk melekatkannya pada bingkai dan membuat lubang untuk wayar keluar. Di setiap sudut, saya menyambung kabel untuk menyambung ke jalur lain untuk mengekalkan bentuk kotak tanpa tepi bulat. Pastikan hanya memotong jalur pada titik-titik di mana terdapat kenalan yang membenarkannya berlaku dan jangan menukar arah yang disambungkan LED satu sama lain yang dikenali sebagai membalikkan kekutuban. Jalur yang saya dapat mempunyai anak panah untuk memastikan ini tidak berlaku, jadi pastikan untuk memeriksa semuanya menunjuk ke arah yang sama.
Saya membuat lubang kecil untuk memasukkan kabel ke bahagian luar kotak, LED yang saya miliki adalah LED 3 Pin yang boleh ditujukan sehingga saya mempunyai penyambung kuasa, tanah dan data. Saya menggunakan Digital Pin 3 untuk penyambung data, pastikan untuk menguji jalur LED anda untuk memastikannya berfungsi sebelum melekatkannya pada bingkai dan pastikan hanya menggunakan voltan yang disyorkan untuk voltan saya iaitu 5 - 6 V.
Langkah 3: Memasang Sensor IR dan LCD (Pilihan)
Saya memilih untuk menggunakan sensor IR dan alat kawalan jauh untuk menukar kesan pencahayaan dan untuk menggunakan dan LCD untuk menunjukkan kepada pengguna pilihan yang mereka ada untuk kesannya.
Untuk memasang sensor LCD dan IR, saya akan menggunakan pistol lem panas dan melekatkannya di bahagian atas bingkai dan menyambungkan semuanya ke bahagian belakang tetapi saya tidak mahu mereka diperbaiki kerana saya mungkin harus melepaskannya selepas projek telah siap.
Untuk menyambungkan Penerima LCD dan IR, saya menggunakan Penyambung Lelaki ke Wanita yang menyambungkan ke Arduino untuk data serta tanah dan kuasa. Untuk memasangkan semuanya, saya menggunakan pin 12 dengan perintang 2 kΩ pada pin data untuk sensor IR, Analog Pin A4 untuk SDA LCD dan Analog Pin 5 untuk SCL LCD.
Langkah 4: Kod
Untuk projek ini, saya menggunakan beberapa perpustakaan yang mesti anda muat turun untuk digunakan. Saya akan meletakkannya di sini, ingatlah bahawa saya berada di tingkap sehingga boleh memberi kesan sekiranya anda menggunakan Mac atau Linux.
Anda mesti menukar bilangan piksel bergantung pada jumlah LED yang anda miliki. Saya juga membina antara muka Serial Monitor supaya anda dapat berinteraksi dengan cara itu jika anda tidak menggunakan sensor IR.
// Perpustakaan
#include Adafruit_NeoPixel.h> #include #include #include // Nilai pin dan pemalar // Pin dan nilai tetap Konst int RECV_PIN = 12; IRrecv irrecv (RECV_PIN); keputusan decode_results; key_value panjang yang tidak ditandatangani = 0; const int NUMPIXELS = 27;
Piksel Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, 3);
LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIF); // Pemboleh ubah int IRNumb; int IRNumb2; int pelangi = 0; uint32_t rainbowColor = piksel. Warna (0, 0, 0); input char = 0; input char2 = 0; int r; int g; int b; int breakCondition = 0; batal persediaan () {// Menginit elemen yang tidak perlu diulang. lcd.begin (16, 2); // Mendefinisikan 16 lajur dan 2 baris paparan lcd lcd.backlight (); // Untuk menghidupkan lampu belakang Serial.begin (9600); piksel.begin (); irrecv.enableIRIn (); Serial.println ("Masukkan 0 untuk mematikan lampu"); // Arahan Permulaan Serial.println ("Masukkan 1 untuk menukar LED menjadi putih"); Serial.println ("Masukkan 2 untuk membuat kitaran LED melalui warna yang berbeza"); Serial.println ("Masukkan 3 untuk menyesuaikan warna LED secara manual"); } gelung kosong () {IRNumb = 10; IRScan (); pilihan utama (); if (Serial.available ()> 0) {// Memeriksa apakah watak tersedia? input = (char) Serial.read (); } // Memilih pelbagai pilihan sekiranya (input == '1' || IRNumb == 1) {rainbowColor = colourChange (255, 255, 255); // Set putihSemua (pelangiColor); // Mengemas kini LED} lain jika (input == '0' || IRNumb == 0) {rainbowColor = colourChange (0, 0, 0); // Off setAll (pelangiColor); // Mengemas kini LED} lain jika (input == '2' || IRNumb == 2) {breakCondition = 0; r = 0; g = 0; b = 0;
Serial.println ("Masukkan apa-apa yang bukan 2 untuk keluar dari kesan ini, maka mana-mana pilihan sebelum ini untuk kesan baru.");
lcd.clear (); // Bersihkan skrin lcd.setCursor (0, 0); lcd.print ("Keluar menggunakan sebarang-"); lcd.setCursor (0, 1); lcd.print ("kebas! = 2"); untuk (int i = 0; i = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Memeriksa apakah kesannya perlu dikeluarkan rainbowColor = colourChange (0, 0, 0); setAll (pelangiColor); breakCondition = 1; rehat; } rainbowColor = colourChange (i, 0, 0); setAll (pelangiColor); pertunjukanStrip (); kelewatan (100); } untuk (int i = 0; i = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Memeriksa apakah kesannya perlu dikeluarkan rainbowColor = colourChange (0, 0, 0); setAll (pelangiColor); breakCondition = 1; rehat; } g ++; rainbowColor = colourChange (i, g, 0); setAll (pelangiColor); pertunjukanStrip (); kelewatan (100); } untuk (int g = 0; g = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Memeriksa apakah kesannya perlu dikeluarkan rainbowColor = colourChange (0, 0, 0); setAll (pelangiColor); breakCondition = 1; rehat; } r + = 2; rainbowColor = colourChange (r, g, 0); setAll (pelangiColor); pertunjukanStrip (); kelewatan (100); } untuk (int b = 0; b = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Memeriksa apakah kesannya perlu dikeluarkan rainbowColor = colourChange (0, 0, 0); setAll (pelangiColor); breakCondition = 1; rehat; } r + = 2; g + = 5; rainbowColor = colourChange (r, g, b); setAll (pelangiColor); pertunjukanStrip (); kelewatan (100); } pilihan utama (); } lain jika (input == '3' || IRNumb == 3) {r = 0; g = 0; b = 0;
Serial.println ("Masukkan n untuk keluar");
Serial.println ("Gunakan w dan s untuk menambah atau menurunkan warna merah"); Serial.println ("Gunakan r dan f untuk menambah atau menurunkan warna hijau"); Serial.println ("Gunakan y dan h untuk menambah atau menurunkan warna biru"); lcd.clear (); // Bersihkan skrin lcd.setCursor (0, 0); lcd.print ("keluar: 0, 4/7: +/- merah"); lcd.setCursor (0, 1); lcd.print ("5/8: hijau, 6/9: biru");
sementara (input2! = 'n' || IRNumb2! = 0) {
jika (Serial.available ()> 0) {// adakah watak tersedia? input2 = (char) Serial.read (); } //Serial.println(IRNumb2); IRNumb2 = 10; IRScan2 ();
jika (IRNumb2 == 0) {
rehat; } jika (input2 == 'w' || IRNumb2 == 4) {r + = 2; rainbowColor = colourChange (r, g, b); setAll (pelangiColor); pertunjukanStrip (); } lain jika (input2 == 's' || IRNumb2 == 7) {r- = 2; rainbowColor = colourChange (r, g, b); setAll (pelangiColor); pertunjukanStrip (); } lain jika (input2 == 'r' || IRNumb2 == 5) {g + = 2; rainbowColor = colourChange (r, g, b); setAll (pelangiColor); pertunjukanStrip (); } lain jika (input2 == 'f' || IRNumb2 == 8) {g- = 2; rainbowColor = colourChange (r, g, b); setAll (pelangiColor); pertunjukanStrip (); }
lain jika (input2 == 'y' || IRNumb2 == 6) {
b + = 2; rainbowColor = colourChange (r, g, b); setAll (pelangiColor); pertunjukanStrip (); }
lain jika (input2 == 'h' || IRNumb2 == 9) {
b- = 2; rainbowColor = colourChange (r, g, b); setAll (pelangiColor); pertunjukanStrip (); }} pilihan utama (); } setAll (pelangiColor); pertunjukanStrip (); } batal showStrip () {pixels.show (); } batal setAll (warna uint32_t) {untuk (int i = 0; i <NUMPIXELS; i ++) {pixels.setPixelColor (i, color); }} // Masukkan nilai 0 hingga 255 untuk mendapatkan nilai warna. uint32_t colourChange (int r, int g, int b) {return pixels. Color (r, g, b); } batal mainOptions () {// Menentukan pilihan kesan utama lcd.clear (); // Bersihkan skrin lcd.setCursor (0, 0); lcd.print ("0 Untuk Lampu mati"); lcd.setCursor (0, 1); lcd.print ("1: Cahaya Putih"); kelewatan (1000); lcd.clear (); // Bersihkan skrin lcd.setCursor (0, 0); lcd.print ("2: Kesan warna"); lcd.setCursor (0, 1); lcd.print ("3: Manual"); kelewatan (1000); } batalkan IRScan () {if (irrecv.decode (& hasil)) {
jika (hasil.value == 0XFFFFFFFF)
hasil.value = key_value; yang lain {//Serial.println(results.value, HEX); jika (hasil.value == 0xFF6897 || hasil.value == 0xC101E57B) {IRNumb = 0; //Serial.println("0 "); } lain jika (hasil.value == 0x9716BE3F || hasil.value == 0xFF30CF) {IRNumb = 1; //Serial.println("1 "); } lain jika (hasil.value == 0x3D9AE3F7 || hasil.value == 0xFF18E7) {IRNumb = 2; //Serial.println("2 "); } lain jika (hasil.value == 0xFF7A85 || hasil.value == 0x6182021B) {IRNumb = 3; // Serial.println ("3"); } lain jika (hasil.value == 0x8C22657B || hasil.value == 0xFF10EF) {IRNumb = 4; //Serial.println("4 "); } lain jika (hasil.value == 0xFF38C7 || hasil.value == 0x488F3CBB) {IRNumb = 5; // Serial.println ("5"); } lain jika (hasil.value == 0x449E79F || hasil.value == 0xFF5AA5) {IRNumb = 6; // Serial.println ("6"); } lain jika (hasil.value == 0xFF42BD || hasil.value == 0x32C6FDF7) {IRNumb = 7; //Serial.println("7 "); } lain jika (hasil.value == 0x1BC0157B || hasil.value == 0xFF4AB5) {IRNumb = 8; //Serial.println("8 "); } lain jika (hasil.value == 0xFF52AD || hasil.value == 0x3EC3FC1B) {IRNumb = 9; // Serial.println ("9"); }} key_value = hasil.value; irrecv.resume (); }} batal IRScan2 () {if (irrecv.decode (& hasil)) {
jika (hasil.value == 0XFFFFFFFF)
hasil.value = key_value; yang lain {// Serial.println (results.value, HEX); jika (hasil.value == 0xFF6897 || hasil.value == 0xC101E57B) {IRNumb2 = 0; //Serial.println("0 "); } lain jika (hasil.value == 0x9716BE3F || hasil.value == 0xFF30CF) {IRNumb2 = 1; //Serial.println("1 "); } lain jika (hasil.value == 0x3D9AE3F7 || hasil.value == 0xFF18E7) {IRNumb2 = 2; //Serial.println("2 "); } lain jika (hasil.value == 0xFF7A85 || hasil.value == 0x6182021B) {IRNumb2 = 3; // Serial.println ("3"); } lain jika (hasil.value == 0x8C22657B || hasil.value == 0xFF10EF) {IRNumb2 = 4; //Serial.println("4 "); } lain jika (hasil.value == 0xFF38C7 || hasil.value == 0x488F3CBB) {IRNumb2 = 5; // Serial.println ("5"); } lain jika (hasil.value == 0x449E79F || hasil.value == 0xFF5AA5) {IRNumb2 = 6; // Serial.println ("6"); } lain jika (hasil.value == 0xFF42BD || hasil.value == 0x32C6FDF7) {IRNumb2 = 7; //Serial.println("7 "); } lain jika (hasil.value == 0x1BC0157B || hasil.value == 0xFF4AB5) {IRNumb2 = 8; //Serial.println("8 "); } lain jika (hasil.value == 0xFF52AD || hasil.value == 0x3EC3FC1B) {IRNumb2 = 9; // Serial.println ("9"); }} key_value = hasil.value; irrecv.resume (); }}
Langkah 5: Pemasangan
Untuk memasang Arduino ke bingkai, saya hanya melekatkannya dan papan roti yang biasa saya gunakan di bahagian belakang bingkai dan cuba menutup / menyembunyikan kabel agar kelihatan baik.
Disyorkan:
Kipas Pendingin Auto Menggunakan Sensor dan Sensor Suhu dan Kelembapan DHT11 Dengan Arduino: 8 Langkah
Kipas Pendingin Auto Menggunakan Servo dan DHT11 Sensor Suhu dan Kelembapan Dengan Arduino: Dalam tutorial ini kita akan belajar bagaimana memulakan & putar kipas apabila suhu meningkat di atas tahap tertentu
Infinity Mirror and Table (Dengan Alat Kasual): 7 Langkah (dengan Gambar)
Infinity Mirror and Table (Dengan Alat Kasual): Hai semua, Beberapa ketika yang lalu saya memahami arahan ini dan saya segera mengambilnya dan mahu membuat sendiri, tetapi tidak dapat menggunakan 1) Cermin plexiglass sehala atau 2) Penghala CNC. Setelah sedikit mencari-cari, saya membuat
Cara Membuat Jantung Infinity Mirror Dengan Arduino dan RGB Leds: 8 Langkah (dengan Gambar)
Cara Membuat Jantung Infinity Mirror Dengan Arduino dan RGB Leds: Suatu ketika di sebuah pesta, saya dan isteri melihat cermin infiniti, dan dia terpesona dengan penampilannya dan terus mengatakan saya mahu! Suami yang baik selalu mendengar dan mengingati, jadi saya memutuskan untuk membinanya untuk dijadikan sebagai hadiah hari valentine
Hexagon Infinity Mirror Dengan Lampu LED dan Kawat Laser: 5 Langkah (dengan Gambar)
Hexagon Infinity Mirror Dengan Lampu LED dan Kawat Laser: Sekiranya anda ingin membuat bahagian pencahayaan yang unik, ini adalah projek yang sangat menyeronokkan. Kerana kerumitannya, beberapa langkah sangat memerlukan ketepatan, tetapi ada beberapa arah yang berbeza yang dapat anda jalani, bergantung pada keseluruhan penampilannya
SENSOR SUHU DENGAN LCD DAN LED (Membuat Sensor Suhu Dengan LCD dan LED): 6 Langkah (dengan Gambar)
SENSOR SUHU DENGAN LCD DAN LED (Membuat Sensor Suhu Dengan LCD dan LED): hai, saya. Ini adalah bacaan suhu dengan reka bentuk saya sendiri, dengan sensor ini dan