네오픽셀(WS2812)
하나의 led로 RGB값을 조절하여 여러 색을 표현할 수 있는 LED입니다.
또한 컨트롤러로 각 led를 개별적으로 제어 가능합니다.
본문에서는 원형(LED 7개), 직선형(LED 8개) 두 모델을 사용하였습니다.
단자는 총 6개 혹은 8개이며 6개의 경우 (IN, VCC 2개, GND 2개, OUT)이며 8개의 경우는 기존 6개 단자에 GND 2개가 추가된 형태입니다.
보드에 연결된 네오픽셀의 out단자에 다음 네오픽셀의 in 단자를 연결시키면 보드에 하나의 핀만 연결하여 사용할 수 있습니다.
사양
- 작동 전압 : 5V
- 각 led당 20mA ~ 80mA
필요 하드웨어
- NeoPixel
- Arduino UNO
- UNO cable
- M-M cable(6ea)
- F-M cable(3ea)
연결(M-M, F-M cable을 납땜하여 neopixel에 연결하였음)
- 네오픽셀, 아두이노 간 연결
neopixel | arduino |
IN | D7 |
VCC | 5V |
GND | GND |
- 1st 네오픽셀, 2nd 네오픽셀간 연결(이후 네오픽셀을 더 추가하더라도 동일한 방식으로 적용)
1st neopixel | 2nd neopixel |
OUT | IN |
VCC | VCC |
GND | GND |
라이브러리
- Adafruit NeoPixel
예제 코드
#include <Adafruit_NeoPixel.h>
//7번핀 사용
#define PIN 7
//픽셀 갯수 지정
#define NUMPIXELS 15
//밝기 지정
#define bright 255
#define dly 10000
//neopixel을 제어하기 위한 neo 생성
Adafruit_NeoPixel neo(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
//neopixel 시작
neo.begin();
//neopixel 밝기 설정
neo.setBrightness(bright);
//neopixel 초기화
neo.clear();
//neopixel 적용
//.show()를 사용하기 전까진 내부적으로만 설정이 적용되었다 생각하면 됩니다.
//.show()가 실행되면 led에 내부적으로 적용된 명령들이 실행됩니다.
neo.show();
}
void loop()
{
//led 흰색 점등
for (int i = 0; i < 15; i++)
{
neo.setPixelColor(i,255,255,255);
}
neo.show();
delay(500);
//led 적색 점등
for (int i = 0; i < 15; i++)
{
neo.setPixelColor(i,255,0,0);
}
neo.show();
delay(500);
//led 녹색 점등
for (int i = 0; i < 15; i++)
{
neo.setPixelColor(i,0,255,0);
}
neo.show();
delay(500);
//led 청색 점등
for (int i = 0; i < 15; i++)
{
neo.setPixelColor(i,0,0,255);
}
neo.show();
delay(500);
}