ESP8266 Dải LED NeoPixel

Dải đèn LED NeoPixel RGB được tạo thành từ các LED mà màu sắc và độ sáng có thể được điều chỉnh riêng biệt. Hướng dẫn này chỉ cho bạn cách sử dụng ESP8266 để điều khiển dải đèn NeoPixel RGB. Cụ thể, chúng ta sẽ tìm hiểu:

Chúng ta chỉ cần dùng một chân kỹ thuật số của ESP8266 để điều khiển tất cả các đèn LED trên dải LED.

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

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (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 Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về dải LED NeoPixel RGB

Sơ đồ chân của dải LED NeoPixel

Dải đèn LED NeoPixel RGB có ba chân cần được kết nối đúng cách:

  • Chân GND phải được kết nối với GND (0V)
  • Chân VCC nên được kết nối với 5V từ nguồn cấp ngoài
  • Chân Din là chân nhận tín hiệu điều khiển và nên được kết nối với một chân của ESP8266
sơ đồ chân neopixel

※ Lưu ý:

Thứ tự các chân có thể khác nhau tùy thuộc vào nhà sản xuất. Việc sử dụng các ký hiệu được in trên dải LED là bắt buộc.

Sơ đồ đấu dây

sơ đồ đấu nối dải LED neopixel rgb ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

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

  • Tạo một đối tượng NeoPixel
#define PIN_NEO_PIXEL D1 // The ESP8266 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);
  • Dải LED 30 bóng
  • Khởi tạo dải NeoPixel chứa 30 bóng LED
NeoPixel.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
  • Xác định màu sắc của từng LED (được biết đến như một pixel).
NeoPixel.setPixelColor(pixel, NeoPixel.Color(255, 0, 0));
  • Điều chỉnh độ sáng của tất cả các dải.
NeoPixel.setBrightness(100); // a value from 0 to 255

※ Lưu ý:

  • NeoPixel.setBrightness() được sử dụng để điều chỉnh độ sáng của toàn bộ 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 các giá trị màu (R, G, B) với cùng một tỷ lệ.
  • Các giá trị được thiết lập bởi NeoPixel.setBrightness()NeoPixel.setPixelColor() sẽ chỉ được áp dụng khi NeoPixel.show() được thực thi.

Mã ESP8266

Mã dưới đây thực hiện các bước sau:

  • Chuyển các pixel sang màu xanh lá cây từng pixel một với một khoảng trễ giữa mỗi pixel
  • Tắt tất cả các pixel trong hai giây
  • Bật sáng tất cả các pixel màu đỏ đồng thời trong hai giây
  • Lặp lại quá trình này vô hạn
/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-neopixel-led-strip */ #include <Adafruit_NeoPixel.h> #define PIN_NEO_PIXEL D1 // The ESP8266 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); 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

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Xem hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
  • Nối các thành phần như được thể hiện trong sơ đồ.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng một cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 phù hợp, ví dụ NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng của nó.
  • Nhấp vào biểu tượng Libraries ở thanh bên trái của Arduino IDE.
  • Tìm kiếm “Adafruit NeoPixel” và tìm thư viện NeoPixel từ Adafruit.
  • Sau đó, nhấn nút Install để cài đặt thư viện NeoPixel.
thư viện neopixel cho ESP8266 NodeMCU
  • Sao chép mã và mở nó trong Arduino IDE.
  • Nhấn nút Nạp để gửi mã đến ESP8266.
  • Xem hiệu ứng đèn 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ị 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.