ESP32 버튼 연동 교육용 LED 디스플레이

ESP32C/C++ArduinoPlatformIOHUB75LED 디스플레이

버튼 입력에 따라 메시지와 무지개 애니메이션을 표시하는 교육용 LED 디스플레이를 개발했습니다. ESP32와 HUB75 LED 패널을 활용해 입력 처리, 텍스트 배치, 색상 표현, 단계별 애니메이션을 실습할 수 있는 구조로 구성했습니다.

KakaoTalk_20260414_154712483_01.jpg

개발 범위

  • ESP-WROVER-KIT 기반 PlatformIO·Arduino Framework 프로젝트 구성
  • 64×32 HUB75 LED 패널 2장을 연결한 128×32 화면 제어
  • 버튼별 메시지와 애니메이션 출력 함수 구현
  • 화면 설정값 분리와 텍스트 중앙 정렬 처리

주요 구현 내용

입력 표시 동작
버튼 1 Creation
버튼 2 Crisis
버튼 3 Conflict
버튼 4 Reconciliation
버튼 5 반원형 무지개가 점진적으로 생성되는 애니메이션
버튼 6 Being Together

텍스트 길이에 따라 글자 크기를 조정하고 버튼별 색상을 적용했습니다. drawCenteredText()에서 실제 출력 영역을 계산해 중앙 좌표를 보정하고, showReady()와 버튼별 함수로 화면 동작을 분리했습니다.

drawRainbowFrame()은 여러 색의 원을 순차적으로 채우고, showRainbow()는 반지름을 단계적으로 키워 무지개 애니메이션을 표시합니다. 해상도, 버튼 핀, 색상, 글자 크기, 반지름, 지연 시간은 상수로 분리해 실습 중 설정을 바꾸기 쉽도록 했습니다.

KakaoTalk_20260414_154712483_02.jpg

시스템 구성

항목 구성
제어 보드 ESP-WROVER-KIT
디스플레이 64×32 HUB75 패널 2장, 전체 128×32
드라이버 FM6124
LED 구동 I2S DMA, 16MHz 설정
입력 GPIO 기반 버튼 6개
그래픽 라이브러리 ESP32 HUB75 LED MATRIX PANEL DMA Display, Adafruit GFX Library, Adafruit BusIO
대기 화면 검은 배경과 하단 양 끝의 보라색 점 2개

동작 특성과 확장 과제

버튼 검사는 loop()의 else if 분기로 처리하므로 동시에 여러 버튼이 눌리면 먼저 확인된 한 가지 동작만 실행합니다. 버튼 디바운싱과 애니메이션 재생 중 입력 처리 방식은 향후 개선할 수 있는 부분입니다. 입력과 시각 효과의 관계를 직접 확인하는 교육·전시·프로토타입 실습에 맞춰 기능별 구조를 정리했습니다.

KakaoTalk_20260414_154712483.jpg