WS2812 là một đèn LED RGB 5050, đã được tích hợp sẵn con chip ws2812 ngay bên trong. Giá rất rẻ, mình mua ở banggood với giá $17.5/100 LEDs. Bạn có thể mua tại đây
Mỗi LED gồm các chân VCC, GND, DI, DO. Màu sắc của LED được điều khiển bằng xung từ 1 chân duy nhất, bạn có thể nối tiếp nhiều LED với nhau.
Hình ảnh phóng to một LED WS2812 dưới kính hiển vi
Sơ đồ kết nối ws2812 với arduino
Để LED ws2812 hoạt động các bạn cấp nguồn 5v vào chân VCC và GND, cấp xung điều khiển vào chân DI (data in), ngoài ra chúng ta có thể nối tiếp nhiều LED bằng cách nối chân DO của bóng LED này với DI của bóng LED kế tiếp.
Nối thêm tụ 1000µF vào nguồn điện và thêm điện trở 300-500Ohm vào trước DI của LED đầu tiên để tăng tuổi thọ LED
Mỗi LED được cấp nguồn 5V, trong trường hợp bạn có quá nhiều LED, arduino không đủ dòng để cấp thì bạn có thể cấp nguồn 5V từ bên ngoài, và nối chung dây GND để hoạt động. Din của LED đầu tiên (Ngoài cùng bên phải) được nối với 1 chân cấp xung của arduino, trong sơ đồ dưới thì mình nối với chân số 6. LED đầu tiên này sẽ có địa chỉ là 0, các led tiếp theo sẽ là 1,2,…
Sơ đồ mắc nối 3 LED ws2812 với Arduino Uno
code
Để điều khiển led này hoạt động bạn cần có thư viện Adafruit_NeoPixel
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
//Khai báo PIN 6 để điều khiển LEDs
#define PIN 6
//Số lượng LED
#define NUMPIXELS 3
//Tạo mới một đối tượng tên là pixels
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int delayval = 500; // delay for half a second
void setup() {
pixels.begin(); // Khởi tạo thư viện NeoPixel
}
void loop() {
// For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.
for(int i=0;i<NUMPIXELS;i++){
// pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
//hàm Color() sẽ lấy giá trị RGB từ 0,0,0 đến 255,255,255,
//hàm setPixelColor() để thiết lập giá trị màu sắc cho từng pixel (1 pixel tương ứng với 1 bóng LED)
pixels.setPixelColor(i, pixels.Color(0,200,0)); // Moderately bright green color.
pixels.show(); // Cập nhập màu sắc của tất cả các LED
delay(delayval); //chờ trong 1 khoảng thời gian
}
}
Giá cao quá nhỉ, mình tìm thấy bên ting.vn có sẵn module luôn, giá tầm 2800VNĐ. Nhưng không biết ship về Việt Nam giá cả sao nữa. Với lại sẵn cho mình hỏi luôn, giả sử mình có khoảng 200 LED mắc nối tiếp nhau, mỗi lần xuất dữ liệu mình xuất 50 LED, nghĩa là thay vì xuất dữ liệu một lần cho 200 LED, mình chia ra làm 4 lần có vấn đề gì không vậy bạn ?
Cái này trắc họ tính thêm tiền công nữa, bạn mua sl lớn thì nhờ dv nào đó ship từ aliexpress cũng được. bạn chia 200 bóng này thành 4 nhóm nối tiếp nhau cũng được mà.