Daftar Isi:

Cermin Infinity Dengan Sensor LCD dan IR: 5 Langkah
Cermin Infinity Dengan Sensor LCD dan IR: 5 Langkah

Video: Cermin Infinity Dengan Sensor LCD dan IR: 5 Langkah

Video: Cermin Infinity Dengan Sensor LCD dan IR: 5 Langkah
Video: Cara bikin cermin lampu LED touch screen dan Kaca Sandblast tiruan, peluang usaha untuk para pemula 2024, November
Anonim
Cermin Infinity Dengan Sensor LCD dan IR
Cermin Infinity Dengan Sensor LCD dan IR
Cermin Infinity Dengan Sensor LCD dan IR
Cermin Infinity Dengan Sensor LCD dan IR
Cermin Infinity Dengan Sensor LCD dan IR
Cermin Infinity Dengan Sensor LCD dan IR

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

Memasang Cermin dan Film Cermin
Memasang Cermin dan Film Cermin
Memasang Cermin dan Film Cermin
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

Menyiapkan Strip LED
Menyiapkan Strip LED
Menyiapkan Strip LED
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)

Memasang Sensor IR dan LCD (Opsional)
Memasang Sensor IR dan LCD (Opsional)
Memasang Sensor IR dan LCD (Opsional)
Memasang Sensor IR dan LCD (Opsional)
Memasang Sensor IR dan LCD (Opsional)
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

Pemasangan
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: