ESP32 10세그먼트 LED 바 그래프
| 1 | × | 38-pin ESP32 ESP-WROOM-32 Dev Module - Narrow | 쿠팡 | 아마존 | |
| 1 | × | (또는) 38-pin ESP32 ESP-WROOM-32 Dev Module - Wide | 쿠팡 | 아마존 | |
| 1 | × | (또는) 30-pin ESP32 ESP-WROOM-32 Dev Module - Wide | 아마존 | |
| 1 | × | (또는) ESP32 Uno-form board | 아마존 | |
| 1 | × | (또는) ESP32 S3 Uno-form board | 아마존 | |
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
| 1 | × | (옵션) DC 커넥터 전원 연결 잭 플러그 소켓 | 쿠팡 | 아마존 | |
| 1 | × | 10 Segment LED Bar Graph | 아마존 | |
| 10 | × | 220 Ω Resistor | 아마존 | |
| 1 | × | 브레드보드 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) ESP32용 스크루 터미널 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Breakout Expansion Board for ESP32 | 쿠팡 | 아마존 | |
| 1 | × | (추천) ESP32용 전원 분배기 | 쿠팡 | 아마존 |
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
이 튜토리얼에서는 ESP32를 사용하여 10세그먼트 LED 바 그래프를 제어하고, 디스플레이에 시각적인 바 애니메이션을 표시하는 방법을 안내합니다.
10세그먼트 LED 바 그래프에 대하여
| 10세그먼트 LED 바 그래프 | |
|---|---|
| 세그먼트 수 | 10 |
| LED 색상 | 밝은 빨간색 |
| 순방향 전압 | 세그먼트당 약 2V |
| 순방향 전류 | 세그먼트당 최대 20mA |
| 필요한 저항 | 세그먼트당 220Ω |
LED 바 그래프 핀아웃

- 애노드 핀(A1–A10): 이 핀들을 220Ω 저항을 통해 GPIO 핀에 연결합니다
- 캐소드 핀(K1–K10): 이 핀들을 GND(0V)에 연결합니다
ESP32 GPIO 핀을 보호하기 위해 모든 애노드에 전류 제한 저항을 연결할 것을 강력히 권장합니다.
※ 주의:
배선을 간단하게 유지하기 위해 10개의 애노드 핀을 모두 ESP32 개발 보드 헤더의 한쪽 면을 따라 물리적 핀 순서대로 연결했습니다. 이 때문에 GPIO5와 GPIO15가 사용되는데 — 두 핀 모두 부팅 시 잠깐 펄스가 발생할 뿐이고 보드의 LED에도 흔히 사용되므로 위험이 낮습니다. 보드의 부팅이나 플래싱 모드에 실제로 영향을 줄 수 있는 GPIO0, GPIO2, GPIO12는 완전히 피했습니다.
10세그먼트 LED 바 그래프와 ESP32 간의 배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
ESP32 및 다른 구성 요소에 전원을 공급하는 방법에 대해 잘 알지 못하는 경우, 다음 튜토리얼에서 안내를 찾을 수 있습니다: ESP32 전원 공급 방법.
| LED 바 그래프 | ESP32 핀 |
|---|---|
| A1 (애노드 1) | GPIO23 (220Ω 경유) |
| A2 (애노드 2) | GPIO22 (220Ω 경유) |
| A3 (애노드 3) | GPIO21 (220Ω 경유) |
| A4 (애노드 4) | GPIO19 (220Ω 경유) |
| A5 (애노드 5) | GPIO18 (220Ω 경유) |
| A6 (애노드 6) | GPIO5 (220Ω 경유) |
| A7 (애노드 7) | GPIO17 (220Ω 경유) |
| A8 (애노드 8) | GPIO16 (220Ω 경유) |
| A9 (애노드 9) | GPIO4 (220Ω 경유) |
| A10 (애노드 10) | GPIO15 (220Ω 경유) |
| K1–K10 (캐소드) | GND |
10세그먼트 LED 바 그래프를 위한 ESP32 프로그래밍 방법
- 10세그먼트 LED 바 그래프를 위한 ESP32 프로그래밍은 간단합니다. 라이브러리를 설치할 필요가 없습니다.
- 각 세그먼트에 할당된 GPIO 핀 배열을 정의합니다: const int ledPins[10] = {23, 22, 21, 19, 18, 5, 17, 16, 4, 15};
- setup() 안에서 각 핀을 출력으로 설정합니다: pinMode(ledPins[i], OUTPUT);
- 해당 핀에 HIGH를 써서 세그먼트를 켭니다: digitalWrite(ledPins[i], HIGH);
- 해당 핀에 LOW를 써서 세그먼트를 끕니다: digitalWrite(ledPins[i], LOW);
ESP32 코드 - 10세그먼트 LED 바 그래프
/*
* 이 ESP32 코드는 newbiely.kr 에서 개발되었습니다
* 이 ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다.
* 상세한 지침 및 연결도에 대해서는 다음을 방문하세요:
* https://newbiely.kr/tutorials/esp32/esp32-10-segment-led-bar-graph
*/
const int NUM_SEGMENTS = 10;
const int ledPins[NUM_SEGMENTS] = {23, 22, 21, 19, 18, 5, 17, 16, 4, 15};
void printBar(int litCount) {
Serial.print("Bar: [");
for (int i = 0; i < NUM_SEGMENTS; i++) {
Serial.print(i < litCount ? "*" : " ");
}
Serial.println("]");
}
void setup() {
Serial.begin(115200);
for (int i = 0; i < NUM_SEGMENTS; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW);
}
}
void loop() {
for (int i = 0; i < NUM_SEGMENTS; i++) {
digitalWrite(ledPins[i], HIGH);
printBar(i + 1);
delay(100);
}
delay(500);
for (int i = NUM_SEGMENTS - 1; i >= 0; i--) {
digitalWrite(ledPins[i], LOW);
printBar(i);
delay(100);
}
delay(500);
}
빠른 단계
ESP32를 처음 사용한다면 ESP32 - 소프트웨어 설치을 참고하세요.
- 위의 코드를 복사하여 Arduino IDE에서 엽니다.
- ESP-WROOM-32 Dev Module 보드와 올바른 COM 포트를 선택합니다.
- Upload 버튼을 클릭하여 코드를 컴파일하고 ESP32에 업로드합니다.
- 시리얼 모니터를 열고 보드레이트를 115200으로 설정합니다.
- LED 바 그래프의 바 애니메이션과 시리얼 모니터에 출력되는 내용을 확인합니다.
시리얼 모니터 출력
8
Serial.println("Hello World!");
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Bar: [* ]
Bar: [** ]
Bar: [*** ]
Bar: [**** ]
Bar: [***** ]
Bar: [****** ]
Bar: [******* ]
Bar: [******** ]
Bar: [********* ]
Bar: [**********]
Bar: [********* ]
Bar: [******** ]
Bar: [******* ]
Bar: [****** ]
Bar: [***** ]
Bar: [**** ]
Bar: [*** ]
Bar: [** ]
Bar: [* ]
Bar: [ ]
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.