WS2312라는 컬러 LED칩은 내부에 Red,Green,Blue 세개의 LED와 이를 컨트롤하는 WS2811이라는 마이크로칩까지 내장하고 있어 모든 컬러의 빛을 낼 수 있으면서 다음과 같은 장점이 있다.

 

- 전원 외에 1개의 데이터선으로 만으로도 컬러의 종류 및 세기 제어( 기존 RGB LED전구는 3선 필요)  

- 여러개를 직렬로 연결해서 사용할 수 있으며 각각에 대해서 순번을 지정해서  컬러의 종류 및 세기를 제어할 수 있다. 

-즉, 하나의 제어선 만으로도 수십 수백개까지도 여러개 KED 전구의 컬러의 종류 및 세기를 제어할 수 있다.  

 

 

 

 

1구 짜리 WS2812 LED 칩만을 가진 미니 보드는 다음과 같이 5V 전원선 이외 Din 단자만으로 제어가 가능하며 다음 번 전구를 연결할 필요가 있을 경우 Dout 단자에 다시 다음 번 전구의 Din단자를 연결 시켜되고, 이런 식으로 계속해서 직렬로 전구를 연결해서 확장할 수 있다. 

 

 

이렇게 직렬로 계속 확장 연결할 수 있는특성을 이용하여 다음과 같이 다양한 보드 형태의 컬러LED 전광판들이 네오픽셀이라는 이름으로 판매된다. 

 

 

 

아두이노와의 연결

 

 

 

 

위와 같이 아두이노의 5V와 GND를 전원으로 연결하고, PWM 방식의 디지털 츨력핀을 WS2812칩의 Din에 연결하면 되는데 전원의 용량에 주의해야 한다. 즉 하나의 WS2812칩마다  20 mA ~ 60mA까지의 전류를 소비하는데 아두이노 5V출력선에서 보내줄 수 있는 전류량이 제한되기 때문에 2~3개 이상의 전구를 연결할 때에는 별도의 전원장치로 부터 전원을 공급해야 한다.

 

라이브러리의 설치

 

통상 Adafruit사에서 제공하는 NeoPixel 라이브러리를 사용하는데 다음 링크에서 zip파일을 다운로드 받아 아두이노 IDE에서 스케치 -> 라이브러리 포함하기 -> .ZIP 라이브러리 추가하기를 선택하여 다운해 놓은 ZIP파일을 지정한다. 

 

       https://github.com/adafruit/adafruit_neopixel

 

샘플프로그램

 

 

 

3 line : Adafruit_NeoPixel( A, B, C + D ) 에서 A부분에 전구의 갯수 , B부분에 제어용 핀번호, C,D부분에 칩의 종류를 지정하는데 가장 흔하게 판매되는 WS2812B 모델인 경우 NEO_GRB + NEO_KHZ800로 지정하면 된다.

 

17 line :  setPixelColor(n,R,G,B) 함수를 이용하여 제어 명령을 주는데 n부분에 몇번째 LED전구에 대한 명령인지 그리고 R,G,B부분에 Red,Green,Blue color별 세기를 세기를 지정하면 된다. 즉 세번쨰 전구를 붉은색으로 하고 싶다면 setPixelColor(2,255,0,0) 이라고 지정하면 된다.

 

18 line : 제어정보를 지정한 후 반드시 show()명령을 주어야 실제 LED에 표시된다.

 

+ Recent posts