본문 바로가기
아두이노/아두이노 IDE

07. 아두이노 IDE WS2812 풀컬러LED 제어 [베이직 트레이닝 보드]

by 땜블리 2023. 3. 5.
728x90
반응형
SMALL

안녕하세요 땜블리 입니다.

아두이노와 베이직 트레이닝 보드를 이용한 WS2812 풀컬러LED 제어 실습을 진행 하겠습니다.

베이직 트레이닝 보드는 아래에서 확인이 가능합니다.

https://ttcw.tistory.com/4

 

라즈베리파이 피코 베이직 트레이닝보드 구성

라즈베리파이 피코 보드의 펌웨어실습을 위한 베이직 트레이닝보드를 소개 합니다. 현재 네이버 스마트스토어에서 판매가 진행되고 있습니다. 라즈베리파이 피코 베이직 트레이닝 보드 라즈베

ttcw.tistory.com

 

1) WS2812 제어 구동 원리

(1) 동작설명

WS2812 칩은 LED 빨강, LED 초록, LED 파랑을 한칩에 다 넣은 IC입니다.

24 bit 데이터를 전송하여 LED의 색을 나타내고 순서는 아래와 같이 G R B 순서입니다.

(2) 연결방법

연결표

 

(3) 코드작성

#include<Adafruit_NeoPixel.h>
#define ledNum 2
#define WS2812PIN 8//포트설정
Adafruit_NeoPixel strip = Adafruit_NeoPixel(ledNum, WS2812PIN, NEO_GRB + NEO_KHZ800); 

void colorWipe(uint32_t c, uint8_t wait) 
{
  for(uint16_t i=0; i<strip.numPixels(); i++) 
  {
      strip.setPixelColor(i, c); 
      strip.show(); 
      delay(wait); 
  }
}

void setup() 
{
  strip.begin(); 
  strip.clear();
  strip.show(); 
}
void loop() 
{
  colorWipe(strip.Color(255, 0, 0), 100); // Red, 100ms 지연
  delay(1000);
  colorWipe(strip.Color(0, 255, 0), 100); // Green, 100ms 지연
  delay(1000);
  colorWipe(strip.Color(0, 0, 255), 100); // Blue, 100ms 지연
  delay(1000);
}

 

(4) 동작결과

 

 

반응형

2) WS2812의 밝기 제어

(1) 동작설명

WS2812b의 밝기를 Adafruit_NeoPixel. 라이브러리를 이용하여 제어 합니다.

 

(2) 코드작성

#include<Adafruit_NeoPixel.h>
#define ledNum 2
#define WS2812PIN 8//포트설정
Adafruit_NeoPixel strip = Adafruit_NeoPixel(ledNum, WS2812PIN, NEO_GRB + NEO_KHZ800);
void colorWipe(uint32_t c, uint8_t wait)
{
  for (uint16_t i =0; i < strip.numPixels(); i++)
  {
    strip.setPixelColor(i, c);
    strip.show();
    delay(wait);
  }
}
void setup()
{
  Serial.begin(115200);
  strip.begin();
  strip.clear();
  strip.show();
}
void loop()
{
  for (int fadeValue =0 ; fadeValue <=255; fadeValue +=5) {
    strip.setPixelColor(0, 255, 0, 0);
    strip.setBrightness(fadeValue);
    strip.show();
    Serial.println(fadeValue);
    delay(30);
  }
  // fade out from max to min in increments of 5 points:
  for (int fadeValue =255 ; fadeValue >=0; fadeValue -=5) {
    strip.setPixelColor(0, 255, 0, 0);
    strip.setBrightness(fadeValue);
    strip.show();
    Serial.println(fadeValue);
    delay(30);
  }
}

(3) 동작결과

WS2812 LED가 점점 밝아졌다가 어두워 짐니다.

(3) 동작결과

 

 

728x90
반응형
LIST

댓글