Mục lục:

Cảm biến màu tự làm đơn giản từ Magicbit: 5 bước
Cảm biến màu tự làm đơn giản từ Magicbit: 5 bước

Video: Cảm biến màu tự làm đơn giản từ Magicbit: 5 bước

Video: Cảm biến màu tự làm đơn giản từ Magicbit: 5 bước
Video: Hidden Magic Pendant 2024, Tháng mười một
Anonim
Image
Image

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về cách tạo cảm biến màu đơn giản bằng Magicbit với Arduino.

Quân nhu

  • Magicbit
  • Cáp USB-A đến Micro-USB

Bước 1: Câu chuyện

Thiết lập phần cứng
Thiết lập phần cứng

Xin chào các bạn, đôi khi bạn phải sử dụng cảm biến màu cho một số mục đích. Nhưng có thể bạn không biết chúng hoạt động như thế nào. Vì vậy, trong hướng dẫn này, bạn sẽ tìm hiểu về cách tạo một cảm biến màu DIY đơn giản bằng Magicbit với Arduino. Hãy bắt đầu.

Bước 2: Lý thuyết và Phương pháp luận

Trong dự án này, chúng tôi hy vọng sẽ dạy bạn xây dựng cảm biến màu có thể phát hiện các màu đỏ, xanh lá cây và xanh lam. Đây là ví dụ rất cơ bản. Vì vậy, làm thế nào để làm điều này. Với mục đích này, chúng tôi sử dụng mô-đun RGB của Magicbit và LDR tích hợp sẵn. Trước hết bạn phải tìm hiểu về một số lý thuyết. Đó là về lượng phản xạ ánh sáng. Bây giờ tôi đang đặt câu hỏi từ bạn. Bề mặt màu nào phản xạ nhiều nhất ánh sáng màu đỏ? Còn bề mặt nào phản xạ ánh sáng Xanh lục và Xanh lam. Hãy suy nghĩ một chút. Nhưng câu trả lời là đơn giản. Bề mặt màu Đỏ chủ yếu phản xạ ánh sáng màu đỏ. Ngoài ra các bề mặt xanh lục và xanh lam sẽ phản chiếu ánh sáng xanh lục và xanh lam. Vì vậy, trong dự án này chúng tôi sử dụng lý thuyết đó. Để nhận biết màu sắc, chúng tôi phát ra lần lượt các ánh sáng đỏ, lục và lam. Tại mọi thời điểm, chúng tôi đo lượng phản xạ bằng cách sử dụng giá trị LDR.

Bước 3: Thiết lập phần cứng

Điều này rất đơn giản. Cắm mô-đun RGB của bạn vào cổng phía trên bên phải của Magicbit. Mô-đun này có đèn LED Neopixel WS2812B. Đèn LED này có 4 chân. Hai cho nguồn và hai cho Dữ liệu vào và ra. Vì chúng ta sử dụng một con led nên chúng ta chỉ cần chân nguồn và dữ liệu trong chân. Nếu bạn không có mô-đun đó, bạn có thể mua và mô-đun Neopixel. Nếu bạn mua loại mô-đun đó, bạn phải kết nối các chân nguồn và dữ liệu trong pin với Magicbit. Điều đó rất dễ dàng. Kết nối VCC và GND của Magicbit với chân nguồn của mô-đun RGB và chân D33 với chân dữ liệu.

Bước 4: Thiết lập phần mềm

Phần lớn do chương trình thực hiện. Chúng tôi sử dụng Arduino IDE để lập trình Magicbit của mình. Trong mã, chúng tôi sử dụng một vài thư viện. Chúng là thư viện Adafruit Neopixel để điều khiển LED Neopixel và thư viện Adafruit OLED cho OLED xử lý. Trong quá trình thiết lập, chúng tôi định cấu hình đầu vào và đầu ra của mình. Cũng định cấu hình màn hình OLED có sẵn trên Magicbit. Trong vòng lặp, chúng tôi kiểm tra nút nhấn bên trái được nhấn hay không của Magicbit. Nếu nó được nhấn, tín hiệu đầu vào là 0. Vì nó đã được kéo lên bởi bảng. Nếu nó được nhấn thì chúng tôi kiểm tra màu sắc. Nếu không thì màn hình sẽ hiển thị câu lệnh "no color". Khi nút được nhấn thì sẽ tự động bật từng đèn đỏ, xanh lục và xanh lam và lưu trữ lượng phản xạ của màu sắc thành ba biến số. Tiếp theo, chúng tôi so sánh các giá trị đó và chọn màu giá trị lớn nhất để hiển thị làm màu đầu ra.

