WS2812B RGB 링 LED 실험 – 아두이노로 컬러 조명을 제어해보자

⚠️ 실험 안내 (Safety Notice)

이 글에는 리튬이온 셀·배터리팩·전자부품을 활용한 실험 과정이 포함되어 있습니다. 이 기록은 Sensloop Lab의 통제된 환경에서 수행된 내용입니다.

안전한 실험을 위해 다음을 권장드립니다:

  • 절연 장비와 보호장구(장갑·보안경 등)를 착용하세요.
  • 작업 전 전압 확인과 절연 처리를 진행하세요.
  • 고전압 배터리팩 실험은 숙련자가 진행하는 것이 안전합니다.

💡 실험 소개

지난 글에서는 아두이노 우노 보드를 활용해 내장 LED를 깜빡이는 가장 기초적인 실습을 진행했습니다.
이번에는 그 연장선으로, 컬러를 자유롭게 제어할 수 있는 WS2812B RGB LED 링을 활용해
좀 더 시각적이고 다양한 효과를 만들어보는 실험을 준비했습니다.

별도의 회로나 복잡한 연결 없이 핀 3개만으로도 실험이 가능하므로,
처음 시작하는 연구원분들도 부담 없이 따라 하실 수 있습니다.

이번 실습은 단순한 점등 실험을 넘어,
센서나 버튼과 연동해 자동화 조명 시스템으로 확장할 수 있는 좋은 출발점이 됩니다.

🧰 준비물

이번 실습에서는 아래의 간단한 부품들만으로 컬러 LED 제어를 직접 구현해볼 수 있습니다.

  • 아두이노 우노 보드 (UNO)
  • WS2812B 기반 RGB LED 링 모듈 (8개형)
  • 점퍼선 3개
  • USB 케이블 (PC와 아두이노 연결용)
WS2812B 링 모듈, 점퍼선, 아두이노 우노 보드, USB 케이블로 구성된 실습 준비물 전체

아두이노가 처음이신가요?
👉 “아두이노 우노란? 입문자를 위한 보드 구성 설명과 간단한 실습”


아두이노 우노는 센서나 모터 같은 다양한 부품을 제어할 수 있는 입문용 마이크로컨트롤러 보드입니다.


🔷 점퍼선이란?

아두이노와 센서를 연결하기 위한 3색 암-수형 점퍼선 세트

점퍼선(Jumper wire)은 부품 간을 빠르게 연결하기 위한 케이블입니다.
이번 실습에서는 암-수형 점퍼선 3개를 사용해 아두이노와 LED 모듈을 직접 연결합니다.
별도의 납땜이나 브레드보드 없이 사용할 수 있어
간단한 테스트나 프로토타이핑에 매우 유용합니다.

🔷 WS2812B RGB 링 모듈이란?

8개의 RGB LED가 장착된 WS2812B 링 모듈 전면 모습

WS2812B는 각 LED마다 개별 제어가 가능한 컬러 LED입니다.
데이터 핀 하나로 여러 개의 LED를 순서대로 제어할 수 있어,
순차 점등, 파도 효과, 무지개 컬러 등 다양한 연출이 가능합니다.

특히 링 형태는 시계, 인디케이터, 시각 알림 등에 자주 활용됩니다.

🔷 DIN, VCC, GND 핀이란?

WS2812B 링 모듈 후면의 핀 구성 — DI, 5V, GND, DO 순서로 표시된 구조

DIN: Data In, 제어 신호 입력
VCC: +5V 전원 공급
GND: 공통 그라운드 (전류 순환의 기준점)
DO: 여러 개의 링을 직렬로 연결할 때 사용하는 출력 핀 (이번 예제에서는 미사용)

WS2812B 모듈은 이 3개의 핀(DIN, 5V, GND)만 연결하면 동작하며,
신호는 반드시 DIN에서 시작되어야 합니다.


📌 WS2812B 링 모듈과 아두이노 연결하기

이제 본격적으로 RGB 링 모듈을 아두이노 보드에 연결해보겠습니다.
필요한 것은 점퍼선 3개뿐이며, 브레드보드 없이도 바로 연결이 가능합니다.

WS2812B 링 핀아두이노 핀
DI (Data In)D6 (디지털 핀)
5V5V
GNDGND

WS2812B RGB 링 모듈의 핀 구성은 왼쪽부터 DO(출력), GND, 5V, DI(입력) 순이며,
이번 실습에서는 GND, 5V, DI 세 개의 핀만 사용합니다.


⚙️ NeoPixel 라이브러리 설치

WS2812B RGB 링을 제어하려면 Adafruit NeoPixel 라이브러리를 먼저 설치해야 합니다.
이 과정은 한 번만 설정하면 이후 다른 RGB 모듈 제어에도 그대로 활용할 수 있습니다.

아두이노 IDE 상단 메뉴에서 스케치 > 라이브러리 포함 > 라이브러리 관리를 클릭합니다.

다른 모듈을 사용할때도 항상 들어가야하니 기억해주세요 !

상단 검색창에 “Adafruit NeoPixel”을 검색하기 !

라이브러리를 찾아 [Install] 버튼을 클릭합니다. 버전은 기본값 그대로 사용하셔도 됩니다.


💻 코드 작성 예제

