[E-02] 영어 표시하기
LED_config.h
#ifndef _LED_CONFIG_H_ // 헤더 파일의 중복 포함 방지
#define _LED_CONFIG_H_
// 매트릭스 디스플레이 설정
#define MATRIX_WIDTH 64 // LED 매트릭스의 가로 크기를 정의 (LED의 가로 픽셀 수)
#define MATRIX_HEIGHT 32 // LED 매트릭스의 세로 크기를 정의 (LED의 세로 픽셀 수)
// 전체 디스플레이 영역 설정
#define TOTAL_WIDTH 128 // 전체 디스플레이의 가로 크기 (모듈 연결을 고려한 값, 현재는 단일 모듈)
#define TOTAL_HEIGHT 32 // 전체 디스플레이의 세로 크기 (모듈 연결을 고려한 값, 현재는 단일 모듈)
/* LED MATRIX 설정
ESP32-HUB75 매트릭스 라이브러리 사용 시 매트릭스 객체를 외부에서 참조 가능하도록 선언
extern 키워드를 사용하여 다른 소스 파일에서 이 객체를 정의 및 사용할 수 있도록 지정
*/
#include <ESP32-HUB75-MatrixPanel-I2S-DMA.h>
extern MatrixPanel_I2S_DMA *display;
/* NeoPixel MATRIX 설정
FastLED_NeoMatrix 객체를 외부에서 참조 가능하도록 extern으로 선언
다른 소스 파일에서 이 객체를 정의 및 사용할 수 있도록 지정
*/
// #include <FastLED_NeoMatrix.h>
// extern FastLED_NeoMatrix *display;
#endif // 헤더 파일의 중복 포함 방지를 위한 조건부 컴파일 종료
led_eng.ino
#include <ESP32-HUB75-MatrixPanel-I2S-DMA.h> // ESP32 HUB75 매트릭스 제어 라이브러리
#include "LED_config.h" // LED 설정 파일 포함
#define MATRIX_CHAIN 1 // 체인으로 연결된 패널의 총 개수 (현재는 1개만 사용)
// MatrixPanel_I2S_DMA 클래스 객체 포인터를 초기화 (동적 생성 예정)
MatrixPanel_I2S_DMA *display = nullptr; // HUB75 매트릭스를 제어할 객체
void setup() {
// 매트릭스 크기와 체인 수를 기반으로 구성 설정을 초기화
HUB75_I2S_CFG mxconfig(MATRIX_WIDTH, MATRIX_HEIGHT, MATRIX_CHAIN);
// HUB75 매트릭스와 연결된 ESP32의 GPIO 핀 번호 설정
mxconfig.gpio.r1 = 25; // 첫 번째 스캔 라인의 빨간색 데이터 핀
mxconfig.gpio.b1 = 26; // 첫 번째 스캔 라인의 파란색 데이터 핀
mxconfig.gpio.g1 = 27; // 첫 번째 스캔 라인의 초록색 데이터 핀
mxconfig.gpio.r2 = 21; // 두 번째 스캔 라인의 빨간색 데이터 핀
mxconfig.gpio.b2 = 22; // 두 번째 스캔 라인의 파란색 데이터 핀
mxconfig.gpio.g2 = 0; // 두 번째 스캔 라인의 초록색 데이터 핀
mxconfig.gpio.a = 12; // 주소 핀 A (행 선택 신호)
mxconfig.gpio.b = 5; // 주소 핀 B
mxconfig.gpio.c = 23; // 주소 핀 C
mxconfig.gpio.d = 4; // 주소 핀 D
mxconfig.gpio.e = -1; // 주소 핀 E (사용하지 않음)
mxconfig.gpio.lat = 32; // 래치 신호 핀 (데이터 잠금)
mxconfig.gpio.oe = 33; // 출력 활성화 핀 (Output Enable)
mxconfig.gpio.clk = 15; // 클럭 신호 핀 (Clock)
// 기타 구성 설정
mxconfig.clkphase = false; // 클럭 위상 설정 (기본값은 false, 데이터 안정성에 영향을 미침)
mxconfig.driver = HUB75_I2S_CFG::ICN2038S; // 매트릭스 패널의 드라이버 IC 지정 (ICN2038S)
mxconfig.min_refresh_rate = 240; // 최소 화면 리프레시 속도 설정 (240Hz)
// 디스플레이 객체 동적 생성 및 초기화
display = new MatrixPanel_I2S_DMA(mxconfig);
display->begin(); // 디스플레이 초기화
display->setTextWrap(false); // 텍스트 줄 바꿈 비활성화
display->setBrightness(150); // 디스플레이 밝기 설정 (0-255)
display->clearScreen(); // 화면 초기화 (검은색으로 채우기)
}
void loop() {
// 매트릭스 화면을 검은색으로 초기화
display->fillScreen(0);
// 텍스트 출력 크기 설정
display->setTextSize(1); // 텍스트 크기를 기본값으로 설정 (1x 크기)
// 빨간색 "R" 출력
display->setCursor(0, 0); // 출력 위치 설정 (x=0, y=0)
display->setTextColor(display->color565(255, 0, 0)); // 빨간색 텍스트 색상 설정 (RGB: 255, 0, 0)
display->print("R"); // "R" 출력
// 초록색 "G" 출력
display->setCursor(8, 0); // 출력 위치 이동 (x=8, y=0)
display->setTextColor(display->color565(0, 255, 0)); // 초록색 텍스트 색상 설정 (RGB: 0, 255, 0)
display->print("G"); // "G" 출력
// 파란색 "B" 출력
display->setCursor(16, 0); // 출력 위치 이동 (x=16, y=0)
display->setTextColor(display->color565(0, 0, 255)); // 파란색 텍스트 색상 설정 (RGB: 0, 0, 255)
display->print("B"); // "B" 출력
// 출력 내용 유지 후 100ms 대기
delay(100); // 텍스트 갱신 주기를 100ms로 설정
}
이 라이브러리는 display->show() 호출할 필요가 없습니다. 디스플레이에 바로 표시가 됩니다.
Green 색상을 표시했는 데 Blue가 표시된다면 b1 <-> g1, b2 <-> g2핀의 순서를 변경해줍니다.
mxconfig.gpio.b1 = ; // 첫 번째 스캔 라인의 파란색 데이터 핀
mxconfig.gpio.g1 = ; // 첫 번째 스캔 라인의 초록색 데이터 핀
mxconfig.gpio.b2 = ; // 두 번째 스캔 라인의 파란색 데이터 핀
mxconfig.gpio.g2 = ; // 두 번째 스캔 라인의 초록색 데이터 핀
이 라이브러리는 color를 5bit 6bit 5bit 형태로 입력해야 합니다. 아래 함수를 사용하면 됩니다.
display->color565(r, g, b) // 0~255
화면을 검정색으로 채우는 방법 3가지
display->fillScreen( display->color565(0, 0, 0) );
display->fillScreen(0);
display->clearScreen();
댓글