LED RGB là gì? Cách điều khiển LED RGB Arduino
LED RGB là một loại đèn LED có thể đổi nhiều màu khác nhau. Cùng tìm hiểu về cách hoạt động của LED RGB, và cách điều khiển LED RGB Arduino đơn giản qua bài viết bên dưới.
LED RGB là gì?
Đèn LED RGB gồm có 3 bóng đèn có 3 màu cơ bản gồm đỏ, xanh lá và xanh dương. Chúng sẽ hòa trộn các màu này để tạo ra vô vàn các màu khác.
Một đèn LED RGB thường có 4 dây dẫn, trong đó 3 dây cho các bóng có màu sắc khác nhau và 1 dây cho cực âm hoặc cực dương, tùy thuộc vào loại hình LED RGB là gì.
Làm sao để LED RGB Arduino tạo thành nhiều màu khác nhau?
Chắc chắn chúng ta có thể cho LED RGB bật màu đỏ, xanh dương hoặc xanh lá dễ dàng rồi, vì đây là 3 màu sắc cơ bản của LED RGB. Tuy nhiên, chúng ta có thể tạo thêm nhiều màu sắc khác bằng cách pha trộn màu của các đèn với nhau, giống như khi chúng ta kết hợp các màu vẽ với nhau để tạo ra màu mới vậy.
Ví dụ:
- Để tạo ra ánh sáng màu xanh lam nhạt, bạn có thể cấu hình LED RGB Arduino với đèn xanh dương ở cường độ cao nhất, và LED xanh lá + LED đỏ ở cường độ thấp nhất.
- Để tạo ra ánh sáng màu trắng, bạn cho cả 3 đèn đỏ, xanh dương, xanh lam đều ở mức cường độ cao nhất.
Việc cấu hình cường độ cho LED RGB Arduino sẽ phụ thuộc vào xung tín hiệu PWM.
Vì các bóng đèn nhỏ bên trong LED RGB đều có vị trí rất gần nhau, nên mắt người sẽ thấy một màu chung do sự pha trộn màu sắc tạo ra, chứ không phải thấy 3 màu riêng lẻ.
Dưới đây, mình có để sẵn một sơ đồ cách hòa trộn màu sắc trong LED RGB Arduino để tạo thành những màu khác, bạn tham khảo nhé:
Ví dụ: Khi trộn màu đỏ + xanh dương => ta có màu vàng. Tương tự như các màu khác nhé.
Phân biệt LED RGB Anode và LED RGB Cathode
Có 2 loại LED RGB chính mà bạn cần phân biệt, đó là LED Anode (LED cực dương) và LED cathode (LED cực âm). Dưới đây là điểm khác biệt chính của 2 loại:
Cụ thể để mình giải thích thêm nhé, trong đèn LED RGB cực âm (Cathode) thì cả 3 đèn LED đều kết nối âm. Còn với LED RGB cực dương (Anode) thì cả 3 đèn đều kết nối tới cực dương.
>> Xem thêm: Mạng LoRa là gì? Cách cấu hình mạng LoRa trong các ứng dụng IoT
Các chân của đèn LED RGB
Như mình đã trình bày ở trên, mỗi bóng đèn LED RGB sẽ có 4 dây dẫn khác nhau, 3 dây cho 3 đèn và một dây nối với cực âm hoặc cực dương.
Mỗi dây dẫn sẽ có độ dài ngắn khác nhau, bạn có thể dựa vào đó để xác định từng loại dây dẫn nhé, như hình dưới:
Cách phân biệt LED RGB Anode và LED RGB Cathode
Để phân biệt giữa LED RGB Anode và LED RGB Cathode, chúng ta nên sử dụng đồng hồ vạn năng (Multimeter). Bạn có thể tham khảo cách làm chi tiết dưới đây:
- Bật đồng hồ vạn năng ở chế độ hoạt động liên tục
- Đặt đầu đồng hồ vạn năng màu đỏ lên dây dẫn dài nhất của đèn, rồi đặt đầu đen của đồng hồ lên một trong các dây dẫn khác
- Nếu LED RGB được bật, thì đây chính là đèn LED Anode (cực dương)
Còn với LED cực âm, bạn cần đặt dây màu đen của đồng hồ lên dây dẫn dài nhất của đèn và dây màu đỏ đồng hồ lên bất kỳ dây dẫn nào khác. Lúc đó, đèn sẽ sáng:
Trong hướng dẫn dưới đây, mình sẽ sử dụng LED RGB Anode (cực âm). Bạn tham khảo nhé!
Cách điều khiển đổi màu LED RGB Arduino
Thiết bị cần dùng
- LED RGB
- Điện trở 3 x 220 Ohm
- Mạch Arduino
- Dây Jumper và Breadboard
Kết nối
Bạn kết nối theo hình bên dưới nhé:
Cụ thể, cực âm sẽ nối đất, 3 cực dương được kết nối qua điện trở đến 3 cổng Digital trên mạch Arduino để nhận tín hiệu xung PWM.
Chương trình đầy đủ
Bạn có thể nạp trực tiếp chương trình sau vào để sử dụng nhé, mình đã lập trình cho LED RGB Arduino tự động đổi màu sau mỗi giây, theo thứ tự là màu đỏ >> xanh lá >> xanh dương >> trắng >> tím:
int redPin= 7; int greenPin = 6; int bluePin = 5; void setup() { pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); } void loop() { setColor(255, 0, 0); // Red Color delay(1000); setColor(0, 255, 0); // Green Color delay(1000); setColor(0, 0, 255); // Blue Color delay(1000); setColor(255, 255, 255); // White Color delay(1000); setColor(170, 0, 255); // Purple Color delay(1000); } void setColor(int redValue, int greenValue, int blueValue) { analogWrite(redPin, redValue); analogWrite(greenPin, greenValue); analogWrite(bluePin, blueValue); }
Giải thích chương trình
Khi điều khiển LED RGB Arduino, chúng ta chỉ cần cung cấp các mức điện áp khác nhau cho mỗi đèn LED con bên trong để có màu sắc mình thích.
Dưới đây là các thông số tương ứng để điều khiển màu đèn LED RGB Arduino:
Đầu tiên, mình sử dụng các cổng số 5, 6, 7 và đặt tên cho chúng lần lượt là bluePin, greenPin và redPin:
int redPin= 7; int greenPin = 6; int bluePin = 5;
Xác định chúng là đầu ra output:
void setup() { pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); }
Trong vòng lặp loop(), mình sẽ thay đổi độ sáng LED RGB Arduino mỗi giây, theo thứ tự là đỏ >> xanh lá >> xanh dương >> trắng >> tím. Cụ thể, mình dùng hàm setColor và đặt giá trị cường độ tương ứng cho mỗi đèn (nằm trong khoảng 0 – 255). Bạn có thể xem cách phối màu bằng cường độ này trong hình ảnh bên trên.
void loop() { setColor(255, 0, 0); // Red Color delay(1000); setColor(0, 255, 0); // Green Color delay(1000); setColor(0, 0, 255); // Blue Color delay(1000); setColor(255, 255, 255); // White Color delay(1000); setColor(170, 0, 255); // Purple Color delay(1000); }
Bạn có thể thử thay đổi cường độ ánh sáng của từng đèn LED để tạo ra nhiều màu sắc khác nhé!
Mình dùng hàm setColor để thay đổi giá trị cường độ của từng bóng đèn màu đỏ, màu xanh lá và xanh dương dựa trên tín hiệu PWM mà mạch Arduino xuất ra. Các tín hiệu PWM được tạo ra bằng hàm analogWrite.
Các giá trị cường độ của LED RGB Arduino có thể thay đổi từ 0 (nhỏ nhất) đến 255 (lớn nhất), tương ứng với độ sáng từ 0% đến 100%.
void setColor(int redValue, int greenValue, int blueValue) { analogWrite(redPin, redValue); analogWrite(greenPin, greenValue); analogWrite(bluePin, blueValue);
Lời kết
Trên đây, IoTZone đã giới thiệu về cách hoạt động của đèn LED RGB, cũng như hướng dẫn bạn cách lập trình đổi màu đèn LED RGB Arduino. Chúc các bạn thành công!