#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
// Konfiguracja sprzętowa
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES 11
#define CS_PIN 10
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
// Parametry przewijania
uint8_t scrollSpeed = 25;
textEffect_t scrollEffect = PA_SCROLL_LEFT;
textPosition_t scrollAlign = PA_LEFT;
uint16_t scrollPause = 2000;
#define BUF_SIZE 200
char curMessage[BUF_SIZE] = { "" };
// --- Polskie znaki i glify ---
#define K_ą 0xA0
#define K_ć 0xA1
#define K_ę 0xA2
#define K_ł 0xA3
#define K_ń 0xA4
#define K_ó 0xA5
#define K_ś 0xA6
#define K_ż 0xA7
#define K_ź 0xA8
#define K_Ą 0xA9
#define K_Ć 0xAA
#define K_Ę 0xAB
#define K_Ł 0xAC
#define K_Ń 0xAD
#define K_Ó 0xAE
#define K_Ś 0xAF
#define K_Ż 0xB0
#define K_Ź 0xB1
// Przykładowe glify (uproszczone)
const uint8_t gl_ą[] PROGMEM = {6,0x20,0x54,0x54,0x54,0x78,0x04};
const uint8_t gl_ć[] PROGMEM = {6,0x38,0x44,0x44,0x44,0x20,0x06};
const uint8_t gl_ę[] PROGMEM = {6,0x38,0x54,0x54,0x54,0x18,0x04};
const uint8_t gl_ł[] PROGMEM = {5,0x00,0x41,0x7F,0x40,0x20};
const uint8_t gl_ń[] PROGMEM = {6,0x7C,0x04,0x04,0x7C,0x70,0x06};
const uint8_t gl_ó[] PROGMEM = {6,0x38,0x44,0x44,0x44,0x38,0x06};
const uint8_t gl_ś[] PROGMEM = {6,0x48,0x54,0x54,0x54,0x24,0x06};
const uint8_t gl_ż[] PROGMEM = {6,0x44,0x64,0x54,0x4C,0x44,0x02};
const uint8_t gl_ź[] PROGMEM = {6,0x44,0x64,0x54,0x4C,0x44,0x06};
const uint8_t gl_Ą[] PROGMEM = {6,0x7C,0x12,0x11,0x12,0x7C,0x04};
const uint8_t gl_Ć[] PROGMEM = {6,0x7C,0x12,0x11,0x11,0x08,0x06};
const uint8_t gl_Ę[] PROGMEM = {6,0x7C,0x12,0x11,0x12,0x7C,0x04};
const uint8_t gl_Ł[] PROGMEM = {5,0x00,0x41,0x7F,0x49,0x30};
const uint8_t gl_Ń[] PROGMEM = {6,0x7E,0x09,0x09,0x7E,0x60,0x06};
const uint8_t gl_Ó[] PROGMEM = {6,0x7E,0x09,0x09,0x09,0x7E,0x06};
const uint8_t gl_Ś[] PROGMEM = {6,0x7F,0x40,0x40,0x7F,0x40,0x06};
const uint8_t gl_Ż[] PROGMEM = {6,0x7F,0x40,0x40,0x7F,0x40,0x02};
const uint8_t gl_Ź[] PROGMEM = {6,0x7F,0x40,0x40,0x7F,0x40,0x06};
void addPolishChars() {
P.addChar(K_ą, gl_ą); P.addChar(K_ć, gl_ć); P.addChar(K_ę, gl_ę);
P.addChar(K_ł, gl_ł); P.addChar(K_ń, gl_ń); P.addChar(K_ó, gl_ó);
P.addChar(K_ś, gl_ś); P.addChar(K_ż, gl_ż); P.addChar(K_ź, gl_ź);
P.addChar(K_Ą, gl_Ą); P.addChar(K_Ć, gl_Ć); P.addChar(K_Ę, gl_Ę);
P.addChar(K_Ł, gl_Ł); P.addChar(K_Ń, gl_Ń); P.addChar(K_Ó, gl_Ó);
P.addChar(K_Ś, gl_Ś); P.addChar(K_Ż, gl_Ż); P.addChar(K_Ź, gl_Ź);
}
// **Tu wpisujesz od razu swój tekst, w "ASCII-owych" kodach polskich znaków**
char new_message[BUF_SIZE] = {
K_Ą,' ',K_ą,' ',K_Ć,' ',K_ć,' ',K_Ę,' ',K_ę,' ',
K_Ł,' ',K_ł,' ',K_Ń,' ',K_ń,' ',K_Ó,' ',K_ó,' ',
K_Ś,' ',K_ś,' ',K_Ż,' ',K_ż,' ',K_Ź,' ',K_ź,'\0'
};
void setup() {
Serial.begin(57600);
Serial.println("Parola Display z polskimi znakami");
P.begin();
addPolishChars();
strncpy(curMessage, new_message, BUF_SIZE-1);
curMessage[BUF_SIZE-1]='\0';
P.displayText(curMessage, PA_LEFT, scrollSpeed, scrollPause, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
}
void loop() {
if(P.displayAnimate()){
P.displayReset();
}
}