네오픽셀 (WS281x) LED
일반
네오픽셀 (WS281x) RGB LED 입니다. 네오픽셀(Neo Pixel)은 Adafruit 사의 모델명으로 WS2811/2812와 같은 제어칩과 LED가 일체형으로 된 제품을 의미합니다. 하나의 핀으로 많은 갯수의 LED의 색상을 빠른 속도로 제어 가능한 장점이 있습니다. 스트립, 원형, 매트릭스 등 다양한 모양으로 구성할 수 있습니다.



호환 모듈
- WS281x (WS2811, WS2812…)
- SK6812
사용 가능한 GPIO
- 라즈베리파이 0~4
명령
[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를 연결할 수 있습니다. 다만 전원 공급 및 신호 품질 문제등의 이유로 실제 연결 가능한 갯수는 더 작을 수 있습니다.
** SPI0 MOSI핀 (GPIO 10 또는 38)을 사용할 경우 LED 갯수를 8개 이상으로 설정해야 합니다. 그렇지 않으면 LED 색상, 위치가 설정과 다르게 표시될 수 있습니다.
GPIO 번호 | 명칭 | 라즈베리파이 모델 |
---|---|---|
10 | SPI0 MOSI | 전 모델 (5 제외) |
12 | PWM0 | 전 모델 (A, B, 5 제외) |
13 | PWM1 | 전 모델 (A, B, 5제외) |
18 | PWM0 | 전 모델 (5 제외) |
19 | PWM1 | 전 모델 (A, B, 5, 제외) |
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_PIXEL_COLOR]
특정 위치의 LED의 색상을 설정합니다. SHOW 명령을 실행해야 색상이 표시됩니다.
항목 | 타입 | 설명 |
---|---|---|
위치 | WRITE | 색상을 설정할 LED의 위치입니다. 0부터 시작합니다. |
색상 타입 | WRITE | 설정할 색상의 타입을 선택합니다. (RGB 또는 HSV) |
색상 타입 : RGB
항목 | 타입 | 설명 |
---|---|---|
R | WRITE | 색상의 R성분을 입력합니다. (0~255) |
G | WRITE | 색상의 G성분을 입력합니다. (0~255) |
B | WRITE | 색상의 B성분을 입력합니다. (0~255) |
W | WRITE | 색상의 W성분을 입력합니다. (0~255, RGBW 타입의 LED만 해당) |
색상 타입 : HSV
항목 | 타입 | 설명 |
---|---|---|
H | WRITE | 색상의 H (Hue)성분을 입력합니다. (0~360) |
S | WRITE | 색상의 S (Saturation, 채도)성분을 입력합니다. (0~100) |
V | WRITE | 색상의 V (Value, 명도)성분을 입력합니다. (0~100) |
[SET_PIXELS_COLOR]
여러개의 LED의 색상을 설정합니다. SHOW 명령을 실행해야 색상이 표시됩니다.
항목 | 타입 | 설명 |
---|---|---|
시작위치 | WRITE | 색상을 설정할 LED의 시작위치입니다. 첫번째 LED의 위치는 0 입니다. |
개수 | WRITE | 색상을 설정할 LED의 갯수를 입력합니다. |
색상 타입 | WRITE | 설정할 색상의 타입을 선택합니다. |
색상 타입 : RGB
항목 | 타입 | 설명 |
---|---|---|
R | WRITE | 색상의 R성분을 입력합니다. (0~255) |
G | WRITE | 색상의 G성분을 입력합니다. (0~255) |
B | WRITE | 색상의 B성분을 입력합니다. (0~255) |
W | WRITE | 색상의 W성분을 입력합니다. (0~255, RGBW 타입의 LED만 해당) |
색상 타입 : HSV
항목 | 타입 | 설명 |
---|---|---|
H | WRITE | 색상의 H (Hue)성분을 입력합니다. (0~360) |
S | WRITE | 색상의 S (Saturation, 채도)성분을 입력합니다. (0~100) |
V | WRITE | 색상의 V (Value, 명도)성분을 입력합니다. (0~100) |
[SHOW]
설정된 색상을 LED에 표시합니다.
[CLEAR]
모든 LED를 끕니다.
예제
목표
대시보드의 버튼을 누르면 rainbow theater marquee style의 효과를 실행합니다.
부품
부품 | 갯수 |
---|---|
라즈베리파이 4 * | 1 |
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 핀을 사용하여 네오픽셀을 사용할 경우 라즈베리파이 오디오와 충돌이 발생하여 제대로 동작하지 않을 수 있습니다. 이는 오디오 또한 라즈베리파이의 하드웨어 PWM을 사용하기 때문입니다. 그러므로 이 경우 아래와 같이 라즈베리파이 오디오를 비활성화하면 PWM핀을 통해 정상적으로 네오픽셀을 사용할 수 있습니다. 다만, 이 경우 온보드 오디오 (측면의 3.5mm 오디오 잭)은 사용할 수 없으며 HDMI나 USB 사운드 카드를 통한 오디오 출력을 사용해야 합니다.
라즈베리파이 터미널에 아래의 명령을 입력하여 파일을 생성합니다.
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