Mục lục:
- Quân nhu
- Bước 1: Lắp đặt gương và phim gương
- Bước 2: Thiết lập dải LED
- Bước 3: Gắn Cảm biến IR và màn hình LCD (Tùy chọn)
- Bước 4: Mã
- Bước 5: Gắn kết
Video: Gương vô cực với LCD và cảm biến hồng ngoại: 5 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:30
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
Đ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
Đố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)
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 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:
Bộ đếm khách sử dụng 8051 và cảm biến hồng ngoại với màn hình LCD: 3 bước
Bộ đếm khách sử dụng 8051 và cảm biến hồng ngoại với màn hình LCD: Các bạn thân mến, tôi đã giải thích cách tạo bộ đếm khách sử dụng 8051 và cảm biến hồng ngoại và hiển thị nó trên màn hình LCD. 8051 là một trong những vi điều khiển phổ biến nhất được sử dụng cho các ứng dụng thương mại, sở thích trên toàn thế giới. Tôi đã nhìn thấy
Đèn chiếu sáng hồng ngoại (Hồng ngoại) Part-2: 3 bước
Đèn chiếu sáng hồng ngoại (Hồng ngoại) Phần 2: Xin chào các bạn, tôi đã trở lại với Phần 2 của Đèn chiếu sáng hồng ngoại (Hồng ngoại) Có thể hướng dẫn. Nếu bạn chưa xem Phần 1, hãy BẤM VÀO ĐÂY Bắt đầu … Một Mạch Chiếu Sáng IR đơn giản để hỗ trợ tầm nhìn ban đêm của Camera CCTV. IR Illuminator Night Vision, với tư cách là
Đèn chiếu sáng hồng ngoại (Hồng ngoại) Phần 1: 5 bước
Đèn chiếu sáng hồng ngoại (Hồng ngoại) Phần 1: Xin chào … Trong phần hướng dẫn này, chúng ta sẽ tìm hiểu một chút về Tầm nhìn ban đêm, các cách khác nhau để đạt được tầm nhìn ban đêm và Mạch đèn chiếu hồng ngoại đơn giản để hỗ trợ tầm nhìn ban đêm của Camera quan sát. hình cho thấy sơ đồ mạch của IR Illumina
Máy ảnh nhiệt hồng ngoại M5Stack sử dụng cảm biến hình ảnh mảng hồng ngoại AMG8833: 3 bước
Máy ảnh nhiệt M5Stack IR sử dụng cảm biến hình ảnh mảng hồng ngoại AMG8833: Giống như nhiều người, tôi đã bị mê hoặc với máy ảnh nhiệt nhưng chúng luôn nằm ngoài tầm giá của tôi - cho đến nay !! Mô-đun ESP32 và một
Nokia 5110 LCD với cảm biến hồng ngoại: 4 bước
Nokia 5110 LCD với cảm biến hồng ngoại: Màn hình LCD Nokia 5110 là một màn hình LCD tuyệt vời tương thích với bảng phát triển Arduino. Bây giờ chúng ta hãy điều khiển một trong những màn hình LCD đó và giao diện nó với Arduino và cảm biến IR