#include <MD_MAX72xx.h>
#include "fonts.h"
const int baris = 2;
const int kolom = 15;
#define MAX_DEVICES (baris * kolom)
const int maxX = kolom * 8;
const int maxY = 8;
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
MD_MAX72XX mx = MD_MAX72XX(MD_MAX72XX::PAROLA_HW, CS_PIN, MAX_DEVICES);
void tampilkanTeks(MD_MAX72XX &mx, const char *teks) {
int16_t offsetX = 0;
int16_t lastOffsetX;
bool tampil=true;
uint8_t lastKar = strlen(teks);
uint16_t repI = 0;
while (tampil){
const char *ptr = teks;
lastOffsetX = offsetX;
int16_t currentOffsetX;
mx.clear();
for (int karI = 0; karI < lastKar; karI++) {
uint8_t size;
const LED *pola = getHuruf(ptr[karI], size);
currentOffsetX = lastOffsetX;
if (pola) {
int16_t posisiKol;
for (uint8_t i = 0; i < size; i++) {
int16_t x = pola[i].x;
int16_t y = pola[i].y;
int16_t posisiKol = lastOffsetX + x;
currentOffsetX = posisiKol;
if (posisiKol >= 0 && posisiKol < maxX) {
if (y < 8)
mx.setPoint(y, posisiKol, true);
else
mx.setPoint(y - 8, posisiKol + maxX, true);
if (i == (size - 1) && karI == (lastKar - 1) && (offsetX >= maxX-1)) {
tampil=false;
delay(3000);
}
}
}
}
lastOffsetX = currentOffsetX-2;
}
offsetX++;
repI++;
mx.update();
delay(50);
}
}
void setup() {
Serial.begin(9600);
mx.begin();
mx.control(MD_MAX72XX::INTENSITY, MAX_INTENSITY / 2);
mx.clear();
}
void loop() {
tampilkanTeks(mx, "HRE BOARD");
delay(50);
}