-
아두이노 LED Matrix Animation카테고리 없음 2023. 10. 11. 14:56
아두이노 LED Matrix 애니메이션 제작
아두이노 우노 R4 Wifi 보드에 내장되어 있는 12 X 8 크기의 LED Matrix를 활용하여 애니메이션을 제작할 계획입니다.
애니메이션 아이디어로 고전 게임인 테트리스를 떠올려 이를 LED Matrix로 애니메이션을 구현할 것입니다.
https://ledmatrix-editor.arduino.cc/
먼저 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에 나타냅니다.
실제 작동 영상
위 영상이 실제로 작동한 영상으로 이렇게 애니메이션을 완성하였습니다 ~
감사합니다