Arduino Dải đèn LED NeoPixel

Dải LED NeoPixel RGB là một dải đèn LED mà màu sắc và độ sáng của từng LED trên dải có thể được điều khiển riêng lẻ. Trong bài hướng dẫn này, chúng ta sẽ học cách sử dụng Arduino để điều khiển dải LED NeoPixel RGB. Để điều khiển tất cả các LED trên dải NeoPixel, chúng ta chỉ cần dùng một chân Arduino duy nhất.

Phần cứng cần chuẩn bị

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×NeoPixel RGB LED Strip
1×1000uF Capacitor
1×470Ω Resistor
1×5V Power Adapter
1×DC Power Jack
1×dây jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về Dải LED RGB NeoPixel

Sơ đồ chân

Dải LED NeoPixel RGB có ba chân:

  • Chân GND: cần được kết nối với GND (0 V)
  • Chân VCC: cần được cấp nguồn 5 V từ nguồn cấp bên ngoài
  • Chân Din: là chân nhận tín hiệu điều khiển. Nó nên được kết nối tới một chân của Arduino
bố trí chân neopixel

※ Lưu ý:

Thứ tự các chân có thể khác nhau giữa các nhà sản xuất. Luôn sử dụng nhãn được in trên dải LED.

Sơ đồ đấu dây

sơ đồ nối dây dải LED neopixel rgb cho Arduino

This image is created using Fritzing. Click to enlarge image

Cách Lập Trình Cho Dải LED NeoPixel RGB

  • Khai báo một đối tượng NeoPixel
#define PIN_NEO_PIXEL 4 // Arduino pin that connects to NeoPixel #define NUM_PIXELS 30 // The number of LEDs (pixels) on NeoPixel Adafruit_NeoPixel NeoPixel(NUM_PIXELS, PIN_NEO_PIXEL, NEO_GRB + NEO_KHZ800);
  • Khởi tạo NeoPixel
NeoPixel.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
  • Đặt màu cho từng LED riêng lẻ (được gọi là pixel).
NeoPixel.setPixelColor(pixel, NeoPixel.Color(255, 0, 0));
  • Đặt độ sáng cho tất cả các dải.
NeoPixel.setBrightness(100); // a value from 0 to 255

※ Lưu ý:

  • NeoPixel.setBrightness() được sử dụng cho tất cả các pixel trên dải LED. Để thiết lập độ sáng cho từng pixel riêng lẻ, chúng ta có thể điều chỉnh giá trị màu theo tỉ lệ.
  • Các giá trị được thiết lập bởi NeoPixel.setBrightness()NeoPixel.setPixelColor() chỉ có hiệu lực khi gọi NeoPixel.show().

Mã Arduino

Đoạn mã dưới đây làm gì:

  • Chuyển các pixel sang màu xanh lá cây lần lượt, với một khoảng trễ giữa từng pixel
  • Tắt tất cả các pixel trong hai giây
  • Bật tất cả các pixel đồng thời sang màu đỏ trong hai giây
  • Lặp lại quá trình trên vô hạn
/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-neopixel-led-strip */ #include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> // Required for 16 MHz Adafruit Trinket #endif #define PIN_NEO_PIXEL 4 // Arduino pin that connects to NeoPixel #define NUM_PIXELS 30 // The number of LEDs (pixels) on NeoPixel #define DELAY_INTERVAL 250 // 250ms pause between each pixel Adafruit_NeoPixel NeoPixel(NUM_PIXELS, PIN_NEO_PIXEL, NEO_GRB + NEO_KHZ800); void setup() { NeoPixel.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) } void loop() { NeoPixel.clear(); // set all pixel colors to 'off'. It only takes effect if pixels.show() is called // turn pixels to green one by one with delay between each pixel for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // for each pixel NeoPixel.setPixelColor(pixel, NeoPixel.Color(0, 255, 0)); // it only takes effect if pixels.show() is called NeoPixel.show(); // send the updated pixel colors to the NeoPixel hardware. delay(DELAY_INTERVAL); // pause between each pixel } // turn off all pixels for two seconds NeoPixel.clear(); NeoPixel.show(); // send the updated pixel colors to the NeoPixel hardware. delay(2000); // off time // turn on all pixels to red at the same time for two seconds for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // for each pixel NeoPixel.setPixelColor(pixel, NeoPixel.Color(255, 0, 0)); // it only takes effect if pixels.show() is called } NeoPixel.show(); // send the updated pixel colors to the NeoPixel hardware. delay(2000); // on time // turn off all pixels for one seconds NeoPixel.clear(); NeoPixel.show(); // send the updated pixel colors to the NeoPixel hardware. delay(2000); // off time }

Hướng dẫn từng bước

  • Đi tới biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
  • Tìm kiếm “Adafruit NeoPixel”, sau đó tìm thư viện NeoPixel do Adafruit
  • Nhấn nút Cài đặt để cài đặt thư viện NeoPixel.
thư viện neopixel cho Arduino
  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấn nút Upload trên Arduino IDE để tải mã lên Arduino
  • Xem hiệu ứng LED

※ Lưu ý:

Đối với bất kỳ hiệu ứng LED phức tạp nào, chúng tôi cung cấp dịch vụ lập trình trả phí.

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.