#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
// Uncomment according to your hardware type
// #define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define HARDWARE_TYPE MD_MAX72XX::GENERIC_HW
// Defining size, and output pins
#define MAX_DEVICES 4
#define CLK_PIN 4 // or SCK
#define DATA_PIN 6 // or MOSI
#define CS_PIN 7 // or SS
//=========================================================================================================
// Simple Text with alignement and invert
MD_Parola P01 = MD_Parola(MD_MAX72XX::PAROLA_HW, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
void setup_test01() {
P01.begin();
P01.setIntensity(0);
P01.displayClear();
}
void loop_test01() {
P01.setTextAlignment(PA_LEFT);
P01.print("ESP32");
delay(2000);
P01.setTextAlignment(PA_CENTER);
P01.print("ESP32");
delay(2000);
P01.setTextAlignment(PA_RIGHT);
P01.print("ESP32");
delay(2000);
P01.setTextAlignment(PA_CENTER);
P01.setInvert(true);
P01.print("ESP32");
delay(2000);
P01.setInvert(false);
delay(2000);
}
//=========================================================================================================
// Different Font with animated text
#include "Parola_Fonts_data.h"
MD_Parola P02 = MD_Parola(MD_MAX72XX::PAROLA_HW, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
#define PAUSE_TIME 3000
// Turn on debug statements to the serial output
#define DEBUG 0
#if DEBUG
#define PRINT(s, x) { Serial.print(F(s)); Serial.print(x); }
#define PRINTS(x) Serial.print(F(x))
#define PRINTX(s, x) { Serial.print(F(s)); Serial.print(x, HEX); }
#else
#define PRINT(s, x)
#define PRINTS(x)
#define PRINTX(s, x)
#endif
// Global variables
typedef struct
{
char name[10];
MD_MAX72XX::fontType_t *pFont;
textEffect_t effect;
const char * pMsg;
} message_t;
const message_t M[] =
{
{ "Roman", nullptr, PA_SCROLL_LEFT, "Arduino" },
{ "Japanese", fontKatakana, PA_SCROLL_LEFT, "\x0b1\x0b0\x0c2\x0b2\x0c9" },
{ "Arabic", fontArabic, PA_SCROLL_RIGHT, "\x0a9\x0a7\x0ab\x0a9\x090\x0a5\x088" }, // ا ر د و ي ن و
{ "Greek", fontGreek, PA_SCROLL_LEFT, "\x080\x0a8\x09b\x0b2\x0a0\x0a4\x0a6" }
};
uint8_t curM = 0; // current message definition to use
void setup_test02(void)
{
Serial.begin(57600);
PRINTS("\n[Parola Demo]");
P02.begin();
P02.setFont(M[curM].pFont);
P02.displayText(M[curM].pMsg, PA_CENTER, P02.getSpeed(), PAUSE_TIME, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
}
void loop_test02(void)
{
if (P02.displayAnimate())
{
curM = (curM + 1) % ARRAY_SIZE(M);
PRINT("\nChanging font to ", M[curM].name);
PRINTS(", msg data ");
for (uint8_t i = 0; i<strlen(M[curM].pMsg); i++)
{
PRINTX(" 0x", (uint8_t)M[curM].pMsg[i]);
}
P02.setFont(M[curM].pFont);
P02.setTextBuffer(M[curM].pMsg);
P02.setTextEffect(M[curM].effect, M[curM].effect);
P02.displayReset();
}
}
//=========================================================================================================
// Animated Text Up/Down
MD_Parola P03 = MD_Parola(MD_MAX72XX::PAROLA_HW, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
void setup_test03(void)
{
P03.begin();
}
void loop_test03(void)
{
if (P03.displayAnimate())
P03.displayText("Hello", PA_CENTER, P03.getSpeed(), P03.getPause(), PA_SCROLL_DOWN, PA_SCROLL_UP);
}
//=========================================================================================================
void setup()
{
// setup_test01();
// setup_test02();
// setup_test03();
// setup_clock();
setup_sprite_simple();
}
void loop()
{
// loop_test01();
// loop_test02();
// loop_test03();
// loop_clock();
loop_sprite_simple();
}