"Fiat Lux - Hãy có ánh sáng": (Phần 2) Viết code BLINK thần thánh cho neopixel WS2812

Mô tả dự án: 

Đâ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 laugh 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. wink

lên
19 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Arduino hậu tiền chế: Một số Apps/Shield phục vụ cho Internet của Vạn Vật (IW) hướng đến người sử dụng

Trong bài Arduino hậu tiền chế trước (http://arduino.vn/bai-viet/1086-arduino-hau-tien-che-lam-xong-code-roi-t...) tui đã phân tích tầm quan trọng của việc hướng đến người sử dụng. Bài này tui sẽ giới thiệu 1 số apps/shield khá hay làm cho việc sử dụng Arduino/Raspberry Pi gần gũi với người sử dụng hơn.

lên
17 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 

Arduino thâm cung bí sử - Thuở hồng hoang

Rất ít người biết rằng đã từng tồn tại 2 công ty Arduino tranh giành thị trường, càng ít ít người biết hơn vì sao Arduino tại sao ra đời ở nước Ý. Tuy nhiên thâm cung bí sử của Arduino chưa dừng lại đây. Bạn có biết tại sao Arduino IDE lại dùng java? Bạn có biết rằng các prototype của arduino sử dụng ARM hay chip dán ATmega128 trước khi quay sang ATmega8 để giảm giá không? Cùng đọc tiếp để hiểu thêm về thời hoang sơ của công ty này nha!

Lược dịch và tham khảo từ github của Barragán.

lên
16 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: