- #include <MD_Parola.h>
- #include <MD_MAX72xx.h>
- #include <SPI.h>
- #include "Font_Data.h"
- #define DEBUG 0
- #define HARDWARE_TYPE MD_MAX72XX::FC16_HW
- #define MAX_ZONES 2
- #define ZONE_SIZE 8
- #define MAX_DEVICES (MAX_ZONES * ZONE_SIZE)
- #define SCROLL_SPEED 30
- #define ZONE_UPPER 1
- #define ZONE_LOWER 0
- #define CLK_PIN 13
- #define DATA_PIN 11
- #define CS_PIN 10
- // HARDWARE SPI
- MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
- // SOFTWARE SPI
- //MD_Parola P = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
- // Hardware adaptation parameters for scrolling
- bool invertUpperZone = false;
- #define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
- char *msg[] =
- {
- "HellO",
- };
- void setup(void)
- {
- invertUpperZone = (HARDWARE_TYPE == MD_MAX72XX::GENERIC_HW || HARDWARE_TYPE == MD_MAX72XX::PAROLA_HW);
- #if DEBUG
- Serial.begin(57600);
- Serial.println("[Double Height demo start]");
- #endif
- P.begin(MAX_ZONES);
- P.setZone(ZONE_LOWER, 0, ZONE_SIZE - 1);
- P.setFont(ZONE_LOWER, BigFontLower);
- P.setZone(ZONE_UPPER, ZONE_SIZE, MAX_DEVICES-1);
- P.setFont(ZONE_UPPER, BigFontUpper);
- P.setCharSpacing(P.getCharSpacing() * 2);
- if (invertUpperZone)
- {
- P.setZoneEffect(ZONE_UPPER, true, PA_FLIP_UD);
- P.setZoneEffect(ZONE_UPPER, true, PA_FLIP_LR);
- }
- }
- void loop(void)
- {
- static uint8_t cycle = 0;
- P.displayAnimate();
- if (P.getZoneStatus(ZONE_LOWER) && P.getZoneStatus(ZONE_UPPER))
- {
- #if DEBUG
- Serial.println(cycle);
- #endif
- switch (cycle)
- {
- default:
- P.setFont(ZONE_LOWER, BigFontLower);
- P.setFont(ZONE_UPPER, BigFontUpper);
- if (invertUpperZone)
- {
- P.displayZoneText(ZONE_LOWER, msg[cycle], PA_LEFT, SCROLL_SPEED, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
- P.displayZoneText(ZONE_UPPER, msg[cycle], PA_LEFT, SCROLL_SPEED, 0, PA_SCROLL_RIGHT, PA_SCROLL_RIGHT);
- }
- else
- {
- P.displayZoneText(ZONE_LOWER, msg[cycle], PA_RIGHT, SCROLL_SPEED, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
- P.displayZoneText(ZONE_UPPER, msg[cycle], PA_LEFT, SCROLL_SPEED, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
- }
- break;
- }
- cycle = (cycle + 1) % ARRAY_SIZE(msg);
- P.displayClear();
- P.synchZoneStart();
- }
- }