Mục lục:

Gương vô cực với LCD và cảm biến hồng ngoại: 5 bước
Gương vô cực với LCD và cảm biến hồng ngoại: 5 bước

Video: Gương vô cực với LCD và cảm biến hồng ngoại: 5 bước

Video: Gương vô cực với LCD và cảm biến hồng ngoại: 5 bước
Video: nhiều người sẽ đau đầu với bệnh này của bếp hồng ngoại ! 2024, Tháng mười một
Anonim
Gương vô cực với LCD và cảm biến hồng ngoại
Gương vô cực với LCD và cảm biến hồng ngoại
Gương vô cực với LCD và cảm biến hồng ngoại
Gương vô cực với LCD và cảm biến hồng ngoại
Gương vô cực với LCD và cảm biến hồng ngoại
Gương vô cực với LCD và cảm biến hồng ngoại

Dự án này sẽ chỉ cho bạn cách bạn có thể tạo ra một chiếc Gương vô cực. Khái niệm cơ bản là các đèn LED trên gương tạo ra ánh sáng phản xạ từ gương sau đến gương trước, nơi một số ánh sáng thoát ra để chúng ta có thể nhìn thấy bên trong và một số được phản xạ trở lại gương sau và tạo ra hiệu ứng vô hạn. Điều này dựa trên Gương vô cực với cảm biến siêu âm có thể được hướng dẫn bởi Hack Sioux Falls và Cách kết nối màn hình LCD I2C với Arduino Uno của JunezRiyaz.

Quân nhu

1. Hộp bóng ($ 50)

2. Phim gương 1 chiều ($ 17)

3. Một dải đèn LED RGB ($ 30)

4. Arduino ($ 35)

5. Một chiếc gương ($ 10)

Không bắt buộc:

1. Cảm biến và điều khiển từ xa IR ($ 20)

2. Một màn hình LCD ($ 20)

3. 7 đầu nối Nữ với Nam

4. 3 đầu nối nam với nam

Công cụ

1. Sắt hàn

2. Máy cắt và tuốt dây

3. Một cái gì đó để cắt gương bằng

* Lưu ý tất cả giá bằng CAD và kích thước sẽ tùy thuộc vào hộp mà bạn sử dụng.

Bước 1: Lắp đặt gương và phim gương

Lắp đặt gương và phim gương
Lắp đặt gương và phim gương
Lắp đặt gương và phim gương
Lắp đặt gương và phim gương

Điều đầu tiên cần làm là lắp gương sẽ ở phía sau hộp bóng. Bạn muốn lấy một cái có kích thước phù hợp hoặc lấy một cái lớn hơn và sau đó cắt nó xuống. Nhưng đối với điều này, bạn phải sử dụng gương chứ không phải phim vì chúng ta muốn tất cả ánh sáng được phản xạ trở lại, phim gương cũng có thể lấy mẫu vật liệu trên đó nếu nó không phải là kính.

Khi bạn lắp đặt gương, hãy đảm bảo cố định nó trong hộp bóng, tôi khuyên bạn nên sử dụng những miếng gỗ và đinh nhỏ để đảm bảo gương không bị xê dịch. Tôi không có gương trong thời gian tôi phải hoàn thành dự án này nên tôi đã sử dụng phim (Bạn có thể xem trong hình ảnh). Khái niệm hoạt động tốt nhưng không tốt lắm và mang lại một cái nhìn góc cạnh và hỗn loạn mà theo ý kiến của tôi là không đẹp.

Mỗi bộ phim gương sẽ khác nhau một chút nhưng tôi đã nói để làm sạch kính mà chúng tôi đang dán phim lên sau đó sử dụng băng keo để tháo bộ phim bảo vệ ở một mặt và sử dụng nước xà phòng để xịt chai đặt phim trên kính. Sau đó, sử dụng thẻ tín dụng hoặc chổi cao su để loại bỏ bọt khí và nước thừa. Tôi một lần nữa không có kính nhưng nó vẫn hoạt động như cũ. Sau đó để kính khô qua đêm là xong.

Bước 2: Thiết lập dải LED

Thiết lập dải LED
Thiết lập dải LED
Thiết lập dải LED
Thiết lập dải LED

Đối với đèn LED, tôi chỉ sử dụng băng dính hai mặt đi kèm để dán nó vào khung và tạo một lỗ để dây ra ngoài. Ở mỗi góc, tôi hàn các dây dẫn để kết nối với một dải khác để giữ hình dạng hộp mà không có các cạnh tròn. Đảm bảo chỉ cắt các dải ở những điểm có các điểm tiếp xúc cho phép điều này xảy ra và không chuyển hướng các đèn LED kết nối với nhau được gọi là đảo ngược cực. Dải mà tôi nhận được có các mũi tên để đảm bảo điều này không xảy ra, vì vậy hãy đảm bảo kiểm tra xem chúng đều hướng về cùng một hướng.

