아두이노 나노로 만드는 네오픽셀 LED 매트릭스 - 단계별 제작 가이드
부품 및 소모품
| 부품 |
수량 |
비고 |
| 아두이노 나노 R3 (Arduino Nano R3) |
1 |
|
| 네오픽셀 스트립 (WS2812B) |
1 |
5m, 30 LED/m = 총 150개 LED |
| 점퍼 와이어 |
1세트 |
|
필요 도구
앱 및 온라인 서비스
프로젝트 소개
매트릭스 만들기
영화 매트릭스가 아닙니다, 네오픽셀 매트릭스입니다! 개별 제어 가능한 네오픽셀 LED 스트립을 구매하세요. 스트립을 풀고 화살표 방향을 확인하세요. 한 방향으로만 연결 가능하며, 방향이 틀리면 LED가 손상될 수 있습니다.
스트립의 화살표 방향 확인 (데이터 흐름 방향)
저는 30 LED/m, 5m 스트립을 구매해 10개 LED씩 15줄로 잘랐습니다. (150개 = 15줄 × 10개)
10개 LED 단위로 자른 스트립들
두꺼운 도화지(카드스톡) 위에 스트립을 지그재그로 배치했습니다. 방향을 번갈아 가며 놓는 것이 포인트입니다.
지그재그 패턴으로 배치 (NEO_ZIGZAG)
적절한 길이로 와이어를 잘라 네오픽셀 단자에 납땜했습니다. 이 과정을 14번 반복했습니다.
모든 줄 연결 완료
납땜 완료 후 멀티미터로 쇼트 여부를 반드시 확인하세요. 쇼트가 있으면 나노, 매트릭스, 심지어 USB 포트까지 손상될 수 있습니다(경험담).
아두이노 IDE의 네오매트릭스 테스트 스케치를 NEO_BOTTOM + NEO_LEFT + NEO_COLUMNS + NEO_ZIGZAG 파라미터로 업로드하세요. 화면에 "howdy"가 스크롤되면 성공입니다!
"Howdy" 텍스트 스크롤 테스트 성공
더 많은 네오픽셀 매트릭스 아이디어는 제 다른 프로젝트를 참고하세요!
코드
아두이노 코드 (Adafruit NeoMatrix 예제 기반)
// Adafruit_NeoMatrix 예제: 단일 네오픽셀 쉴드용
// 세로 방향 매트릭스에 'Howdy' 스크롤
#include
#include
#include
#ifndef PSTR
#define PSTR // 아두이노 Due 호환용
#endif
#define PIN 6 // 데이터 핀
// 매트릭스 선언:
// 매개변수 1 = 매트릭스 너비 (열 수)
// 매개변수 2 = 매트릭스 높이 (행 수)
// 매개변수 3 = 핀 번호
// 매개변수 4 = 매트릭스 레이아웃 플래그 (조합 가능):
// NEO_MATRIX_TOP, NEO_MATRIX_BOTTOM, NEO_MATRIX_LEFT, NEO_MATRIX_RIGHT:
// 첫 번째 LED 위치; 두 개 선택 (예: TOP+LEFT = 좌상단)
// NEO_MATRIX_ROWS, NEO_MATRIX_COLUMNS: 가로 행 또는 세로 열 배치; 하나 선택
// NEO_MATRIX_PROGRESSIVE, NEO_MATRIX_ZIGZAG: 모든 행/열 동일 순서 또는 지그재그; 하나 선택
// 매개변수 5 = 픽셀 타입 플래그:
// NEO_KHZ800 800 KHz (대부분 WS2812 네오픽셀)
// NEO_KHZ400 400 KHz (구형 'v1' FLORA 픽셀, WS2811)
// NEO_GRB GRB 비트스트림 (대부분 네오픽셀)
// NEO_RGB RGB 비트스트림 (v1 FLORA 픽셀)
// 이 예제: 5x8 세로 매트릭스, USB 포트가 위쪽일 때
// 첫 픽셀은 우하단, 열 단위 배치, 지그재그 순서, GRB, 800KHz
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(5, 8, PIN,
NEO_MATRIX_BOTTOM + NEO_MATRIX_LEFT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG,
NEO_GRB + NEO_KHZ800);
const uint16_t colors[] = {
matrix.Color(255, 0, 0), // 빨강
matrix.Color(0, 255, 0), // 초록
matrix.Color(0, 0, 255) // 파랑
};
void setup() {
matrix.begin();
matrix.setTextWrap(false); // 텍스트 줄바꿈 비활성화
matrix.setBrightness(40); // 밝기 0-255 (40 = 약 15%)
matrix.setTextColor(colors[0]);
}
int x = matrix.width();
int pass = 0;
void loop() {
matrix.fillScreen(0); // 화면 지우기
matrix.setCursor(x, 0); // 커서 위치
matrix.print(F("Howdy")); // 텍스트 출력
if (--x < -36) { // 텍스트가 화면 밖으로 나가면
x = matrix.width(); // 위치 리셋
if (++pass >= 3) pass = 0; // 색상 순환
matrix.setTextColor(colors[pass]);
}
matrix.show(); // 디스플레이 업데이트
delay(100); // 스크롤 속도
}
회로도
아두이노 나노와 네오픽셀 매트릭스 연결도
핵심 포인트
- 지그재그 배선: 홀수 행은 좌→우, 짝수 행은 우←좌로 데이터 흐름 (
NEO_MATRIX_ZIGZAG)
- 열 우선 배치: 데이터가 세로 열 단위로 흐름 (
NEO_MATRIX_COLUMNS)
- 첫 LED 위치: 좌하단 (
NEO_MATRIX_BOTTOM + NEO_MATRIX_LEFT)
- 전원 고려사항: 150개 LED 최대 전류 약 9A (5V × 150 × 60mA). 실제 사용 시 밝기 제한(
setBrightness) 필수, 별도 5V 전원 공급 권장
- 쇼트 방지: 납땜 후 멀티미터로 VCC-GND 간 쇼트 확인 필수
확장 아이디어
- 시계, 온도계, 이퀄라이저 등 정보 표시
- 게임 (스네이크, 테트리스 등) 구현
- 블루투스/WiFi 추가로 스마트폰 제어
- 3D 프린팅 프레임으로 깔끔한 마감