Arduino UNO R4 WiFiの特徴の一つであるLEDマトリクスを使ってみます。
パターンやアニメの表示については、上記のサイトを参考にしてください。
このようなLEDマトリクスを見ると、いずれスカッシュゲームを作ることができないかと考えてしまいます。そこで、第一段階として、LEDをボールに見立てて、壁にぶつかりながら動き回るボールを表示してみます。
スケッチです。
-------------------------------------------------------------
#include "Arduino_LED_Matrix.h"
ArduinoLEDMatrix matrix;
void setup() {
matrix.begin();
}
uint8_t x = random(11);
uint8_t y = random(7);
uint8_t Dx = 1;
uint8_t Dy = 1;
uint8_t frame[8][12] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
void LED_on(uint8_t column,uint8_t row){
frame[row][column] = 1;
matrix.renderBitmap(frame, 8, 12);
}
void LED_off(uint8_t column,uint8_t row){
frame[row][column] = 0;
matrix.renderBitmap(frame, 8, 12);
}
void loop(){
LED_off(x,y);
x = x + Dx;
y = y + Dy;
if(x >= 11 || x <= 0){
Dx = -Dx;
}
if(y >= 7 || y <= 0){
Dy = -Dy;
}
LED_on(x,y);
delay(100);
}
-------------------------------------------------------------
100ms(0.1s)ごとに光るLEDが移動し、端っこで反射しながら動き回ります。
動画でないので分かりにくいですが、光るLEDが次々に移動します。