소개
WS281x (네오픽셀) RGB LED 입니다. 네오픽셀(Neo Pixel)은 Adafruit 사의 모델명으로 WS2811/2812와 같은 제어칩과 LED가 일체형으로 된 제품을 의미합니다. 하나의 핀으로 많은 갯수의 LED의 색상을 빠른속도로 제어가능한 장점이 있습니다. 스트립, 원형, 매트릭스 등 다양한 모양으로 구성할 수 있습니다.
호환모듈
- WS281x (WS2811, WS2812…)
- SK6812
명령
INIT
모듈을 초기화합니다.
항목 | 타입 | 설명 |
---|---|---|
GPIO 핀 ¹ | WRITE | LED를 연결한 GPIO핀 번호를 입력합니다. |
LED갯수 ² | WRITE | 핀에 연결된 LED의 갯수를 입력합니다. |
모듈타입 | WRITE | 모듈의 타입을 선택합니다. (WS281x,SK6812) |
작동주파수 | WRITE | 모듈의 작동 주파수를 선택합니다. (400kHz, 800kHz) |
RGB순서 | WRITE | 모듈의 RGB순서를 선택합니다. (RGB,RBG,GRB,GBR,BRG,BGR,RGBW,RBGW,GRBW,GBRW,BRGW,BGRW) |
² 이론상 하나의 핀에 최대 2700 개의 LED를 연결할 수 있습니다. 다만 전원공급 및 신호품질 문제등의 이유로 실제 연결 가능한 갯수는 더 작을 수 있습니다.
GPIO 번호 | 명칭 | 라즈베리파이 모델 |
---|---|---|
10 | SPI0 MOSI | 전 모델 |
12 | PWM0 | 전 모델 (A, B제외) |
13 | PWM1 | 전 모델 (A, B제외) |
18 | PWM0 | 전 모델 |
19 | PWM1 | 전 모델 (A, B제외) |
38 | SPI0 MOSI | Compute module |
40 | PWM0 | Compute module |
41 | PWM1 | Compute module |
45 | PWM1 | Compute module |
52 | PWM0 | Compute module |
53 | PWM1 | Compute module |
SET_BRIGHTNESS
LED의 밝기를 설정합니다.
항목 | 타입 | 설명 |
---|---|---|
밝기 | WRITE | 연결된 모든 LED의 밝기를 제어합니다. (0~255) |
SET_LED
지정위치의 LED를 설정한 색상으로 설정합니다. SHOW 명령을 실행해야 해당색상이 표시됩니다.
항목 | 타입 | 설명 |
---|---|---|
위치 | WRITE | 색상을 설정할 LED의 위치입니다. 0부터 시작합니다. |
R | WRITE | 색상의 R성분을 입력합니다. (0~255) |
G | WRITE | 색상의 G성분을 입력합니다. (0~255) |
B | WRITE | 색상의 B성분을 입력합니다. (0~255) |
W | WRITE | 색상의 W성분을 입력합니다. (0~255, RGBW 타입의 LED만 해당) |
SHOW
설정된 색상을 LED에 표시합니다. SET_LED로 먼저 LED의 색상을 설정해야 합니다.
CLEAR
모든 LED를 끕니다.
FILL_COLOR
시작위치 부터 특정 갯수의 LED를 설정한 색상으로 채웁니다.
항목 | 타입 | 설명 |
---|---|---|
R | WRITE | 색상의 R성분을 입력합니다. (0~255) |
G | WRITE | 색상의 G성분을 입력합니다. (0~255) |
B | WRITE | 색상의 B성분을 입력합니다. (0~255) |
W | WRITE | 색상의 W성분을 입력합니다. (0~255, RGBW 타입의 LED만 해당) |
시작위치 | WRITE | 색상을 설정할 LED의 시작위치입니다. 첫번째 LED의 위치는 0 입니다. |
개수 | WRITE | 색상을 설정할 LED의 갯수를 입력합니다. |
WIPE_COLOR
모든 LED를 설정한 색상으로 하나씩 순차적으로 표시합니다.
항목 | 타입 | 설명 |
---|---|---|
R | WRITE | 색상의 R성분을 입력합니다. (0~255) |
G | WRITE | 색상의 G성분을 입력합니다. (0~255) |
B | WRITE | 색상의 B성분을 입력합니다. (0~255) |
W | WRITE | 색상의 W성분을 입력합니다. (0~255, RGBW 타입의 LED만 해당) |
시작위치 | WRITE | 색상을 설정할 LED의 시작위치입니다. 첫번째 LED의 위치는 0 입니다. |
개수 | WRITE | 색상을 설정할 LED의 갯수를 입력합니다. |
지연시간 | WRITE | 하나의 LED 색상이 표시되고 다음 LED가 표시될때까지의 지연시간입니다. |
THEATER_CHASE
모든 LED를 설정한 색상으로 theater marquee style로 표시합니다.
항목 | 타입 | 설명 |
---|---|---|
R | WRITE | 색상의 R성분을 입력합니다. (0~255) |
G | WRITE | 색상의 G성분을 입력합니다. (0~255) |
B | WRITE | 색상의 B성분을 입력합니다. (0~255) |
W | WRITE | 색상의 W성분을 입력합니다. (0~255, RGBW 타입의 LED만 해당) |
시작위치 | WRITE | 색상을 설정할 LED의 시작위치입니다. 첫번째 LED의 위치는 0 입니다. |
개수 | WRITE | 색상을 설정할 LED의 갯수를 입력합니다. |
지연시간 | WRITE | 하나의 LED 색상이 표시되고 다음 LED가 표시될때까지의 지연시간입니다. |
실행횟수 | WRITE | 효과를 실행할 횟수를 설정합니다. |
RAINBOW_CYCLE
모든 LED를 rainbow cycle 로 표시합니다.
항목 | 타입 | 설명 |
---|---|---|
시작위치 | WRITE | 색상을 설정할 LED의 시작위치입니다. 첫번째 LED의 위치는 0 입니다. |
개수 | WRITE | 색상을 설정할 LED의 갯수를 입력합니다. |
지연시간 | WRITE | 하나의 LED 색상이 표시되고 다음 LED가 표시될때까지의 지연시간입니다. |
실행횟수 | WRITE | 효과를 실행할 횟수를 설정합니다. |
THEATER_CHASE_RAINBOW
모든 LED를 rainbow theater marquee style로 표시합니다.
항목 | 타입 | 설명 |
---|---|---|
시작위치 | WRITE | 색상을 설정할 LED의 시작위치입니다. 첫번째 LED의 위치는 0 입니다. |
개수 | WRITE | 색상을 설정할 LED의 갯수를 입력합니다. |
지연시간 | WRITE | 하나의 LED 색상이 표시되고 다음 LED가 표시될때까지의 지연시간입니다. |
실행횟수 | WRITE | 효과를 실행할 횟수를 설정합니다. |
예제
부품
부품 | 갯수 |
---|---|
WS2812 | 1 |
5V DC Power Supply | 1 |
연결
5V DC Power ² | WS2812 LED | GPIO |
---|---|---|
+ | +5V | |
| Din ¹ | 12 |
– | GND | GND |
² LED의 전압과 소모전류를 고려하여 적절한 외부 DC Power Supply를 사용합니다.
프로젝트
제한사항
PWM
PWM0, PWM1 핀 사용시 라즈베리파이 온보드 오디오와 네오픽셀을 동시에 사용시 충돌이 발생할 수 있습니다. 이 경우 아래와 같이 Broadcom audio kernel을 blacklist에 등록하여 차단해야 합니다.
라즈베리파이 터미널에 아래의 명령을 입력하여 파일을 생성합니다.
sudo nano /etc/modprobe.d/snd-blacklist.conf
아래의 내용을 파일의 마지막에 추가합니다.
blacklist snd_bcm2835
Ctrl + O -> 엔터 -> Ctrl + X 를 눌러서 파일을 저장하고 종료합니다.
다음 명령을 입력하여 라즈베리파이를 재부팅합니다. (오디오는 더 이상 작동하지 않습니다.)
sudo reboot
SPI
SPI-MOSI 핀 사용시 많은 갯수 (약 340개 이상) 의 네오픽셀을 사용시 SPI 전송버퍼의 크기를 늘려주어야 합니다.
라즈베리파이 터미널에 아래의 명령을 입력하여 파일을 편집합니다.
sudo nano /boot/cmdline.txt
아래 내용을 파일의 마지막에 추가합니다.
spidev.bufsiz=32768
Ctrl + O -> 엔터 -> Ctrl + X 를 눌러서 파일을 저장하고 종료합니다.
다음 명령을 입력하여 라즈베리파이를 재부팅합니다.
sudo reboot
라즈베리파이 3,4의 경우 아래와 같이 추가 수정이 필요합니다.
터미널에 아래의 명령을 입력하여 파일을 편집합니다.
sudo nano /boot/config.txt
마지막에 다음을 추가합니다.
- 라즈베리파이 3
core_freq=250
- 라즈베리파이 4
core_freq=500
core_freq_min=500
Ctrl + O -> 엔터 -> Ctrl + X 를 눌러서 파일을 저장하고 종료합니다.
다음 명령을 입력하여 라즈베리파이를 재부팅합니다.
sudo reboot