"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
22 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

Vòng đeo tay hỗ trợ người mù

Dự án là một vòng đeo tay hỗ trợ cho người mù có trọng lượng khá nhẹ chỉ khoảng 65g, có thể sạc pin khi hết, sử dụng cảm biến khoảng cách hc-sr04 và những thứ sẵn có xung quanh chúng ta. Mình mong muốn đóng góp sản phẩm này với hy vọng, nó sẽ sẽ giúp người mù đi lại được tốt hơn bằng việc thông báo cho họ âm thanh hoặc rung động khi đến gần vật cản. Với một chút kiến thức về Arduino bất cứ ai cũng có thể làm được điều này. Thiết bị dễ dàng đeo và tháo ra khỏi tay một cách nhanh chóng. Các bạn cùng chiêm ngưỡng nhé!

lên
15 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Áo yếm cho em - tự làm hộp dự án Arduino/Pi

Bài trước (http://arduino.vn/bai-viet/1023-ao-yem-cho-em-cach-lam-hop-dung-case-tie...) tui đã hướng dẫn các bạn download case từ các trang thông dụng để bảo vệ mạch và tăng thêm tính chuyên nghiệp của dự án. Bài này tui sẽ đi xa hơn với việc thiết kế hộp theo kích thước tùy ý các bạn với inkscape và cắt laser.

lên
16 thành viên đã đánh giá bài viết này hữu ích.

(Phòng chống) Nghệ thuật hắc ám với ESP8266 - Phần 1: Thích thì phát beacon hoy

ESP8266 là 1 module rất bá đạo cho việc truyền dữ liệu từ xa không dây. Tuy nhiên vì giá thành thấp và khả năng wifi khá tốt nên module này rất dễ bị lạm dụng vào các chuyện mờ ám. Đây là bài đầu tiên trong chuỗi bài chứng tỏ khả năng hắc ám của module này. Tui sẽ hướng dẫn các bạn phát beacon thông tin để quậy phá và cách phòng chống. Lưu ý là các bạn nên thực hành có trách nhiệm nếu không muốn cục tình báo C2 gõ cửa hỏi thăm.

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