#include <MD_MAX72xx.h>
#include <SPI.h>
#define delay_t 200 // in milliseconds
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
// Hardware SPI Arduino UNO
// CLK Pin > 13 SCK
// Data Pin > 11 MOSI
#define CS_PIN 8
// Hardware SPI connection
MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
// Letters for "VARSHA"
byte V[8] = {0x81, 0x81, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18};
byte A[8] = {0x18, 0x24, 0x42, 0x42, 0x7E, 0x42, 0x42, 0x42};
byte R[8] = {0x7C, 0x42, 0x42, 0x7C, 0x48, 0x44, 0x42, 0x41};
byte S[8] = {0x3E, 0x41, 0x40, 0x3E, 0x01, 0x41, 0x3E, 0x00};
byte H[8] = {0x42, 0x42, 0x42, 0x7E, 0x42, 0x42, 0x42, 0x42};
byte* letters[] = {V, A, R, S, H, A};
int numLetters = sizeof(letters) / sizeof(letters[0]);
void setup() {
mx.begin();
mx.control(MD_MAX72XX::INTENSITY, 0);
mx.clear();
}
void loop() {
scrollText();
}
void scrollText() {
for (int col = 0; col < numLetters * 8 + MAX_DEVICES * 8; col++) {
mx.clear();
for (int i = 0; i < numLetters; i++) {
for (int row = 0; row < 8; row++) {
int colPosition = col - i * 8;
if (colPosition >= 0 && colPosition < MAX_DEVICES * 8) {
mx.setRow(colPosition / 8, colPosition % 8, row, letters[i][row]);
}
}
}
delay(delay_t);
}
}