#include <MD_MAX72xx.h>
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 3
#define DATA_PIN 23
#define CS_PIN 21
#define CLK_PIN 18
unsigned long cas = 0;
int interval = 1000;
bool state = 0;
MD_MAX72XX mx = MD_MAX72XX(MD_MAX72XX::PAROLA_HW, CS_PIN, MAX_DEVICES);
int A[8][24] {
{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},
{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 setup() {
Serial.begin(115200);
mx.begin();
mx.clear();
randomSeed(analogRead(0));
}
void loop() {
if (millis() > cas) {
state = 1;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 24; j++) {
mx.setPoint(i, j, A[i][j]);
}
}
cas = millis() + interval;
}
if (state == 1) {
for (int i = 7; i > 0; i--) {
for (int j = 0; j < 24; j++) {
A[i][j] = A[i - 1][j];
}
}
for (int i = 0; i < 24; i++) {
int a = random(0, 101);
if (a > 70) {
A[0][i] = 1;
} else {
A[0][i] = 0;
}
}
state = 0;
}
}