- Vật liệu thiết yếu:
- LDR:
- LED RGB:
- Sơ đồ mạch:
- Giải thích lập trình:
- Hoạt động của đèn trộn màu Arduino:
Điều gì sẽ xảy ra nếu chúng ta có thể tạo ra các màu sắc khác nhau bằng cách sử dụng một đèn LED RGB duy nhất và làm cho góc phòng của chúng ta hấp dẫn hơn? Vì vậy, đây là một đèn pha màu đơn giản dựa trên Arduino có thể thay đổi màu sắc khi có sự thay đổi ánh sáng trong phòng. Vì vậy, đèn này sẽ tự động thay đổi màu sắc của nó theo điều kiện ánh sáng trong phòng.
Mỗi màu là sự kết hợp của màu Đỏ, Xanh lục và Xanh lam. Vì vậy, chúng ta có thể tạo ra bất kỳ màu nào bằng cách sử dụng các màu đỏ, xanh lá cây và xanh lam. Vì vậy, ở đây chúng ta sẽ thay đổi PWM tức là cường độ ánh sáng trên LDR. Điều đó sẽ tiếp tục thay đổi cường độ của màu đỏ, xanh lá cây và xanh lam trong đèn LED RGB và các màu khác nhau sẽ được tạo ra.
Bảng dưới đây cho thấy các kết hợp màu sắc với sự thay đổi tương ứng trong các chu kỳ nhiệm vụ.
Vật liệu thiết yếu:
- 1 x Arduino UNO
- 1 x Breadboard
- 3 x điện trở 220 ohm
- 3 x điện trở 1 kilohm
- Dây nhảy
- 3 x LDR
- 3 x dải màu (đỏ, lục, lam)
- 1 x đèn LED RGB
LDR:
Chúng tôi sẽ sử dụng điện trở quang (hoặc điện trở phụ thuộc ánh sáng, LDR, hoặc tế bào quang dẫn) ở đây trong mạch này. LDR được làm từ vật liệu bán dẫn để cho phép chúng có đặc tính nhạy sáng. Các LDR hoặc ĐIỆN TRỞ ẢNH này hoạt động dựa trên nguyên tắc “Độ dẫn ảnh”. Nguyên lý này nói gì bây giờ là, bất cứ khi nào ánh sáng rơi trên bề mặt của LDR (trong trường hợp này) thì độ dẫn của phần tử tăng lên hay nói cách khác, điện trở của LDR giảm khi ánh sáng rơi trên bề mặt của LDR. Tính chất giảm điện trở của LDR này đạt được vì nó là đặc tính của vật liệu bán dẫn được sử dụng trên bề mặt.
Ở đây ba cảm biến LDR được sử dụng để điều khiển độ sáng của từng đèn LED Đỏ, Xanh lục và Xanh lam bên trong LED RGB. Tìm hiểu thêm về cách kiểm soát LDR bằng Arduino tại đây.
LED RGB:
Có hai loại đèn LED RGB, một là loại cực âm chung (cực âm chung) và loại khác là loại cực dương chung (cực dương chung). Trong CC (Cực âm chung hoặc Cực âm chung), sẽ có ba đầu cực dương, mỗi đầu cực đại diện cho một màu và một đầu cực âm đại diện cho cả ba màu.
Trong mạch của chúng ta, chúng ta sẽ sử dụng loại CA (Cực dương chung hoặc Cực dương chung). Trong loại Anode chung, nếu chúng ta muốn LED ĐỎ BẬT, chúng ta cần nối đất chân LED ĐỎ và cấp nguồn cho cực dương chung. Tương tự đối với tất cả các đèn LED. Tìm hiểu tại đây để giao diện LED RGB với Arduino.
Sơ đồ mạch:
Sơ đồ mạch hoàn chỉnh của dự án này được đưa ra ở trên. Kết nối + 5V và nối đất hiển thị trong sơ đồ mạch có thể được lấy từ chân 5V và chân nối đất của Arduino. Bản thân Arduino có thể được cấp nguồn từ máy tính xách tay của bạn hoặc thông qua giắc cắm DC bằng bộ chuyển đổi 12V hoặc pin 9V.
Chúng tôi sẽ sử dụng PWM để thay đổi độ sáng của đèn LED RGB. Bạn có thể tìm hiểu thêm về PWM tại đây. Dưới đây là một số ví dụ PWM với Arduino:
- Nguồn điện thay đổi bằng Arduino Uno
- Điều khiển động cơ DC bằng Arduino
- Bộ tạo giai điệu dựa trên Arduino
Giải thích lập trình:
Đầu tiên, chúng ta khai báo tất cả các chân đầu vào và đầu ra như hình bên dưới.
const byte red_sensor_pin = A0; const byte green_sensor_pin = A1; const byte blue_sensor_pin = A2; const byte green_led_pin = 9; const byte blue_led_pin = 10; const byte red_led_pin = 11;
Khai báo giá trị ban đầu của cảm biến và led là 0.
unsigned int red_led_value = 0; unsigned int blue_led_value = 0; unsigned int green_led_value = 0; unsigned int red_sensor_value = 0; unsigned int blue_sensor_value = 0; unsigned int green_sensor_value = 0; void setup () { pinMode (red_led_pin, OUTPUT); pinMode (blue_led_pin, OUTPUT); pinMode (green_led_pin, OUTPUT); Serial.begin (9600); }
Trong phần vòng lặp, chúng tôi sẽ lấy đầu ra của ba cảm biến với analogRead (); hàm và lưu trữ trong ba biến khác nhau.
void loop () { red_sensor_value = analogRead (red_sensor_pin); chậm trễ (50); blue_sensor_value = analogRead (blue_sensor_pin); chậm trễ (50); green_sensor_value = analogRead (green_sensor_pin);
In các giá trị đó lên màn hình nối tiếp cho mục đích gỡ lỗi
Serial.println ("Giá trị Cảm biến Nguyên:"); Serial.print ("\ t Red:"); Serial.print (red_sensor_value); Serial.print ("\ t Blue:"); Serial.print (blue_sensor_value); Serial.print ("\ t Green:"); Serial.println (green_sensor_value);
Chúng tôi sẽ nhận các giá trị 0-1023 từ các cảm biến nhưng các chân Arduino PWM của chúng tôi có các giá trị 0-255 làm đầu ra. Vì vậy, chúng tôi phải chuyển đổi các giá trị thô của chúng tôi thành 0-255. Vì vậy, chúng ta phải chia các giá trị thô cho 4 HOẶC đơn giản là chúng ta có thể sử dụng chức năng ánh xạ của Arduino để chuyển đổi các giá trị này.
red_led_value = red_sensor_value / 4; // định nghĩa LED đỏ blue_led_value = blue_sensor_value / 4; // định nghĩa Blue LED green_led_value = green_sensor_value / 4; // định nghĩa Led xanh
In các giá trị được ánh xạ vào màn hình nối tiếp
Serial.println ("Các Giá trị Cảm biến được Ánh xạ:"); Serial.print ("\ t Red:"); Serial.print (red_led_value); Serial.print ("\ t Blue:"); Serial.print (blue_led_value); Serial.print ("\ t Green:"); Serial.println (green_led_value);
Sử dụng analogWrite () để đặt đầu ra cho đèn LED RGB
analogWrite (red_led_pin, red_led_value); // cho biết LED analogWrite màu đỏ (blue_led_pin, blue_led_value); // cho biết LED analogWrite màu xanh lam (green_led_pin, green_led_value); // chỉ ra màu xanh lá cây
Hoạt động của đèn trộn màu Arduino:
Vì chúng tôi đang sử dụng ba LDR nên khi ánh sáng xảy ra trên các cảm biến này, điện trở của nó sẽ thay đổi do kết quả là điện áp cũng thay đổi tại các chân analog của Arduino đang hoạt động như một chân đầu vào cho cảm biến.
Khi cường độ ánh sáng thay đổi trên các cảm biến này, đèn LED RGB tương ứng của nó sẽ phát sáng với lượng điện trở thay đổi và chúng tôi có sự pha trộn màu sắc khác nhau trong đèn LED RGB bằng cách sử dụng PWM.