Bất kỳ màu nào cũng được tạo thành từ ba màu: Đỏ, Xanh lục và Xanh lam, bằng cách sử dụng đèn LED RGB đơn giản, bạn có thể tạo ra bất kỳ màu nào. Nhưng hạn chế của LED RGB là nó có ba đèn LED riêng biệt bên trong và yêu cầu ba Chân của bất kỳ bộ vi điều khiển nào để vận hành một đèn LED RGB. Vì vậy, không thể kết nối hàng trăm đèn LED với một bộ vi điều khiển.
Để khắc phục vấn đề này, Adafruit đã tạo ra NeoPixel LED Strip. Nó chỉ yêu cầu ba chân để điều khiển một số đèn LED RGB NeoPixel. Hai chân dành cho nguồn và nối đất và một chân dành cho Data In (DI). Chân Data IN được sử dụng để định địa chỉ và điều khiển các đèn LED khác nhau trong dải với màu sắc, độ sáng của chúng, v.v. Nhưng nó yêu cầu Bộ vi điều khiển để chạy NeoPixels. Arduino được sử dụng rất phổ biến với NeoPixel, vì vậy hôm nay chúng ta sẽ học Giao diện đèn LED NeoPixel với Arduino. Bạn có thể tìm hiểu thêm về NeoPixels tại AdaFruit.
Ở đây trong dự án này, chúng tôi đang Điều khiển đèn LED NeoPixel bằng Arduino và Màn hình cảm ứng LCD TFT. Chúng tôi đã tạo ra 7 nút cảm ứng có màu sắc khác nhau trên màn hình TFT LCD 2,4 inch và khi chúng tôi chạm vào nút có màu nhất định trên màn hình LCD, dải đèn LED NeoPixel sẽ sáng cùng màu của nút đó. Ở đây chúng tôi đã sử dụng dải LED RGB kỹ thuật số NeoPixel gồm 30 đèn LED.
NeoPixel RGB LED có thể được chiếu sáng bằng bất kỳ màu nào và vì vậy chúng tôi có thể thêm nhiều nút hơn trên màn hình LCD để phát sáng LED với nhiều màu hơn khi chạm vào các nút đó. Các hiệu ứng và mẫu đẹp mắt khác cũng có thể được thêm vào bằng cách sử dụng Coding. Bạn có thể xây dựng Hệ thống trang trí được điều khiển bằng Arduino đầy đủ bằng đèn LED Pixel NEO và có thể điều khiển hệ thống này bằng màn hình LCD ở gần bạn.
Các thành phần bắt buộc:
- Arduino Mega hoặc bất kỳ mô hình Arduino nào khác
- Tấm chắn TFT LCD 2,4 inch với bộ điều khiển SPFD5408
- Dải đèn LED RGB NeoPixel
- Kết nối dây
- Cáp USB hoặc bộ chuyển đổi 12 V 1A
Kết nối mạch:
Để kết nối NeoPixels Strip với Arduino Mega, chỉ cần kết nối chân 5V của Arduino với chân 5V của NeoPixel và GND của Mega với GND của NeoPixel và sau đó kết nối chân NeoPixel DI (dữ liệu vào) với Chân số 36 của Arduino Mega. Cẩn thận gắn Tấm chắn cảm ứng TFT LCD lên Arduino sao cho GND của MEGA nằm bên dưới GND của LCD và chân 5V của Arduino kết nối với chân 5V của LCD.
Chú ý không trao đổi chân GND và chân 5V của dải LED NeoPixel trong khi kết nối với Arduino, nếu không sẽ làm hỏng dải LED NeoPixel. Cũng lưu ý rằng ở đây chúng tôi đã sử dụng Arduino Mega nhưng bạn có thể sử dụng bất kỳ mô hình Arduino nào khác.
Kết nối với Arduino tới dải LED RGB của NeoPixel:
Ghim Arduino |
Ghim của NeoPixel Strip |
5v |
5v |
GND |
GND |
Số Pin kỹ thuật số. 36 |
DI (dữ liệu trong) |
Giải thích làm việc:
Làm việc của NeoPixel LED với Arduino rất dễ dàng. Chỉ cần chạm vào nút cảm ứng có màu bất kỳ trên màn hình LCD mà bạn muốn làm sáng dải LED NeoPixel. Đèn LED sẽ sáng theo màu đó. Mã được viết theo cách để bạn có thể lặp lại tác vụ này liên tục mà không cần phải thiết lập lại Arduino Mega. Bạn có thể kiểm tra Mã và Video Demo ở cuối bài viết này.
Khi nhấn vào bất kỳ nút nào trên màn hình LCD, dữ liệu sẽ được gửi đến Arduino và Arduino tiếp tục gửi hướng dẫn đến NeoPixel Strip để phát sáng tương ứng. Ví dụ, dải LED NeoPixel phát sáng màu Xanh lục khi chúng ta nhấn vào nút Xanh lục trên màn hình LCD và dải LED phát sáng màu Đỏ khi chúng ta nhấn nút Đỏ, v.v.
Giải thích lập trình:
Để giao diện TFT LCD với Arduino, chúng tôi đã sử dụng một số thư viện. Tất cả các thư viện đều có trong một tệp rar và có thể được tải xuống từ liên kết này. Nhấp vào 'Sao chép hoặc tải xuống' và 'Tải xuống tệp ZIP' và thêm vào thư mục thư viện Arduino của bạn. Thư viện này là cần thiết để TFT LCD hoạt động bình thường.
#include
Bạn nên kiểm tra màn hình LCD TFT của mình bằng cách ghi Arduino với các mã ví dụ được cung cấp trong Thư viện và kiểm tra xem mã có hoạt động bình thường không. Đầu tiên hãy kiểm tra thử nghiệm đồ họa, sau đó kiểm tra hiệu chỉnh và cuối cùng là kiểm tra sơn. Nếu bạn thấy rằng tất cả các tính năng đều hoạt động tốt thì hãy bắt đầu với mã được cung cấp trong hướng dẫn này.
Ngoài ra, để dải đèn LED RGB NeoPixel hoạt động bình thường, bạn sẽ cần thêm một thư viện nữa, có thể tải xuống từ đây.
#include
Như đã mô tả trước đó Chân số 36 của MEGA được kết nối với chân DI của Dải LED NeoPixel như được hiển thị trong mã bên dưới. Ngoài ra, số lượng đèn LED trong Strip là 30 như được viết bằng mã:
#define PIN 36 #define NUM_LEDS 30
Màu sắc hiển thị của các nút LCD được ký hiệu bằng một số Mã. Bạn có thể thay đổi các mã này tùy theo màn hình LCD của mình.
#define BLACK 0x0000 #define YELLOW 0x001F #define GREEN 0xF800 #define RED 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define BLUE 0xFFE0 #define WHITE 0xFFFF
Một số tham số cho các nút như kích thước và vị trí được xác định trong mã:
uint16_t width = 0; uint16_t height = 0; uint16_t x = 40; uint16_t y = chiều cao - 20; uint16_t w = 75; uint16_t h = 20;
Thông số h được sử dụng để điều chỉnh kích thước của nút trên màn hình LCD. Nếu bạn làm cho nó 40, thì kích thước của nút sẽ tăng gấp đôi. Tham số y là tọa độ y của LCD.
Các nút cảm ứng được biểu thị bằng số như trong mã:
#define NÚT 9 #define NÚT_Red 0 #define BUTTON_DarkRed 1 #define NÚT_RED 2 #define NÚT_DarkGreen 3 #define NÚT_DeepRed 4 #define NÚT_Blue 5 #define NÚT_LightBlue 6 7 #define NÚT
Một số chức năng được sử dụng để phát ra màu từ NeoPixel như:
void EmitCyan (); void EmitWhite (); void EmitGreen (); void EmitYellow (); void EmitPink (); void EmitBlack ();
Để tìm các giá trị RGB kỹ thuật số được nhập cho màu đã cho, bạn có thể theo liên kết này. Chỉ cần nhập màu bạn muốn dải NeoPixel của mình phát sáng, tìm các giá trị RGB cho màu đó và đưa vào các chức năng trên.
Hàm void initializeButtons () được sử dụng để cung cấp văn bản và màu sắc cho các nút và cũng để đặt chúng ở vị trí cần thiết trên màn hình LCD.
void initializeButtons () {uint16_t x = 40; uint16_t y = chiều cao - 20; uint16_t w = 75; uint16_t h = 40; uint8_t spacing_x = 5………………..
Hàm void showCalibration () được sử dụng để vẽ các nút trên màn hình LCD.
void showCalibration () {tft.setCursor (40, 0); for (uint8_t i = 0; i <8; i ++) {button.drawButton (); }}
Ngoài ra, Mã Arduino đầy đủ để phát sáng dải LED NeoPixel ở Màu mong muốn được đưa ra bên dưới. Code hơi dài dòng nhưng đơn giản, bạn có thể hiểu code dễ dàng.