본문 바로가기
  • test
62x32 LED MATRIX 예제/버튼 누를때마다 텍스트 색 변경(GPIO)

[62x32 LED 매트릭스 예제] switchColor

by 혜민우진아빠 2021. 6. 14.

예제의 결과물

 

준비물 & 결선 & 세팅하기

아래 링크를 참고해서 준비해주세요.

[62x32 LED 매트릭스 세팅]

 

* 준비물 구입 링크

https://smartstore.naver.com/frontiers/products/5380911083

 

LED 간판 오픈 입구 전광판 아트사인 부동산 전광판 영업중 개업선물 카페 식당 스마트폰 : 스마

[스마트led] 스마트 IOT 전광판의 선구자로써 고객들에게 기존에 없던 가치와 솔루션을 제공합니다.

smartstore.naver.com

 

소스코드 다운

iotfrontiers/popsign_examples (github.com)

 

GitHub - iotfrontiers/popsign_examples

Contribute to iotfrontiers/popsign_examples development by creating an account on GitHub.

github.com

위 링크에 들어가셔서 연두색의 Code 버튼을 누르시고

Download ZIP 버튼을 누르면 전체 예제 파일을 다운 받을 수 있습니다.

 

업로드 준비

① 파일 - 열기 항목을 눌러서 현재 진행하고 있는 예제의 ino파일을 선택합니다.

 

 보드와 PC를 USB C타입 케이블로 연결합니다.

 

 장치관리자에서 보드가 연결된 포트를 확인합니다. USB-SERIAL-CH340 이라는 이름으로 표시되어 있습니다.

 위에서 확인한 포트번호를 IDE에 설정합니다

 ESP-32 Dev Module 보드를 선택합니다.

 

⑥ 업로드 준비가 다 되었습니다. 업로드 버튼을 눌러서 업로드 할 수 있습니다.

 

시리얼 모니터

스케치 우측상단 돋보기 모양을 선택하면 시리얼 모니터를 실행할 수 있습니다. 

시리얼 모니터의 보드레이트를 코드상에서 설정한 보드레이트 (115200) 와 동일하게 설정해야 합니다.

 

 

 

시리얼 모니터를 통해 보드가 컴퓨터로 보내는 내용을 볼 수 있고

전송 버튼 왼쪽에 있는 입력 창에 텍스트를 입력한 후 전송 버튼을 눌러서 보드로 내용을 전송할 수도 있습니다.

 

switchColor 소스코드

#include <Adafruit_GFX.h>   
#include <P3RGB64x32MatrixPanel.h>

P3RGB64x32MatrixPanel matrix(25, 26, 27, 21, 22, 0, 15, 32, 33, 12, 5, 23, 4);

int pin = 13;
int val = 0;

void setup(){
   Serial.begin(115200);
   matrix.begin();

   pinMode(pin, INPUT);
}
bool reversPin = false;
void loop()
{             
  
  val = digitalRead(pin);
  if(val == LOW && reversPin == false)  
  {
      reversPin = true;
      matrix.fillScreen(0);
      matrix.setCursor(18, 12);
      matrix.print("Color");
      matrix.setTextColor(random(0,255));
      Serial.println("low");
    return;
  } 
  if (val == HIGH) reversPin = false;
}

#include 아래에 모듈에 맞는 핀 번호가 있고( ※ ESP32-WROVER-E 모듈 적용 )

그 아래에는 변수가 선언되어 있습니다.

이처럼 전역 변수는 함수 안이 아닌 함수 바깥에 선언합니다.

pin, val은 함수 블록 바깥에 선언되어 있으므로 모든 함수에서 값을 가져오거나 저장할 수 있습니다. 또한, 파일 자체에 변수가 선언되어 있으므로 변수의 범위는 파일 범위입니다.

 

void setup(){
   Serial.begin(115200);
   matrix.begin();

   pinMode(pin, INPUT);
}
bool reversPin = false;

■pinMode(핀번호, 모드)

사용할 디지털 핀의 모드(입력or출력)를 설정하기 위한 함수입니다.

매개변수

핀번호 - 모드를 설정할 디지털 핀 번호를 적어줍니다.

모드 - OUTPUT(출력)또는 INPUT(입력)을 적어줍니다.

특정 핀을 입력 또는 출력으로 동작하도록 설정합니다.

 

모드 변경 스위치를 제어하기 위해 true, false 값을 지원하는 bool 자료형을 사용합니다.

모드변경 스위치를 누른 상태는 13번 핀이 LOW 상태인 것과 같고,

모드변경 스위치를 땐 상태는 13번 핀이 HIGH 상태인 것과 같습니다.

 

 val = digitalRead(pin);
  if(val == LOW && reversPin == false)

■digitalRead(핀번호)

지정한 디지털 핀(13)에서 값(HIGH 또는 LOW)을 읽습니다.

loop() 함수를 통한 반복을 멈추기 위해 변수 reversPin을 false 상태로 만듭니다.

만약 스위치가 눌리면(LOW) 아래 내용들을 실행합니다.

 

 matrix.fillScreen(0);
 matrix.setCursor(18, 12);
 matrix.print("Color");
 matrix.setTextColor(random(0,255));
 Serial.println("low");

matrix.fillScreen(0);                        // matrix 화면 깨끗하게(초기화) 설정
matrix.setCursor(15, 10);                 // 글자가 시작되는 위치 (x-15, y-10)

matrix.print("Color");                      // "Color" 글자를 화면에 출력

matrix.setTextColor(random(0,255));  // 색상은 0 ~ 255까지의 랜덤값을 적용

Serial.println("low");                      // 시리얼 모니터에는 "low"가 출력

댓글