아두이노 나노 ESP32 WS2812B LED 스트립
이 튜토리얼에서는 아두이노 나노 ESP32를 사용하여 WS2812B RGB LED 스트립을 제어하는 방법을 배우려고 합니다. 단 하나의 아두이노 나노 ESP32 핀으로:
- Arduino Nano ESP32는 LED 스트립에서 각 LED의 색상을 개별적으로 제어할 수 있습니다.
- Arduino Nano ESP32는 LED 스트립에서 각 LED의 밝기를 개별적으로 변경할 수 있습니다.
준비물
1 | × | 아두이노 나노 ESP32 | 아마존 | |
1 | × | USB 케이블 타입-C | 쿠팡 | 아마존 | |
1 | × | WS2812B RGB LED 스트립 | 아마존 | |
1 | × | 1000uF Capacitor | 아마존 | |
1 | × | 470Ω resistor | 아마존 | |
1 | × | 5V 전원 어댑터 | 아마존 | |
1 | × | (옵션) DC 커넥터 전원 연결 잭 플러그 소켓 | 쿠팡 | 아마존 | |
1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
1 | × | 브레드보드 | 쿠팡 | 아마존 | |
1 | × | (추천) 아두이노 나노용 스크루 터미널 확장 보드 | 쿠팡 | 아마존 | |
1 | × | (추천) 아두이노 나노용 브레이크아웃 확장 보드 | 쿠팡 | 아마존 | |
1 | × | (추천) 아두이노 나노 ESP32용 전원 분배기 | 쿠팡 | 아마존 |
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.
WS2812B RGB LED 스트립 정보
핀배열
WS2812B RGB LED 스트립에는 세 개의 핀이 있습니다:
- GND 핀: GND(0V)에 연결되어야 합니다.
- VCC 핀: 외부 전원 공급 장치의 5V에 연결되어야 합니다.
- Din 핀: 제어 신호를 수신하는 핀입니다. Arduino Nano ESP32 핀에 연결되어야 합니다.
![ws2812b 사용법 핀아웃](https://newbiely.kr/images/tutorial/neopixel-ws2812b-led-strip-pinout.jpg)
※ 주의:
LED 스트립에 인쇄된 라벨을 항상 사용하세요. 제조업체에 따라 핀의 배열이 다를 수 있습니다.
선연결
![아두이노 나노 ESP32 ws2812b rgb LED strip 연결 배선도](https://newbiely.kr/images/tutorial/arduino-nano-esp32-ws2812b-led-strip-wiring-diagram.jpg)
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
WS2812B RGB LED 스트립 프로그래밍 방법
아두이노 나노 ESP32를 처음 사용하는 경우, 아두이노 나노 ESP32 - 소프트웨어 설치을 참조하세요.
WS2812B LED 스트립을 제어하는 데 사용할 수 있는 라이브러리는 두 가지가 있습니다:
- Adafruit NeoPixel 라이브러리.
- FastLED 라이브러리.
이 튜토리얼에서는 Adafruit NeoPixel 라이브러리를 사용할 것입니다.
WS2812B 객체를 선언하십시오.
#define PIN_WS2812B D2 // Arduino Nano ESP32 핀이 WS2812B에 연결됨
#define NUM_PIXELS 30 // WS2812B의 LED(픽셀) 수
Adafruit_NeoPixel WS2812B(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800);
WS2812B를 초기화합니다
WS2812B.begin(); // WS2812B 스트립 객체를 초기화합니다 (필수)
각 개별 LED(픽셀이라고 함)의 색상 설정하기
WS2812B.setPixelColor(pixel, WS2812B.Color(255, 0, 0));
모든 스트립의 밝기를 설정하세요.
WS2812B.setBrightness(100); // 0에서 255까지의 값
※ 주의:
- WS2812B.setBrightness()는 LED 스트립의 모든 픽셀에 사용됩니다. 각 개별 픽셀의 밝기를 설정하기 위해서는 색상 값을 조정할 수 있습니다.
- WS2812B.setBrightness()와 WS2812B.setPixelColor()에 의해 설정된 값들은 WS2812B.show()가 호출될 때만 적용됩니다.
아두이노 나노 ESP32 코드
아래 코드는 다음 작업을 수행합니다:
- 픽셀을 하나씩 녹색으로 바꾸고 각 픽셀 사이에 딜레이를 줍니다.
- 모든 픽셀을 2초 동안 끕니다.
- 모든 픽셀을 동시에 2초 동안 빨간색으로 켭니다.
- 위 과정을 무한히 반복합니다.
/*
* 이 아두이노 나노 esp32 코드는 newbiely.kr 에서 개발되었습니다
* 이 아두이노 나노 esp32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다.
* 상세한 지침 및 연결도에 대해서는 다음을 방문하세요:
* https://newbiely.kr/tutorials/arduino-nano-esp32/arduino-nano-esp32-ws2812b-led-strip
*/
#include <Adafruit_NeoPixel.h>
#define PIN_WS2812B D2 // Arduino Nano ESP32 핀이 WS2812B에 연결되어 있습니다
#define NUM_PIXELS 30 // WS2812B LED 스트립에 있는 LED(픽셀)의 수
Adafruit_NeoPixel ws2812b(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800);
void setup() {
ws2812b.begin(); // WS2812B 스트립 객체 초기화 (필수)
}
void loop() {
ws2812b.clear(); // 모든 픽셀 색상을 'off'로 설정합니다. pixels.show()가 호출될 때만 효과가 있습니다.
// 픽셀마다 지연시간을 두고 하나씩 초록색으로 전환
for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // 각 픽셀마다
ws2812b.setPixelColor(pixel, ws2812b.Color(0, 255, 0)); // pixels.show()가 호출될 때만 효과가 있습니다.
ws2812b.show(); // WS2812B Led 스트립에 업데이트
delay(500); // 각 픽셀 사이 500ms 정지
}
// 모든 픽셀을 두 초 동안 끕니다
ws2812b.clear();
ws2812b.show(); // WS2812B Led 스트립에 업데이트
delay(2000); // 2초 동안 꺼짐
// 모든 픽셀을 동시에 두 초 동안 적색으로 켭니다
for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // 각 픽셀마다
ws2812b.setPixelColor(pixel, ws2812b.Color(255, 0, 0)); // pixels.show()가 호출될 때만 효과가 있습니다.
}
ws2812b.show(); // WS2812B Led 스트립에 업데이트
delay(1000); // 1초 동안 켜짐
// 모든 픽셀을 한 초 동안 끕니다
ws2812b.clear();
ws2812b.show(); // WS2812B Led 스트립에 업데이트
delay(1000); // 1초 동안 꺼짐
}
사용 방법
- Arduino IDE의 왼쪽 탐색 바에서 Library Manager 아이콘을 클릭하여 라이브러리 관리자를 엽니다
- "Adafruit NeoPixel"을 검색한 다음, Adafruit의 WS2812B 라이브러리를 찾습니다
- NeoPixel 라이브러리를 설치하려면 Install 버튼을 클릭하세요.
![아두이노 나노 ESP32 neopixel 라이브러리](https://newbiely.kr/images/tutorial/arduino-nano-esp32-neopixel-library.jpg)
- 위의 코드를 복사하여 Arduini IDE로 엽니다
- Arduino Nano ESP32에 코드를 업로드하려면 Arduini IDE에서 Upload 버튼을 클릭하세요
- LED 효과를 확인하세요
※ 주의:
복잡한 LED 효과에 대해, 저희는 유료 프로그래밍 서비스를 제공합니다.
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.