본문 바로가기
  • test
[E-02] LED Panel 32x16 (Arduino V2.x.x)/[E-02] 영어 표시하기

[E-02] 영어 표시하기

by ledmatrix 2024. 12. 28.

[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();

 

 

댓글