본문 바로가기
  • test
[E-01] Neo Matrix (Arduino V2.xx)/[E-01] 영어 표시하기

[E-01] 영어 표시하기

by ledmatrix 2024. 12. 27.

[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에 표시함.

댓글