monsieurvechai gửi vào
- 73197 lượt xem
Đây là chuỗi bài viết về 1 loại bóng LED RGB (WS2812) mà tui chưa thấy ai viết trên cộng đồng. Hôm nay, bạn sẽ biết được vì sao người ta lại có thể điều khiển nhiều LED RGB thế trong khi nó đến 3 chân xung.
Dẫn nhập
Thưở hồng hoang thế giới Arduino của bạn còn trống rỗng, chưa có hình dạng, bóng tối bao trùm vực thẳm. Bạn cắm bóng LED, nạp code BLINK huyền thoại và phán "Hãy có ánh sáng!". Thế là có ánh sáng. Bạn thấy thế là tốt đẹp. Qua một buổi chiều và một buổi sáng. Ngày đầu tiên trong thế giới Arduino của bạn là thế.
Bạn thấy một bóng LED là rất nhàm chán, và chúng phải sinh sôi nảy nở hơn. Bạn phán "Hãy có PWM!". Bạn cắm thêm nhiều bóng, chia xung và ra lệnh cho chúng nhấp nháy sáng tối theo ý bạn. Thế giới của bạn đã linh động và hoạt bát lên nhiều. Bạn cảm thấy tốt đẹp sau một buổi chiều và một buổi sáng. Đó là ngày thứ hai.
Khi số lượng bóng LED đã đầy dẫy lúc nhúc cho Arduino của bạn, bạn bắt đầu nghĩ đến phương án khác. Bạn phán "Hãy có mạch IC 595!". Thế là ma trận LED 64 bóng ra đời. Bạn thấy thế là tốt đẹp. Qua một buổi chiều và một buổi sáng. Đó là ngày thứ ba.
Bạn thấy bóng LED đơn sắc là chưa tốt nên phán: "Hãy có LED RGB." Thế là có LED RGB chung cực âm và cực dương tùy theo loại. Thế giới của bạn bây giờ đã 3 màu nhấp nháy. Bạn thấy hài lòng với công việc sáng tạo của mình. Đó là ngày thứ tư.
Ngày thứ năm, khi mạch của bạn đã lúc nhúc LED 3 màu trên Arduino, bạn bắt đầu nghĩ đến phương án điều khiển chúng. Ban đầu bạn nghĩ đến mạch IC 595, nhưng chẳng lẽ lại phải dùng đến 3 ICs vì mỗi bóng RGB có đến 3 chân, mỗi chân cho 1 màu. Chẳng lẽ sự nghiệp sáng thế nhấp nháy LED của bạn đến đây là kết thúc?
Câu thần chú trong ngày thứ năm của bạn là "Hãy có WS2812!"
WS2812 là gì vại? Ăn được hem?
WS2812 thực ra là 1 mạch tích hợp 3 bóng LED RGB và 1 IC điều khiển. Điều đặc biệt là bạn có thể nối tiếp nhiều bóng với nhau nhưng vẫn có thể điều khiển tới 144 bóng riêng biệt mà chỉ cần dùng 1 pin Arduino. Dưới đây là một vài thông số cơ bản của loại LED này (trích từ https://www.sparkfun.com/products/11821)
- Góc nhìn: 120 degrees
- Red: (620-630nm) @ 550-700mcd
- Green: (515-530nm) @ 1100-1400mcd
- Blue: (465-475nm) @ 200-400mcd
Một số ứng dụng
Vì nối tiếp được nên WS2812 có khả năng thiên biến vạn hóa rất ảo diệu. Dưới đây là một vài ví dụ: (trích từ https://www.adafruit.com/category/168)
Ưu và nhược điểm
Nhưng WS2812 cũng là 1 loài thụ tạo nên phải chịu số phận "nhân vô thập toàn" với những ưu và khuyết điểm như sau:
Ưu điểm
- Tiết kiệm chân Arduino: bạn có thể dùng 1 pin duy nhất nhưng vẫn có thể điều chỉnh màu và độ sáng của từng LED riêng biệt.
- Không phải lo về việc đây là bóng common anode hay cathode.
- Nối tiếp các LED với nhau được (tới 144 bóng).
- Có sẵn thư viện Arduino.
Nhược điểm
- Là mạch IC tích hợp nên giá còn hơi cao (18USD) cho 100 bóng. Hơn nữa nếu bạn nhìn kỹ vào hình đầu bài, bạn sẽ thấy có các sợi dây màu vàng dài dài nối giữa các phần vi mạch với nhau. Vàng thật đó các bạn ạ!
- Phải dùng với driver truyền tín hiệu. Cắm trực tiếp vào nguồn sẽ không sáng được.
- Không phải là LED tròn nên giới hạn ứng dụng trong 2D.
Bài tới tui sẽ hướng dẫn phần cứng và phần mềm cho code BLINK thần thánh nha!