티스토리 뷰

Neopixel은 adafruit에서 만든 ws2812 LED 부품이다.

이번 포스트는 아두이노로 neopixel을 간단하게 작동시켜보는 예제이다.

나중에 내가 했던거 찾아보는게 구글링하는거보다 편할때가 있어서 간단히 테스트 해보고 정리한 글이다.

 

1. 라이브러리 포함하기.

Neopixel 라이브러리를 먼저 포함시켜줘야한다.

아두이노 라이브러리 매니저에서 설치할수 있다.
 
설치 후에 #include <Adafruit_NeoPixel.h>를 코드에 넣어준다.

 

아두이노 라이브러리 매니저에서 Neopixel 라이브러리 포함하기
아두이노 라이브러리 매니저에서 Neopixel 라이브러리 포함하기

 

 

 

2. 부품 연결

LED 갯수가 많거나, 아두이노에 전력이 많이 들어가는 모터같은게 들어간다면 외부 파워를 연결해줘야 할수도있다.

또, 부품을 보호하기 위해서 저항이나 콘덴서를 연결하기도 하는데 몇개 안되고 해서 그냥 이렇게 연결했다.

아래 표와 같이 Neopixel과 Arduino를 연결하면 된다.

Neopixel Arduino
INPUT pin5 
gnd gnd 
5V 5V

 

 

3. 코드

아래의 코드를 실행하면 0번 LED(첫번째)가 1초 간격으로 켜졌다 꺼졌다 하게된다.

반응형

#include <Adafruit_NeoPixel.h>

 

//define NeoPixel Pin and Number of LEDs

#define PIN 5

#define NUM_LEDS 23

//create a NeoPixel strip

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);

 

void setup() {

  // start the strip and blank it out

  strip.begin();

  strip.show();

}

 

void loop() {

  // set pixel to red, delay(1000)

  strip.setPixelColor(0, 255, 0, 0);

 

  strip.show();

  delay(1000);

  // set pixel to off, delay(1000)

  strip.setPixelColor(0, 0, 0, 0);

 

  strip.show();

  delay(1000);

}

 

 

4. 주요 코드 해석.

strip.setPixelColor(0, 255, 0, 0); 

첫번째 파라메터는 LED 의 번호이고, 

2,3,4번째 파라메터는 RGB 값이다. 0~255까지 지정할수 있다.

setPixelColor로 설정한 값은. strip.show(); 를 실행할때, 네오픽셀에 실제로 나타난다.

 

 

5. 코드 응용

위 코드를 아래와 같이 응용해보았다.
반응형
#include <Adafruit_NeoPixel.h>
 
//define NeoPixel Pin and Number of LEDs
#define PIN 5
#define NUM_LEDS 12
//create a NeoPixel strip
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
 
int i = 0;
 
void setup() {
  // start the strip and blank it out
  strip.begin();
  strip.show();
}
 
void loop() {
  i = (i + 1) % 12;
 
  strip.setPixelColor(i % 12, 0, 0, 0);
  strip.setPixelColor((i + 1) % 12, 0, 1, 1);
  strip.setPixelColor((i + 2) % 12, 0, 4, 2);
  strip.setPixelColor((i + 3) % 12, 0, 16, 8);
  strip.setPixelColor((i + 4) % 12, 0, 30, 15);
  strip.setPixelColor((i + 5) % 12, 0, 60, 30);
 
 
  strip.setPixelColor((i + 6) % 12, 0, 0, 0);
  strip.setPixelColor((i + 7) % 12, 1, 1, 0);
  strip.setPixelColor((i + 8) % 12, 4, 2, 0);
  strip.setPixelColor((i + 9) % 12, 16, 8, 0);
  strip.setPixelColor((i + 10) % 12, 30, 15, 0);
  strip.setPixelColor((i + 11) % 12, 60, 30, 0);
 
  strip.show();
  delay(80);
 
}

 

 

6.  실행 결과 및 해석

네오픽셀과 아두이노를 연결하여 응용 코드를 실행한 장면1
네오픽셀과 아두이노를 연결하여 응용 코드를 실행한 장면1
네오픽셀과 아두이노를 연결하여 응용 코드를 실행한 장면2
네오픽셀과 아두이노를 연결하여 응용 코드를 실행한 장면1

 

- 이 코드를 실행하면 청록색의 빛과 주황색 빛이 빙글빙글 돌아가게 된다. 

- 위 사진은 이 코드를 실행한 결과.

 

- int i의 값이 매 루프마다 1씩 증가하다가 11을 넘으면 0부터 다시 시작한다. 즉 0부터 11의 숫자가 반복되는 변수이다.

- %는 나머지를 반환하는 연산자이다. (12로 나눈 나머지는 0부터 11 사이의 값을 가지게 된다!)

 

- RGB값을 다양하게 넣어보았다. 255까지 굳이 밝기를 올리지 않아도 밝아서 값을 크게 올릴 필요가 없었다. 가장 큰 값이 그래서(60, 30, 0)

- 0번 뿐만 아니라 12개의 LED를 모두 사용.

 

 

 

 

 

 

반응형
댓글