자 이제 코드를 한번 짜볼까요 ? 아래 코드를 아두이노 IDE에 그대로 복사한 뒤,
보드가 연결된 상태에서 업로드하면 바로 실습을 확인할 수 있습니다.

//👉 라이브러리 불러오기 (NeoPixel 제어용)
#include <Adafruit_NeoPixel.h>

// 👉 제어 핀 번호는 6번 (우노 D6에 연결했죠?)
#define PIN 6

// 👉 사용하는 LED의 개수는 8개
#define NUMPIXELS 8
// 👉 링 LED 제어를 위한 객체 생성
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

//👉 NeoPixel 초기화 (준비 완료)
void setup() {
  pixels.begin(); 
}

void loop() {
  for (int i = 0; i < NUMPIXELS; i++) {
    pixels.setPixelColor(i, pixels.Color(0, 150, 255)); 👉 i번째 LED를 청록색으로 켜기
    pixels.show();  // 👉 LED에 색상 적용
    delay(100);     // 👉 0.1초 대기
    pixels.setPixelColor(i, 0); // 👉 LED 끄기
  }
}

자 코드를 넣었으니, 한번 적용시켜볼까요 ?

아두이노 우노 보드의 내장 LED를 활용해 기본적인 점멸(블링크) 동작을 실습한 영상입니다. 코드 업로드 후 LED가 주기적으로 켜지고 꺼지는 모습을 확인할 수 있습니다.

🎨 색상 변경 예시

아래처럼 RGB 값을 바꿔 다양한 색상을 표현할 수 있습니다:

  • 빨강: pixels.Color(255, 0, 0)
  • 녹색: pixels.Color(0, 255, 0)
  • 파랑: pixels.Color(0, 0, 255)
  • 흰색: pixels.Color(255, 255, 255)

🌈 이번엔 색상을 바꿔볼까요?

기본적인 청록색 점등 실습이 끝났다면,

이번엔 RGB 값을 변경해 다양한 색상을 점등해보는 실험을 진행해보겠습니다.

아래 코드는 8개의 LED가 각각 다른 색상으로 점등되며,

마치 컬러 팔레트를 순서대로 스캔하는 듯한 효과를 보여줍니다.

#include <Adafruit_NeoPixel.h>

// 제어 핀 번호 (D6)
#define PIN 6
// 링에 있는 LED 수
#define NUMPIXELS 8
// 라이브러리 로드
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

// 사용할 색상 배열
uint32_t colors[] = {
  pixels.Color(255, 0, 0),    // 빨강
  pixels.Color(0, 255, 0),    // 초록
  pixels.Color(0, 0, 255),    // 파랑
  pixels.Color(255, 255, 0),  // 노랑
  pixels.Color(255, 0, 255),  // 보라
  pixels.Color(0, 255, 255),  // 하늘색
  pixels.Color(255, 255, 255) // 흰색
};

int colorIndex = 0; // 현재 색상 인덱스

void setup() {
  pixels.begin();
}

void loop() {
  for (int i = 0; i < NUMPIXELS; i++) {
    pixels.setPixelColor(i, colors[colorIndex]); // 현재 색상으로 점등
    pixels.show();
    delay(100);
    pixels.setPixelColor(i, 0); // LED 끄기
  }

  // 다음 색상으로 넘어가기
  colorIndex++;
  if (colorIndex >= sizeof(colors) / sizeof(colors[0])) {
    colorIndex = 0; // 다시 처음으로
  }
}

🎯 심화 활용: 색상 페이드 & 밝기 조절 요약

아래는 NeoPixel을 좀 더 다채롭게 활용할 수 있는 코드 응용 예시입니다.

필요한 기능만 골라 추가해보세요.

🔸 1. 페이드 인/아웃 효과

pixels.setPixelColor(i, pixels.Color(brightness,0,0));

  • brightness 값을 0부터 255까지 올렸다 내리면
  • LED가 부드럽게 켜졌다 꺼지는 페이드 효과 구현 가능

🔸 2. 전체 밝기 제한

pixels.setBrightness(50);// (0~255)

  • 전체 LED 밝기를 조절
  • 전력 소모 줄이기, 야간 모드 구현, 부드러운 분위기 표현 가능

🔸 3. 무지개 색상 순환

pixels.setPixelColor(i,Wheel(position));

  • Wheel() 함수는 RGB를 무지개처럼 부드럽게 전환
  • 자동색상 순환 / 스펙트럼 흐름 구현에 적합
  • (Adafruit 예제에 포함됨)


✅ 심화 효과까지 적용한 LED 동작영상

📝 마무리하며

오늘의 실험에서는 WS2812B RGB 링을 통해
‘빛’을 데이터로 제어하는 첫 단계를 직접 구현했습니다.
컬러 점등과 순차 회전, 밝기 조절을 실험하며
NeoPixel의 구조와 동작 원리를 몸으로 익혔죠.
이제 이 원리를 바탕으로, 센서나 버튼과 결합해
스스로 반응하는 조명 시스템으로 확장해볼 차례입니다.


혹시 더 많은 LED를 제어하고 싶으신가요?

핀 수와 메모리의 한계 때문에 아두이노 우노와 메가(MEGA) 사이에서 고민이 된다면,
아래 포스트를 참고해보세요.

링 LED로 뭘 해볼수있을까 ? 다음포스트가 궁금하시다면 ?

댓글 남기기