본문 바로가기
  • test
62x32 LED MATRIX 예제/움직이는 글자와 공 구현하기

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

by 혜민우진아빠 2021. 1. 12.

예제의 결과물

 

 

 

준비물 & 결선 & 세팅하기

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

[62x32 LED 매트릭스 세팅]

 

 

* 준비물 구입 링크

https://smartstore.naver.com/frontiers/products/5380911083%EF%BB%BF

 

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

스마트폰과 블루투스 연결을 통해 글자와 이미지를 마음대로 변경

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 보드를 선택합니다.

 

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

 

textAndBallMove 소스코드

// scrolltext demo for Adafruit P3RGB64x32MatrixPanel library.
// Demonstrates single-buffered animation on our 32x64 RGB LED matrix:


#include <Adafruit_GFX.h>   // Core graphics library
#include <P3RGB64x32MatrixPanel.h>

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

#define BALL_COUNT 3  

const char str[] PROGMEM = "CHANGE THE WORLD, BRIGHT YOUR LIFE";

int16_t    textX         = matrix.width(),
           textMin       = sizeof(str) * -12,
           hue           = 0;
           
int8_t ball[BALL_COUNT][4] = {  
  {  3,  0,  1,  1 }, // Initial X,Y pos & velocity for 3 bouncy balls
  { 17, 15,  1, -1 },  // X, Y, X+pos, Y+pos
  { 27,  4, -1,  1 }
};
static const uint16_t PROGMEM ballcolor[BALL_COUNT] = {
  0x0080, // Green=1
  0x0002, // Blue=1
  0x1000  // Red=1
};

void setup() {
  matrix.begin();
  matrix.setTextWrap(false); // Allow text to run off right edge
  matrix.setTextSize(2);
}

void loop() {
  byte i;

  // Clear background
  matrix.fillScreen(0);

  // Bounce three balls around
  for(i=0; i<BALL_COUNT; i++) {
    // Draw 'ball'
    matrix.fillCircle(ball[i][0], ball[i][1], 5, pgm_read_word(&ballcolor[i]));
    // Update X, Y position
    ball[i][0] += ball[i][2];
    ball[i][1] += ball[i][3];
    // Bounce off edges
    if((ball[i][0] == 0) || (ball[i][0] == (matrix.width() - 1)))
      ball[i][2] *= -1;
    if((ball[i][1] == 0) || (ball[i][1] == (matrix.height() - 1)))
      ball[i][3] *= -1;
  }

  // Draw big scrolly text on top
  matrix.setTextColor(matrix.colorHSV(hue, 255, 255));
  matrix.setCursor(textX, 5);
  matrix.print(str);

  // Move text left (w/wrap), increase hue
  if((--textX) < textMin) textX = matrix.width();
  hue += 7;
  if(hue >= 1536) hue -= 1536;

#if !defined(__AVR__)
  // On non-AVR boards, delay slightly so screen updates aren't too quick.
  delay(20);
#endif
}

* 주요 함수 설명

matrix.fillCircle() : 원을 매트릭스에 출력함.

matrix.print() : 문자를 인수로 받아 매트릭스에 출력 함.

matrix.colorHSV() : 색조, 채도, 값을 인수로 받아 Color 값을 반환함.

matrix.setTextColor() : 2byte 값으로 텍스트의 컬러를 설정

 

예제에 대한 문의 사항은 댓글로 작성해주시면 빠르게 답변 해드리겠습니다.

댓글