"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

Hướng dẫn sử dụng cảm biến nhiệt độ DS18B20 (-55°C đến +125°C) sai số ±0.5°C

Lại quay về vấn đề đo nhiệt độ, như ở bài trước, mình đã dùng cả LM35, cả TMP36. Nhưng rốt cuộc vẫn không hiệu quả, lần này mình đang sử dụng con DS18B20 này và cảm thấy khá ổn hơn so với lần trước. Nhiệt độ ít bị chênh lệch hơn và như quảng cáo là chỉ có sai số ±0.5°C thôi (nếu nhiệt độ trong phạm vi -10°C to +85°C, đáng để thử phải không nào?

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

Hướng dẫn sử dụng cảm biến nhiệt độ TMP36 - Khoảng đo từ -40 đến 125 độ C

Mình thấy cảm biến nhiệt độ LM35 rất rẻ và hoạt động cũng tương đối chính xác. Tuy nhiên, độ bền của nó không cao vì mình thấy mình chỉ dùng cảm biến LM35 trong khoảng thời gian 3 tháng, sau đó phải thay cảm biến khác (để đo nhiệt độ luộc gà). Bản thân mình không thích điều đó nên thử dùng một cảm biến khác cũng có chức năng tương tự là TMP36 và thấy nó hoạt động bền hơn (đã đến tháng thứ 4 nhưng chưa hư). Mình xin chia sẻ với các bạn nhé. Loại này hơi khó tìm và không thông dụng, nhưng nó bền hơn hẳn LM35 các bạn nhé.

lên
10 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ả

Cùng học VBLUNO - Phần 1: Mở hộp và đánh giá

Đây là chuỗi các bài giới thiệu và hướng dẫn cho cộng đồng về các ứng dụng của bo mạch VBLUNO (VNGIoTLab BLE UNO), một sản phẩm tiên phong trong công nghệ Internet của Vạn Vật ở Việt Nam. Bài đầu tiên chúng ta sẽ xem thử ấn tượng ban đầu về bo này ra sao nha!

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

Windows 98 trên Pi Zero W - Phép màu công nghệ

Theo logic thông thường thì Raspberry Pi không thể chạy được Windows vì CPU không trùng kiến trúc (ARM vs x86). Tuy nhiên ta có thể "chạy" Windows trên Raspberry Pi bằng cách giả lập môi trường Windows với chương trình qemu. Bài này tui sẽ hướng dẫn các bạn các bước để có thể giả lập các phiên bản Windows (cụ thể là Windows 98) trên PZW (hoặc Pi3). Cảm giác cầm một bo mạch bé xíu nhưng đủ mạnh để giả lập Windows 98 phải nói là khó có thể tả hết được. Ngoài chuyện hồi tưởng lại những ngày cài Win dạo với đĩa CD những năm cuối thế kỷ trước, cảm giác nắm gọn trong lòng bàn tay cả quá khứ và tương lai của công nghệ quả thật là trên cả tuyệt vời.

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