Vì vậy, hãy kết nối cáp micro USB với Magicbit và chọn loại bo mạch và cổng com một cách chính xác. Bây giờ tải lên mã. Sau đó, đã đến lúc kiểm tra cảm biến của chúng tôi. Để kiểm tra điều đó, hãy giữ giấy hoặc tờ có bề mặt màu đỏ, xanh lá cây hoặc xanh lam trên mô-đun LDR và RGB và nhấn nút nhấn bên trái. Sau đó, màn hình OLED sẽ hiển thị màu sắc của bề mặt. Nếu sai thì lý do là một số màu có cường độ ánh sáng cao. Ví dụ trong mỗi bề mặt màu xanh lá cây, đầu ra có màu đỏ thì bạn phải giảm độ sáng đèn đỏ từ một số lượng. Bởi vì ánh sáng đỏ có độ sáng rất cao trong trường hợp đó. Vì vậy, nó có phản xạ cao. Nếu bạn không biết làm thế nào để kiểm soát độ sáng, hãy tham khảo hướng dẫn trong liên kết bên dưới.

magicbit-arduino.readthedocs.io/en/latest/

Trong liên kết này, bạn có thể tìm thấy cách điều khiển mô-đun RGB đó từ Magicbit. Và bạn cũng có thể tìm cách làm việc với LDR và nút nhấn bằng Magicbit. Đọc tài liệu đó và nghiên cứu thêm về cách cải thiện cảm biến màu. Vì đây là ví dụ rất cơ bản về cách hoạt động của cảm biến màu. Hầu hết các loại cảm biến màu hoạt động theo cách này. Vì vậy, hãy cố gắng cải thiện điều này bằng cách loại bỏ tiếng ồn ánh sáng xung quanh và các tiếng ồn khác.

Bước 5: Mã cảm biến màu Arduino

#bao gồm

#define LED_PIN 33

#define LED_COUNT 1 LED Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); #include #include #include #define Màn hình OLED_RESET 4 Adafruit_SSD1306 (128, 64); #define LDR 36 #define Button 35 int R_value, G_value, B_value; void setup () {LED.begin (); LED.show (); pinMode (LDR, INPUT); pinMode (Nút, NGÕ VÀO); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); chậm trễ (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// nút if được nhấn LED.setPixelColor (0, LED. Color (0, 50, 0)); // trên redcolour LED.show (); chậm trễ (100); R_value = analogRead (LDR); // lấy màu đỏ gắn LED.setPixelColor (0, LED. Color (150, 0, 0)); // trên greencolour LED.show (); chậm trễ (100); G_value = analogRead (LDR); // lấy màu xanh lục LED.setPixelColor (0, LED. Color (0, 0, 255)); // trên bluecolour LED.show (); chậm trễ (100); B_value = analogRead (LDR); // lấy màu xanh lam if (R_value> G_value && R_value> B_value) {// màu đỏ được phản ánh nhiều nhất Hiển thị ("RED", 3); } else if (G_value> R_value && G_value> B_value) {// màu xanh lục được phản ánh nhiều nhất Hiển thị ("GREEN", 3); } else if (B_value> R_value && B_value> G_value) {// màu xanh lam được phản ánh nhiều nhất Hiển thị ("BLUE", 3); } Serial.print ("RED ="); Serial.print (R_value); Serial.print ("XANH ="); Serial.print (G_value); Serial.print ("BLUE ="); Serial.println (B_value); } else {LED.setPixelColor (0, LED. Color (0, 0, 0)); // tắt LED RGB.show (); Display ("KHÔNG CÓ MÀU", 2); }} void Display (String commond, int size) {// hiển thị dữ liệu display.clearDisplay (); display.setTextSize (kích thước); // Tỷ lệ pixel 1: 1 bình thường display.setTextColor (WHITE); // Vẽ dòng chữ trắng display.setCursor (0, 20); // Bắt đầu từ góc trên bên trái display.println (commond); display.display (); }

Đề xuất: