ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 아두이노 LED Matrix Animation
    카테고리 없음 2023. 10. 11. 14:56

    아두이노 LED Matrix 애니메이션 제작


    Arduino Uno R4 LED Matrix

    아두이노 우노 R4 Wifi 보드에 내장되어 있는 12 X 8 크기의 LED Matrix를 활용하여 애니메이션을 제작할 계획입니다.


    애니메이션 아이디어로 고전 게임인 테트리스를 떠올려 이를 LED Matrix로 애니메이션을 구현할 것입니다.

     

    TETRIS


    https://ledmatrix-editor.arduino.cc/

     

    Led Matrix Editor

    Test your design live Test what you’re doing right on your device. Every edit is displayed right on your board. You just need to upload this sketch to your UNO R4 WiFi, connect it via USB and we’ll handle the rest. Please, note that if you have a runni

    ledmatrix-editor.arduino.cc

     

    LED MATRIX EDITOR

    먼저 LED Matrix 애니메이션을 만들기 위하여 위 Led Matrix Editor 사이트를 이용하여 위와 같이 각 프레임을

    제작할 수 있어 이를 통해 12 X 8 도트 애니메이션의 프레임을 제작하였습니다. 

     

    테트리스의 칸 수가 10칸이고 LED Matrix가 12 X 8이여서 양쪽 맨 끝을 채워 10칸을 만들어 실제 테트리스와 같은 크기로 만들고 사용되는 블럭의 모양과 순서 방식, 회전 방향 등을 그대로 모방하여 최대한 비슷하게 제작하려고 하였으며 

    총 166프레임을 만들어 테트리스를 표현했습니다.

     

    원하는대로 모든 프레임을 완성하였다면 사이트 상단에 플레이 버튼을 통하여 아두이노 LED Matrix에서 어떻게 작동할지 미리 확인해볼 수 있으며 오른쪽 상단 <> 버튼을 통해 제작한 프레임들을 헤더파일로 저장할 수 있습니다.


    아래 코드가 아두이노 실행을 위해 작성한 최종코드입니다.

    아두이노 코드 작성

    #include "Arduino_LED_Matrix.h"
    #include "tetris.h"
    
    ArduinoLEDMatrix matrix;
    int n = 0;
    
    void setup() {
      Serial.begin(115200);
      matrix.begin(); // 함수를 통해 LED 매트릭스를 초기화하여 설정
    }
    
    void loop() {
      matrix.loadFrame(tetris[n%166]);  // LED 매트릭스에 헤더파일의 애니메이션 프레임을 로드
      n++; // 변수 n의 값을 1씩 증가시키면서 프레임 전환
      delay(100); // 0.1초 딜레이를 통하여 애니메이션의 속도 조절
    }

     

     

    ArduinoLEDMatrix의 matrix를 만들어 이를 헤더파일의 저장된 배열의 인덱스를 n값으로 지정하여

    이를 증가시키며 제작한 프레임들을 LED Matrix에 나타내 애니메이션을 표현

    총 프레임 수인 166프레임을 나타내기 위해 (n%166)의 방식으로 n을 166으로 나눈 나머지를 썼습니다.

     

     

    헤더 파일 코드 

    const uint32_t tetris[][4] = {
    	{
    		0x100,
    		0x0,
    		0x0,
    		66
    	},
    	{
    		0x300,
    		0x10010010,
    		0x1000000,
    		66
    	},
    	{
    		0x700,
    		0x20020020,
    		0x2000000,
    		66
    	},
    	{
    		0xe00,
    		0x40040040,
    		0x4000000,
    		66
    	},
        
        .
        .
        .
        
        // 이 방식으로 모든 프레임의 코드가 작성되었으며 아래는 생략
        
        }

     

    헤더파일 코드로 아까 사이트로 제작한 프레임의 코드입니다.

    이 코드가 작성된 헤더 파일을 아두이노 코드에서 불러들여 LED Matrix에 나타냅니다.


    실제 작동 영상

     

    Arduino LED Matrix Tetris Animation

    위 영상이 실제로 작동한 영상으로 이렇게 애니메이션을 완성하였습니다 ~

    감사합니다


Designed by Tistory.