본문 바로가기

관리하지않음/아두이노

[아두이노] RGBW 네오픽셀링 사용법

12개 LED 네오픽셀링

Adafruit사에서 만든 5V 12개 LED 네오픽셀링입니다.

무드등 한번 만들어보려고 하다가, 매번 낱개 LED 제어에 지쳐서 한번 구매해봤습니다.

 

메카솔루션 캡쳐

LED가 12개 박혀있는 지름 5.2cm짜리 네오픽셀링을 구매했고, 4070원 주고 샀습니다.

6000K는 조명으로 쓰는 쨍-한 화이트고, 3000K는 무드등에 적합한 노란(?) 화이트로 알고 있습니다.

저는 3000K짜리 웜화이트 구매했습니다.

메카솔루션 5V 네오픽셀링 12개 LED 링크

 

네오픽셀링 뒷면

구매 전 주의할 사항은 납땜이 필요하다는 점입니다.

인터넷 검색 시에 납땜이 되어있는 사진만 보다가 실제로는 납땜 안 돼있는 게 와서 당황했습니다ㅠ_ㅜ

 

테이프 붙여서 테스트한 모습

사용하던 인두기가 없어서, 테스트를 위해 테이프만 붙여서 해봤습니다.

별로 추천하고 싶지는 않지만, 테이프만 붙여도 동작하긴 했습니다.

급하게 테스트해봐야 한다! 하시는 분들만 테이프 붙여서 테스트해보시길 바랍니다.

 

테이프로 테스트해봤을 때 잘 동작해서, 인두기로 납땜해봤습니다.

납땜은 GND, 5V, DI 하면 됩니다.

네오픽셀링 납땜 한 모습

납땜용 실납을 너무 굵은걸 사서 컨트롤을 잘 못했습니다ㅠ

사진 찍고 보니 난장판이네요

 

네오픽셀링 보드구성

보드 구성은 위와 같이 GND는 아두이노 GND에, 5V는 아두이노 5V에, DI는 2번 핀에 꽂아줍니다.

 

네오픽셀링을 사용하려면 라이브러리를 추가해줘야 합니다.

먼저 Arduino IDE를 실행한 후에 스케치>라이브러리 포함하기>라이브러리 관리를 클릭합니다.

아두이노 IDE>스케치>라이브러리 포함하기>라이브러리 관리

Adafruit NeoPixel 라이브러리를 검색하고 설치해줍니다.

Adafruit NeoPixel 라이브러리 설치하기

라이브러리를 설치했다면, 이제 원하는 대로 코드를 작성할 차례입니다.

 

먼저 모든 LED에서 흰색을 출력하는 코드로 테스트해봅니다.

#include <Adafruit_NeoPixel.h>
int pin = 2; // DI와 연결된 핀번호
int num_of_led = 12; // 네오픽셀링 led 개수

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel(num_of_led, pin, NEO_GRBW + NEO_KHZ800);

void setup() 
{
    
    neopixel.setBrightness(255); // 0~255 사이의 값으로 최대 밝기 조절 (255가 최대)
    neopixel.begin();

    uint32_t color = neopixel.Color(0,0,0,255); // white
    
    for(int i=0;i<num_of_led;++i){
        neopixel.setPixelColor(i, color);
        neopixel.show();
        //delay(50)
    }
}

void loop() 
{
}

neopixel.Color() 안에는 순서대로 Red, Green, Blue, White값을 넣으면 됩니다.

0, 0, 0, 255로 했으니 white 색상 최대로 출력합니다.

LED 12개의 색상이 순차적으로 변경되었으면 좋겠다면, delay의 주석을 삭제하면 됩니다.

 

아래는 응용해서, 각 led가 RGBWRGBWRGBW를 순차적으로 출력하게 만드는 코드입니다.

 

네오픽셀링 RGBWRGBWRGBW

#include <Adafruit_NeoPixel.h>
int pin = 2; // DI와 연결된 핀번호
int num_of_led = 12; // 네오픽셀링 led 개수

Adafruit_NeoPixel neopixel = Adafruit_NeoPixel(num_of_led, pin, NEO_GRBW + NEO_KHZ800);

void setup() 
{
    neopixel.setBrightness(120); // 0~255 사이의 값으로 최대 밝기 조절 (255가 최대)
    neopixel.begin();
}

void loop() 
{
    uint32_t init = neopixel.Color(0, 0, 0, 0);
    uint32_t red = neopixel.Color(255, 0, 0, 0);
    uint32_t green = neopixel.Color(0, 255, 0, 0);
    uint32_t blue = neopixel.Color(0, 0, 255, 0);
    uint32_t white = neopixel.Color(0, 0, 0, 255);

    for(int i=0;i<num_of_led;i++){
      neopixel.setPixelColor(i, init);
      neopixel.show();
      delay(50);
      
      if(i%4==0){
        neopixel.setPixelColor(i, red);
      } else if(i%4==1){
        neopixel.setPixelColor(i, green);
      } else if(i%4==2){
        neopixel.setPixelColor(i, blue);
      } else if(i%4==3){
        neopixel.setPixelColor(i, white);
      }
      neopixel.show();
      delay(50);
    }
}

 

응용 코드 동작 영상

12개의 LED를 핀 하나로 제어할 수 있어서 굉장히 편리합니다.

코드도 쉬워서 활용 방법이 무궁무진하네요 :>


잘못된 내용이 있다면 언제든지 댓글이나 메일로 알려주시면 감사하겠습니다.

이 포스팅이 도움이 되었다면 공감 부탁드립니다.

궁금한 점은 언제든지 댓글 남겨주시면 답변해드리겠습니다:D