#include <MD_MAX72xx.h>
#include <SPI.h>
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES 4
#define CS_PIN 10
int UP = 5;
int DOWN = 6;
int LEFT = 7;
int RIGHT = 4;
MD_MAX72XX mx(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
int x = 0;
int y = 0;
int dir = 0;
int lastMove = 0;
int moveDelay = 2000;
void setup() {
pinMode(UP, INPUT_PULLUP);
pinMode(DOWN, INPUT_PULLUP);
pinMode(LEFT, INPUT_PULLUP);
pinMode(RIGHT, INPUT_PULLUP);
mx.begin();
mx.setPoint(0, 0, true);
Serial.begin(9600);
Serial.println("Start");
}
void loop() {
if (digitalRead(UP) == LOW && dir != 3) {
dir = 1;
Serial.println("up");
}
if (digitalRead(LEFT) == LOW && dir != 4) {
dir = 2;
Serial.println("left");
}
if (digitalRead(DOWN) == LOW && dir != 1) {
dir = 3;
Serial.println("down");
}
if (digitalRead(RIGHT) == LOW && dir !=2) {
dir = 4;
Serial.println("right");
}
if (millis()-lastMove > moveDelay) {
lastMove = millis();
mx.setPoint(y,x,false);
if (dir == 1) {
y++;
}
if (dir == 2) {
x--;
}
if (dir == 3) {
y--;
}
if (dir == 4) {
x++;
}
if (x > 31) x = 0;
if (x < 0) x = 31;
if (y > 7) y = 0;
if (y < 0) y = 7;
mx.setPoint(y,x,true);
}
}