Tôi đã tạo một lỗ nhỏ để luồn cáp ra bên ngoài hộp, các đèn LED mà tôi có là đèn LED định địa chỉ 3 Pin để tôi có các đầu nối nguồn, nối đất và dữ liệu. Tôi đã sử dụng Chân số 3 cho đầu nối dữ liệu, hãy đảm bảo kiểm tra các dải đèn LED của bạn để đảm bảo chúng hoạt động trước khi gắn vào khung và đảm bảo chỉ sử dụng điện áp được đề xuất cho điện áp của tôi là 5 - 6 V.

Bước 3: Gắn Cảm biến IR và màn hình LCD (Tùy chọn)

Gắn Cảm biến IR và màn hình LCD (Tùy chọn)
Gắn Cảm biến IR và màn hình LCD (Tùy chọn)
Gắn Cảm biến IR và màn hình LCD (Tùy chọn)
Gắn Cảm biến IR và màn hình LCD (Tùy chọn)
Gắn Cảm biến IR và màn hình LCD (Tùy chọn)
Gắn Cảm biến IR và màn hình LCD (Tùy chọn)

Tôi đã chọn sử dụng cảm biến hồng ngoại và điều khiển từ xa để thay đổi hiệu ứng ánh sáng và sử dụng và màn hình LCD để hiển thị cho người dùng các tùy chọn mà họ có cho các hiệu ứng.

Để gắn cảm biến LCD và IR, tôi sẽ sử dụng súng bắn keo nóng và dán chúng vào đầu khung và nối dây mọi thứ vào mặt sau nhưng tôi không muốn chúng cố định vì tôi có thể phải tháo chúng ra sau khi dự án hoan thanh.

Để kết nối LCD và Bộ thu hồng ngoại, tôi đã sử dụng Đầu nối Nam với Nữ cắm vào Arduino để lấy dữ liệu cũng như nối đất và nguồn. Để kết nối mọi thứ, tôi đã sử dụng chân 12 với điện trở 2 kΩ trên chân dữ liệu cho cảm biến IR, Chân tương tự A4 cho SDA của LCD và Chân tương tự 5 cho SCL của màn hình LCD.

Bước 4: Mã

Đối với dự án này, tôi sử dụng một vài thư viện mà bạn sẽ phải tải xuống để sử dụng. Tôi sẽ đặt chúng ở đây, hãy nhớ rằng tôi đang sử dụng windows nên điều đó có thể ảnh hưởng nếu bạn đang sử dụng Mac hoặc Linux.

Bạn sẽ phải thay đổi số lượng pixel tùy thuộc vào số lượng đèn LED bạn có. Tôi cũng đã tích hợp giao diện Serial Monitor để bạn có thể giao tiếp theo cách đó với nó nếu bạn không sử dụng cảm biến IR.

// Thư viện

#include Adafruit_NeoPixel.h> #include #include #include // Ghim và giá trị không đổi // Ghim và giá trị không đổiconst int RECV_PIN = 12; IRrecv không thể thay đổi (RECV_PIN); giải mã kết quả; key_value dài không dấu = 0; const int NUMPIXELS = 27;

