monsieurvechai gửi vào
- 148145 lượt xem
Đây là phần 2 cho tutorial hướng dẫn cách lập trình LED 3 màu neopixel WS2812. Vì mỗi module LED là 1 mạch IC nên cách sử dụng hơi rắc rối hơn so với LED thông thường. Các bạn chú ý nha!
Tiếp nối:
Các bạn có thể xem phần trước tại đây để thuận tiện hợn cho cuộc chiến Tại Đây
Phần cứng:
Mỗi module neopixel có 4 chân:
- 5V: Nối với nguồn 5V
- GD: Nối đất
- DIN: nối với bất kỳ digital pin nào của Arduino (pin 6 trong phần code dưới)
- DOUT: nối với DIN của module neopixel kế tiếp (hoặc bỏ trống)
Ngoài ra bạn nên gắn thêm 1 tụ 1000 microFarad 6,3V giữa 2 chân 5V và GD để ngăn dòng lớn khi mới gắn nguồn vào module. Ngoài ra, bạn cũng nên gắn nối tiếp 1 trở 300 đến 500 Ohm giữa Arduino pin và DIN để bảo vệ DIN của neopixel.
Phần mềm:
Bước 1: Bạn vào trang đây và tải thư viện về.
Bước 2: Code thoai:
#include <Adafruit_NeoPixel.h> #define PIN 6 Adafruit_NeoPixel strip = Adafruit_NeoPixel(1, PIN, NEO_GRB + NEO_KHZ800); void setup(){ strip.begin(); strip.show(); } void loop(){ strip.setPixelColor(0,50,0,0); strip.show(); delay(1000); strip.setPixelColor(0,0,50,0); strip.show(); delay(1000); strip.setPixelColor(0,0,0,50); strip.show(); delay(1000); }
Hướng dẫn phần cơ bản của code
Đầu tiên là phần khai báo lớp:
Adafruit_NeoPixel strip = Adafruit_NeoPixel(1, PIN, NEO_GRB + NEO_KHZ800);
Ở đây 1 là số pixel bạn muốn điều khiển. Ví dụ bạn có vòng 24 LED trong phần trước thì sửa 1 thành 24.
strip.setPixelColor(0,50,0,0)
Đây là câu quan trọng nhất:
- Biến đầu tiên là số thứ tự LED bạn muốn điều khiển, tính từ zero. Ví dụ: bạn muốn điều chỉnh màu của LED thứ 3 thì câu lệnh sẽ là strip.setPixelColor(2,x,x,x)
- Ba biến cuối là độ sáng của màu đỏ, lục, lam (từ 0 đến 255). Ví dụ: bạn muốn chỉnh LED thứ 2 sang màu tím hường (đỏ + lam) thì câu lệnh sẽ là strip.setPixelColor(1, 255,0,255).
Cuối cùng là câu lệnh bắt buộc để bắt Arduino gửi xung ra lệnh cho neopixel thực hiện việc đổi màu:
strip.show()
Nếu không có câu này thì sẽ không có gì xảy ra đâu nhé!
Mẹo vặt
- Nếu bạn thích 1 màu mà không biết mã RGB của nó là gì, bạn có thể vào trang sau để tìm: http://www.psyclops.com/tools/rgb/
- Bạn có thể gán 1 biến uint32_t cho 1 màu nào đó rồi sau này gọi lại cho tiện. Ví dụ: bạn có thể sửa LED thứ 6 thành màu hường bằng cách sau:
uint32_t magenta = strip.Color(255, 0, 255); strip.setPixelColor(5, magenta); strip.show();
- Mỗi neopixel xơi khoảng 3 bytes RAM nên bạn nhớ lựa em Arduino nào khỏe khỏe 1 xí nếu bạn dùng nhiều pixel.
Gợi ý nâng cao:
- Viết lại code trong bài làm đèn xe cảnh sát pikachu trong bài http://arduino.vn/bai-viet/227-lam-den-nhap-nhay-tren-xe-canh-sat với 1 neopixel duy nhất.
- Viết code hiệu ứng cầu vồng trong bài http://arduino.vn/bai-viet/530-lam-nao-de-dieu-khien-led-rgb-led-3-mau. cho 1 neopixel.
Bài kế tiếp tui sẽ viết tiếp hướng dân làm mood lamp (đèn tự kỷ) với neopixel.