#include <MD_MAX72xx.h>
#include <ESP32Servo.h>
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 3
#define DATA_PIN 23
#define CS_PIN 21
#define CLK_PIN 18
#define SERVO_PIN 19
MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
int A[8][8] = {0};
Servo servo;
unsigned long cas = 0;
int interval = 1000;
bool state = 0;
void setup() {
Serial.begin(115200);
mx.begin();
mx.clear();
randomSeed(analogRead(0));
servo.attach(SERVO_PIN);
servo.write(0);
}
void loop() {
if (millis() - cas >= interval) {
state = 1;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 24; j++) {
mx.setPoint(i, j, A[i][j]);
}
}
if (A[7][0] == 1) {
servo.write(90);
} else {
servo.write(0);
}
cas = millis();
}
if (state == 1) {
for (int i = 7; i > 0; i--) {
for (int j = 0; j < 8; j++) {
A[i][j] = A[i - 1][j];
}
}
for (int j = 0; j < 8; j++) {
A[0][j] = 0;
}
int pocet = 0;
while (pocet < 5) {
int a = random(0, 24);
if (A[0][a] == 0) {
A[0][a] = 1;
pocet++;
}
}
state = 0;
}
}