[E-01] 영어 표시하기
LED_config.h 파일
#ifndef _LED_CONFIG_H_ // 헤더 파일의 중복 포함 방지
#define _LED_CONFIG_H_
// 매트릭스 디스플레이 설정
#define MATRIX_WIDTH 32 // LED 매트릭스의 가로 크기를 정의 (LED의 가로 픽셀 수)
#define MATRIX_HEIGHT 16 // LED 매트릭스의 세로 크기를 정의 (LED의 세로 픽셀 수)
// 전체 디스플레이 영역 설정
#define TOTAL_WIDTH 32 // 전체 디스플레이의 가로 크기 (모듈 연결을 고려한 값, 현재는 단일 모듈)
#define TOTAL_HEIGHT 16 // 전체 디스플레이의 세로 크기 (모듈 연결을 고려한 값, 현재는 단일 모듈)
/* 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 // 헤더 파일의 중복 포함 방지를 위한 조건부 컴파일 종료
neo_eng.ino 파일
#include <FastLED_NeoMatrix.h> // FastLED NeoMatrix 라이브러리 포함
#include "LED_config.h" // 사용자 정의 LED 설정 헤더 파일 포함
// LED 매트릭스 설정
#define MATRIX_PIN 17 // LED 매트릭스를 제어할 핀 번호 (디지털 핀)
#define MATRIX_TYPE NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE
// MATRIX_TYPE: 매트릭스의 방향 및 데이터 진행 방식을 정의
// - NEO_MATRIX_TOP: 매트릭스의 데이터가 위쪽에서 시작
// - NEO_MATRIX_LEFT: 데이터가 왼쪽에서 오른쪽으로 진행
// - NEO_MATRIX_ROWS: 행(row) 단위로 데이터가 전달
// - NEO_MATRIX_PROGRESSIVE: 연속적인 데이터 흐름
// LED 매트릭스를 위한 CRGB 배열 생성 (픽셀 데이터 저장)
CRGB leds[MATRIX_WIDTH * MATRIX_HEIGHT];
// CRGB는 FastLED 라이브러리에서 하나의 LED 픽셀을 표현하는 구조체로,
// 각 픽셀의 색상 값을 Red, Green, Blue로 저장
// FastLED_NeoMatrix 객체 생성 및 초기화
FastLED_NeoMatrix *display = new FastLED_NeoMatrix(
leds, // LED 배열
MATRIX_WIDTH, // 매트릭스의 가로 크기
MATRIX_HEIGHT, // 매트릭스의 세로 크기
MATRIX_TYPE // 매트릭스 방향 및 데이터 흐름 방식
);
void setup() {
Serial.begin(115200); // Serial 통신 초기화, 디버깅을 위한 Baud rate 설정
// FastLED 라이브러리로 LED 설정
FastLED.addLeds<WS2812, MATRIX_PIN, GRB>(
leds, // LED 배열
MATRIX_WIDTH * MATRIX_HEIGHT // LED 총 개수
);
display->begin(); // FastLED_NeoMatrix 초기화
display->setTextWrap(false); // 텍스트 줄바꿈 비활성화 (한 줄에 표시)
display->setBrightness(100); // 매트릭스 밝기 설정 (0~255 범위)
display->fillScreen(0); // 매트릭스 화면 초기화 (검은색으로 채움)
// 디버깅 메시지 출력
Serial.printf("Neo Pixel %d x %d \n", MATRIX_WIDTH, MATRIX_HEIGHT);
// 매트릭스 크기 정보 출력 (가로 x 세로)
}
void loop() {
display->fillScreen(0); // 매트릭스 화면 초기화 (검은색으로 채움)
// 텍스트 출력 설정
display->setCursor(0, 0); // 텍스트 시작 위치 설정 (좌표 0, 0)
display->setTextColor(display->Color(255, 0, 0));
// 텍스트 색상 설정 (빨간색, RGB 값: 255, 0, 0)
display->print(F("Howdy")); // 텍스트 출력 (문자열 "Howdy")
display->show(); // 매트릭스에 변경 사항 적용
delay(100); // 100ms 대기, 텍스트 업데이트 속도 조정
}
NEO_MATRIX_ROWS : 순서가 좌우로 연결
NEO_MATRIX_COLUMNS : 순서가 위 아래로 연결
NEO_MATRIX_ZIGZAG : 순서가 3번에서 바로 아래로 연결, 배선 길이가 짧아짐
NEO_MATRIX_PROGRESSIVE : 순서가 3번에서 맨 앞으로 연결, 배선 길이가 길어짐
strip LED가 아닌 개별 LED를 PCB에 배치한다면 NEO_MATRIX_ZIGZAG 로 연결하는 것이 효율적인 구성입니다.
display->setTextWrap(false); // 텍스트 줄바꿈 비활성화, 텍스트가 화면 밖으로 넘어가도록 설정
display->setTextWrap(true); // 텍스트 줄바꿈 활성화, 텍스트가 화면 끝에서 다음 라인에서 표시
display->print("Howdy"); // 부팅시에 전체 라인이 RAM으로 이동되고 RAM에 모두 수행, 실행 속도 빠름.
display->print(F("Howdy")); // 부팅시에 display.print()만 RAM으로 이동되고 Howdy는 여전히 Flash 에 남아있고 실행될 때 마다 Flash에 읽어옴, 실행속도는 느려지지만 RAM의 공간을 절약함.
display->show(); // 이 함수를 호출하지 않으면 위의 내용이 표시되지 않음. 호출하는 순간 LED에 표시함.
댓글