#include <MD_MAX72xx.h>
#include <ezButton.h>
const byte vert = A0;
const byte horz = A1;
const byte sel = 2;
int xhead = 0, yhead = 0;
int maxX = 31, maxY = 7;
byte flag = 0;
String dir = "", prevDir = "";
const byte cs = 10, maxDev = 4;
MD_MAX72XX matrix = MD_MAX72XX(MD_MAX72XX::PAROLA_HW, cs, maxDev);
ezButton btn(sel);
void setup() {
btn.setDebounceTime(25);
matrix.begin();
delay(100);
}
void loop() {
btn.loop();
if (flag == 0) {
checkDir();
moveSprite();
}
matrix.clear();
matrix.setPoint(yhead, xhead, true);
delay(100);
}
void checkDir() {
if (analogRead(horz) > 512 && prevDir != "right") dir = "left";
else if (analogRead(horz) < 512 && prevDir != "left") dir = "right";
else if (analogRead(vert) > 512 && prevDir != "down") dir = "up";
else if (analogRead(vert) < 512 && prevDir != "up") dir = "down";
prevDir = dir;
}
void moveSprite() {
if (dir == "left") xhead++;
else if (dir == "right") xhead--;
else if (dir == "down") yhead++;
else if (dir == "up") yhead--;
windowCheck();
if (btn.isPressed()) flag = 1;
}
void windowCheck() {
if (xhead > maxX) xhead = 0;
else if (xhead < 0) xhead = maxX;
else if (yhead > maxY) yhead = 0;
else if (yhead < 0) yhead = maxY;
}