Daftar Isi:
- Perlengkapan
- Langkah 1: Memasang Cermin dan Film Cermin
- Langkah 2: Menyiapkan Strip LED
- Langkah 3: Memasang Sensor IR dan LCD (Opsional)
- Langkah 4: Kode
- Langkah 5: Pemasangan
Video: Cermin Infinity Dengan Sensor LCD dan IR: 5 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:53
Proyek ini akan menunjukkan kepada Anda bagaimana Anda dapat membuat Infinity Mirror. Konsep dasarnya adalah bahwa LED yang ada di cermin menciptakan cahaya yang memantul dari cermin belakang ke cermin depan di mana beberapa cahaya lolos sehingga kita dapat melihat ke dalam dan beberapa dipantulkan kembali ke cermin belakang dan menghasilkan efek tak terbatas. Ini didasarkan pada Cermin Infinity Dengan Sensor Ultra Sonic yang Dapat Diinstruksikan oleh Hack Sioux Falls dan Cara Menghubungkan Layar Lcd I2C ke Arduino Uno oleh JunezRiyaz.
Perlengkapan
1. Kotak Bayangan ($50)
2. Film Cermin 1 arah ($17)
3. Strip lampu LED RGB ($30)
4. Arduino ($35)
5. Cermin ($10)
Opsional:
1. Sensor IR dan Remote ($20)
2. LCD ($20)
3. 7 Konektor Wanita ke Pria
4. 3 Konektor Pria ke Pria
Peralatan
1. Besi Solder
2. Pemotong Kawat dan Penari Telanjang
3. Sesuatu untuk memotong cermin
*Perhatikan semua harga dalam CAD dan ukuran akan tergantung pada kotak yang Anda gunakan.
Langkah 1: Memasang Cermin dan Film Cermin
Hal pertama yang harus dilakukan adalah memasang cermin yang akan berada di belakang kotak bayangan. Anda ingin mendapatkan yang ukurannya tepat atau mendapatkan yang lebih besar dan kemudian memotongnya. Tetapi untuk ini, Anda harus menggunakan cermin dan bukan film karena kami ingin semua cahaya dipantulkan kembali, film cermin juga dapat mengambil pola bahannya jika bukan kaca.
Ketika Anda memasang cermin pastikan untuk mengamankannya di kotak bayangan, saya akan merekomendasikan menggunakan potongan-potongan kecil kayu dan paku untuk memastikan cermin tidak bergerak. Saya tidak punya cermin pada saat saya harus menyelesaikan proyek ini jadi saya menggunakan film (Anda bisa lihat di gambar). Konsepnya berhasil tetapi tidak terlalu baik dan memberikan tampilan miring dan kacau yang menurut saya tidak terlihat bagus.
Setiap film cermin akan sedikit berbeda tetapi yang saya dapatkan mengatakan untuk membersihkan kaca yang kami pasang filmnya kemudian menggunakan selotip untuk melepas film pelindung yang ada di satu sisi dan menggunakan air sabun dalam semprotan botol menempatkan film di kaca. Kemudian gunakan kartu kredit atau squeegee untuk menghilangkan gelembung udara dan air berlebih. Saya sekali lagi tidak memiliki kaca tetapi masih berfungsi sama. Kemudian biarkan kaca mengering semalaman dan itu harus dilakukan.
Langkah 2: Menyiapkan Strip LED
Untuk LED saya hanya menggunakan selotip dua sisi yang disertakan untuk menempelkannya ke bingkai dan membuat lubang untuk kabel keluar. Di setiap sudut, saya menyolder timah untuk menyambung ke strip lain untuk menjaga bentuk kotak tanpa tepi yang membulat. Pastikan untuk hanya memotong strip di titik-titik di mana ada kontak yang memungkinkan hal itu terjadi dan jangan mengalihkan arah sambungan LED satu sama lain yang dikenal sebagai membalikkan polaritas. Strip yang saya dapatkan memiliki panah untuk memastikan ini tidak terjadi, jadi pastikan untuk memeriksa semuanya menunjuk ke arah yang sama.
Saya membuat lubang kecil untuk memasukkan kabel ke luar kotak, LED yang saya miliki adalah LED yang dapat dialamatkan 3 Pin sehingga saya memiliki konektor daya, ground dan data. Saya menggunakan Digital Pin 3 untuk konektor data, pastikan untuk menguji strip LED Anda untuk memastikan mereka berfungsi sebelum menempelkannya ke bingkai dan pastikan untuk hanya menggunakan tegangan yang disarankan untuk yang saya miliki yaitu 5 - 6 V.
Langkah 3: Memasang Sensor IR dan LCD (Opsional)
Saya memilih untuk menggunakan sensor IR dan remote untuk mengubah efek pencahayaan dan menggunakan LCD untuk menunjukkan kepada pengguna opsi yang mereka miliki untuk efeknya.
Untuk memasang LCD dan sensor IR saya akan menggunakan lem panas dan menempelkannya ke bagian atas bingkai dan menyambungkan semuanya ke belakang tetapi saya tidak ingin mereka diperbaiki karena saya mungkin harus melepasnya setelah proyek dilakukan.
Untuk menghubungkan LCD dan Penerima IR saya menggunakan Konektor Male to Female yang dicolokkan ke Arduino untuk data serta ground dan daya. Untuk menyambungkan semuanya, saya menggunakan pin 12 dengan resistor 2 kΩ pada pin data untuk sensor IR, Pin Analog A4 untuk SDA LCD dan Pin Analog 5 untuk SCL LCD.
Langkah 4: Kode
Untuk proyek ini, saya menggunakan beberapa perpustakaan yang harus Anda unduh untuk digunakan. Saya akan meletakkannya di sini, ingatlah bahwa saya menggunakan windows sehingga mungkin berpengaruh jika Anda menggunakan Mac atau Linux.
Anda harus mengubah jumlah piksel tergantung pada jumlah LED yang Anda miliki. Saya juga membangun antarmuka Serial Monitor sehingga Anda dapat menghubungkannya dengan itu jika Anda tidak menggunakan sensor IR.
// Perpustakaan
#include Adafruit_NeoPixel.h> #include #include #include // Pin dan nilai Konstan // Pin dan nilai Konstanconst int RECV_PIN = 12; IRrecv irecv(RECV_PIN); hasil decode_results; key_value panjang yang tidak ditandatangani = 0; const int NUMPIXELS = 27;
Adafruit_NeoPixel piksel = Adafruit_NeoPixel(NUMPIXELS, 3);
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIF);// Variabel int IRNumb; int IRNumb2; int pelangi = 0; uint32_t rainbowColor = piksel. Warna(0, 0, 0); masukan karakter = 0; masukan karakter2 = 0; int r; int g; int b; int kondisi istirahat = 0; void setup() { // Menginisialisasi elemen yang tidak perlu diulang. lcd.begin(16, 2);//Menentukan 16 kolom dan 2 baris tampilan lcd lcd.backlight();//Untuk menyalakan lampu latar Serial.begin(9600); piksel.mulai(); irrecv.enableIRIn(); Serial.println("Masukkan 0 untuk mematikan lampu"); // Memulai Instruksi Serial.println("Masukkan 1 untuk mengubah LED menjadi putih"); Serial.println("Masukkan 2 agar LED berputar melalui warna yang berbeda"); Serial.println("Masukkan 3 untuk menyesuaikan warna LED secara manual"); } void loop() { IRNumb = 10; IRScan(); opsi utama(); if (Serial.available() > 0) { // Memeriksa apakah karakter tersedia? masukan = (char)Serial.read(); } // Memilih opsi yang berbeda jika (input == '1' || IRNumb == 1){ rainbowColor = colorChange(255, 255, 255); // Set PutihSemua(Warna Pelangi); // Memperbarui LED } else if (input == '0' || IRNumb == 0){ rainbowColor = colorChange(0, 0, 0); // Off setAll(Warna Pelangi); // Memperbarui LED } else if (input == '2' || IRNumb == 2){ breakCondition = 0; r = 0; g = 0; b = 0;
Serial.println("Masukkan apa saja yang bukan 2 untuk keluar dari efek ini, lalu salah satu opsi sebelumnya untuk efek baru.");
lcd.clear(); //Bersihkan layar lcd.setCursor(0, 0); lcd.print("Keluar menggunakan sembarang-"); lcd.setCursor(0, 1); lcd.print("mati rasa != 2"); for(int i = 0; i = 48 && masukan <= 57) || breakCondition == 1 || IRNumb != 2){ // Memeriksa apakah efeknya perlu keluar rainbowColor = colorChange(0, 0, 0); setAll(Warna Pelangi); kondisi rusak = 1; merusak; } rainbowColor = colorChange (i, 0, 0); setAll(Warna Pelangi); showStrip(); penundaan(100); } untuk(int i = 0; i = 48 && masukan <= 57) || breakCondition == 1 || IRNumb != 2){ // Memeriksa apakah efeknya perlu keluar rainbowColor = colorChange(0, 0, 0); setAll(Warna Pelangi); kondisi rusak = 1; merusak; } g++; rainbowColor = colorChange (i, g, 0); setAll(Warna Pelangi); showStrip(); penundaan(100); } untuk(int g = 0; g = 48 && masukan <= 57) || breakCondition == 1 || IRNumb != 2){ // Memeriksa apakah efeknya perlu keluar rainbowColor = colorChange(0, 0, 0); setAll(Warna Pelangi); kondisi rusak = 1; merusak; } r+= 2; rainbowColor = colorChange (r, g, 0); setAll(Warna Pelangi); showStrip(); penundaan(100); } untuk(int b = 0; b = 48 && masukan <= 57) || breakCondition == 1 || IRNumb != 2){ // Memeriksa apakah efeknya perlu keluar rainbowColor = colorChange(0, 0, 0); setAll(Warna Pelangi); kondisi rusak = 1; merusak; } r+= 2; g+= 5; rainbowColor = colorChange (r, g, b); setAll(Warna Pelangi); showStrip(); penundaan(100); } opsi utama(); } else if (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 mengurangi warna merah"); Serial.println("Gunakan r dan f untuk menambah atau mengurangi warna hijau"); Serial.println("Gunakan y dan h untuk menambah atau mengurangi warna biru"); lcd.clear();//Bersihkan layar lcd.setCursor(0, 0); lcd.print("keluar:0, 4/7:+/-merah"); lcd.setCursor(0, 1); lcd.print("5/8:hijau, 6/9:biru");
while (input2 != 'n' || IRNumb2 != 0){
if (Serial.available() > 0) { // apakah ada karakter yang tersedia? input2 = (char)Serial.read(); } //Serial.println(IRNumb2); IRNumb2 = 10; IRScan2();
jika (IRNumb2 == 0){
merusak; } if (input2 == 'w' || IRNumb2 == 4){ r+= 2; rainbowColor = colorChange (r, g, b); setAll(Warna Pelangi); showStrip(); } else if (input2 == 's' || IRNumb2 == 7){ r-= 2; rainbowColor = colorChange (r, g, b); setAll(Warna Pelangi); showStrip(); } else if (input2 == 'r' || IRNumb2 == 5){ g+= 2; rainbowColor = colorChange (r, g, b); setAll(Warna Pelangi); showStrip(); } else if (input2 == 'f' || IRNumb2 == 8){ g-= 2; rainbowColor = colorChange (r, g, b); setAll(Warna Pelangi); showStrip(); }
else if (input2 == 'y' || IRNumb2 == 6){
b+= 2; rainbowColor = colorChange (r, g, b); setAll(Warna Pelangi); showStrip(); }
else if (input2 == 'h' || IRNumb2 == 9){
b-= 2; rainbowColor = colorChange (r, g, b); setAll(Warna Pelangi); showStrip(); } } mainOptions(); } setAll(Warna Pelangi); showStrip(); } void showStrip() { pixels.show(); } void setAll(uint32_t color) { for(int i = 0; i < NUMPIXELS; i++) { pixels.setPixelColor(i, color); } } // Masukkan nilai 0 hingga 255 untuk mendapatkan nilai warna. uint32_t colorChange (int r, int g, int b) { mengembalikan piksel. Warna(r, g, b); } void mainOptions (){ // Menampilkan opsi efek utama lcd.clear();//Membersihkan layar lcd.setCursor(0, 0); lcd.print("0 Untuk Lampu Mati"); lcd.setCursor(0, 1); lcd.print("1: Cahaya Putih"); penundaan (1000); lcd.clear();//Bersihkan layar lcd.setCursor(0, 0); lcd.print("2: Efek warna"); lcd.setCursor(0, 1); lcd.print("3: Manual"); penundaan (1000); } batal IRScan (){ jika (irrecv.decode(&hasil)){
jika (hasil.nilai == 0XFFFFFFFF)
hasil.nilai = nilai_kunci; else{ //Serial.println(hasil.nilai, HEX); if (hasil.nilai == 0xFF6897 || hasil.nilai == 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"); } } key_value = hasil.nilai; irrecv.resume(); } } batal IRScan2 (){ if (irrecv.decode(&hasil)){
jika (hasil.nilai == 0XFFFFFFFF)
hasil.nilai = nilai_kunci; else{ // Serial.println(hasil.nilai, HEX); if (hasil.nilai == 0xFF6897 || hasil.nilai == 0xC101E57B){ IRNumb2 = 0; //Serial.println("0"); } else if (results.value == 0x9716BE3F || results.value == 0xFF30CF){ IRNumb2 = 1; //Serial.println("1"); } else if (hasil.nilai == 0x3D9AE3F7 || hasil.nilai == 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 = hasil.nilai; irrecv.resume(); } }
Langkah 5: Pemasangan
Untuk memasang Arduino ke bingkai saya hanya akan merekatkan dan papan tempat memotong roti yang saya gunakan ke bagian belakang bingkai dan mencoba untuk menutupi/menyembunyikan kabel agar terlihat bagus.
Direkomendasikan:
Membuat Jam Cermin Infinity: 15 Langkah (dengan Gambar)
Membuat Jam Cermin Infinity: Dalam proyek sebelumnya saya membuat cermin tanpa batas, di mana tujuan akhir saya adalah membuatnya menjadi sebuah jam. (Membuat Cermin Infinity Warna-warni) Saya tidak mengejar itu setelah membangunnya karena, meskipun terlihat keren, ada beberapa hal dengan
Membuat Kubus Cermin Infinity MUDAH - TANPA Pencetakan 3D dan TANPA Pemrograman: 15 Langkah (dengan Gambar)
Membuat Kubus Cermin Infinity MUDAH | TANPA Pencetakan 3D dan TANPA Pemrograman: Semua orang menyukai kubus infinity yang bagus, tetapi kelihatannya akan sulit dibuat. Tujuan saya untuk Instructable ini adalah menunjukkan kepada Anda langkah demi langkah cara membuatnya. Tidak hanya itu, tetapi dengan instruksi yang saya berikan kepada Anda, Anda akan dapat membuatnya
Cermin Infinity Mudah Dengan Arduino Gemma & NeoPixels: 8 Langkah (dengan Gambar)
Cermin Infinity Mudah Dengan Arduino Gemma & NeoPixels: Lihatlah! Lihatlah jauh ke dalam cermin infinity yang mempesona dan sederhana! Satu strip LED bersinar ke dalam pada sandwich cermin untuk menciptakan efek refleksi tanpa akhir. Proyek ini akan menerapkan keterampilan dan teknik dari intro saya Arduino
Cermin Infinity Hexagon Dengan Lampu LED dan Kawat Laser: 5 Langkah (dengan Gambar)
Cermin Infinity Hexagon Dengan Lampu LED dan Kawat Laser: Jika Anda ingin membuat bagian pencahayaan yang unik, ini adalah proyek yang sangat menyenangkan. Karena kerumitannya, beberapa langkah benar-benar membutuhkan ketelitian, tetapi ada beberapa arah berbeda yang dapat Anda ikuti, tergantung pada tampilan keseluruhan
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 Devi Rivaldi mahasiswa UNIVERSITAS NUSA PUTRA dari Indonesia, di sini saya akan berbagi cara membuat sensor suhu menggunakan Arduino dengan Output ke LCD dan LED. Ini adalah pembaca suhu dengan desain saya sendiri, dengan sensor ini dan