Adafruit_NeoPixel pixel = Adafruit_NeoPixel (NUMPIXELS, 3);

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Các biến int IRNumb; int IRNumb2; int cầu vồng = 0; uint32_t RainbowColor = pixel. Color (0, 0, 0); đầu vào char = 0; char đầu vào2 = 0; int r; int g; int b; int breakCondition = 0; void setup () {// Vô hiệu hóa các phần tử không cần lặp lại. lcd.begin (16, 2); // Xác định 16 cột và 2 hàng của màn hình LCD lcd.backlight (); // Để bật đèn nền Serial.begin (9600); pixel.begin (); không thể thay đổi.enableIRIn (); Serial.println ("Nhập số 0 để tắt đèn"); // Hướng dẫn bắt đầu Serial.println ("Nhập 1 để chuyển các đèn LED sang màu trắng"); Serial.println ("Nhập 2 để các đèn LED chuyển sang các màu khác nhau"); Serial.println ("Nhập số 3 để tùy chỉnh màu đèn LED theo cách thủ công"); } void loop () {IRNumb = 10; IRScan (); mainOptions (); if (Serial.available ()> 0) {// Kiểm tra xem có ký tự không? input = (char) Serial.read (); } // Chọn các tùy chọn khác nhau if (input == '1' || IRNumb == 1) {rainbowColor = colourChange (255, 255, 255); // Màu trắng setAll (RainbowColor); // Cập nhật các đèn LED} else if (input == '0' || IRNumb == 0) {rainbowColor = colourChange (0, 0, 0); // Tắt setAll (RainbowColor); // Cập nhật các đèn LED} else if (input == '2' || IRNumb == 2) {breakCondition = 0; r = 0; g = 0; b = 0;

Serial.println ("Nhập bất kỳ thứ gì không phải là 2 để thoát khỏi hiệu ứng này, sau đó nhập bất kỳ tùy chọn nào cho hiệu ứng mới.");

lcd.clear (); // Làm sạch màn hình lcd.setCursor (0, 0); lcd.print ("Thoát bằng any-"); lcd.setCursor (0, 1); lcd.print ("tê that! = 2"); for (int i = 0; i = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Kiểm tra xem có cần thoát hiệu ứng hay không RainbowColor = colourChange (0, 0, 0); setAll (màu sắc cầu vồng); breakCondition = 1; nghỉ; } RainbowColor = colourChange (i, 0, 0); setAll (màu sắc cầu vồng); showStrip (); chậm trễ (100); } for (int i = 0; i = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Kiểm tra xem có cần thoát hiệu ứng hay không RainbowColor = colourChange (0, 0, 0); setAll (màu sắc cầu vồng); breakCondition = 1; nghỉ; } g ++; RainbowColor = colourChange (i, g, 0); setAll (màu sắc cầu vồng); showStrip (); chậm trễ (100); } for (int g = 0; g = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Kiểm tra xem có cần thoát hiệu ứng hay không RainbowColor = colourChange (0, 0, 0); setAll (màu sắc cầu vồng); breakCondition = 1; nghỉ; } r + = 2; RainbowColor = colourChange (r, g, 0); setAll (màu sắc cầu vồng); showStrip (); chậm trễ (100); } for (int b = 0; b = 48 && input <= 57) || breakCondition == 1 || IRNumb! = 2) {// Kiểm tra xem có cần thoát hiệu ứng hay không RainbowColor = colourChange (0, 0, 0); setAll (màu sắc cầu vồng); breakCondition = 1; nghỉ; } r + = 2; g + = 5; RainbowColor = colourChange (r, g, b); setAll (màu sắc cầu vồng); showStrip (); chậm trễ (100); } mainOptions (); } else if (input == '3' || IRNumb == 3) {r = 0; g = 0; b = 0;

Serial.println ("Nhập n để thoát");

Serial.println ("Sử dụng w và s để tăng hoặc giảm màu đỏ"); Serial.println ("Sử dụng r và f để tăng hoặc giảm màu xanh lục"); Serial.println ("Sử dụng y và h để tăng hoặc giảm màu xanh lam"); lcd.clear (); // Làm sạch màn hình lcd.setCursor (0, 0); lcd.print ("exit: 0, 4/7: +/- red"); lcd.setCursor (0, 1); lcd.print ("5/8: green, 6/9: blue");

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

if (Serial.available ()> 0) {// có sẵn một ký tự không? input2 = (char) Serial.read (); } //Serial.println(IRNumb2); IRNumb2 = 10; IRScan2 ();

nếu (IRNumb2 == 0) {

nghỉ; } if (input2 == 'w' || IRNumb2 == 4) {r + = 2; RainbowColor = colourChange (r, g, b); setAll (màu sắc cầu vồng); showStrip (); } else if (input2 == 's' || IRNumb2 == 7) {r- = 2; RainbowColor = colourChange (r, g, b); setAll (màu sắc cầu vồng); showStrip (); } else if (input2 == 'r' || IRNumb2 == 5) {g + = 2; RainbowColor = colourChange (r, g, b); setAll (màu sắc cầu vồng); showStrip (); } else if (input2 == 'f' || IRNumb2 == 8) {g- = 2; RainbowColor = colourChange (r, g, b); setAll (màu sắc cầu vồng); showStrip (); }

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

b + = 2; RainbowColor = colourChange (r, g, b); setAll (màu sắc cầu vồng); showStrip (); }

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

b- = 2; RainbowColor = colourChange (r, g, b); setAll (màu sắc cầu vồng); showStrip (); }} mainOptions (); } setAll (màu cầu vồng); showStrip (); } void showStrip () {pixel.show (); } void setAll (uint32_t color) {for (int i = 0; i <NUMPIXELS; i ++) {pixel.setPixelColor (i, color); }} // Nhập giá trị 0 đến 255 để nhận giá trị màu. uint32_t colourChange (int r, int g, int b) {return pixel. Color (r, g, b); } void mainOptions () {// Cung cấp các tùy chọn hiệu ứng chính lcd.clear (); // Làm sạch màn hình lcd.setCursor (0, 0); lcd.print ("0 Để tắt đèn"); lcd.setCursor (0, 1); lcd.print ("1: White Light"); chậm trễ (1000); lcd.clear (); // Làm sạch màn hình lcd.setCursor (0, 0); lcd.print ("2: Hiệu ứng màu"); lcd.setCursor (0, 1); lcd.print ("3: Thủ công"); chậm trễ (1000); } void IRScan () {if (’tcv.decode (& kết quả)) {

nếu (results.value == 0XFFFFFFFF)

results.value = key_value; 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 (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 = results.value; không thể tìm thấy (); }} void IRScan2 () {if (’tcv.decode (& kết quả)) {

nếu (results.value == 0XFFFFFFFF)

results.value = key_value; 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; Uncv.resume (); }}

Bước 5: Gắn kết

Gắn
Gắn

Để gắn Arduino vào khung, tôi chỉ cần dán nó và breadboard mà tôi đã sử dụng vào mặt sau của khung và cố gắng che / giấu các dây cáp để làm cho nó trông đẹp.

Đề xuất: