// MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START *
// a detailed explanation how these macros work is given in this tutorial
// https://forum.arduino.cc/t/comfortable-serial-debug-output-short-to-write-fixed-text-name-and-content-of-any-variable-code-example/888298
#define dbg(myFixedText, variableName) \
Serial.print( F(#myFixedText " " #variableName"=") ); \
Serial.println(variableName);
#define dbgi(myFixedText, variableName,timeInterval) \
{ \
static unsigned long intervalStartTime; \
if ( millis() - intervalStartTime >= timeInterval ){ \
intervalStartTime = millis(); \
Serial.print( F(#myFixedText " " #variableName"=") ); \
Serial.println(variableName); \
} \
}
#define dbgc(myFixedText, variableName) \
{ \
static long lastState; \
if ( lastState != variableName ){ \
Serial.print( F(#myFixedText " " #variableName" changed from ") ); \
Serial.print(lastState); \
Serial.print( F(" to ") ); \
Serial.println(variableName); \
lastState = variableName; \
} \
}
#define dbgcf(myFixedText, variableName) \
{ \
static float lastState; \
if ( lastState != variableName ){ \
Serial.print( F(#myFixedText " " #variableName" changed from ") ); \
Serial.print(lastState); \
Serial.print( F(" to ") ); \
Serial.println(variableName); \
lastState = variableName; \
} \
}
// MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END *
#include <MD_Parola.h>
#include <SPI.h>
//=====MAX7219================================
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES 8
#define CLK_PIN 19
#define DATA_PIN 18
#define CS_PIN 5
MD_Parola matrixDisplay = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
char textToDisplay[50] = {"orders are 63\0"};
char message[][32] = {"Andy is IN\0", "Andy is OUT\0"};
byte msg;
const int SPEED = 40;
int buttonPin = 2;
boolean animateResult;
long myTestCnt = 0;
void setup() {
Serial.begin(115200);
Serial.println("Setup-Start");
matrixDisplay.begin();
matrixDisplay.setIntensity(0);
matrixDisplay.displayClear();
pinMode(buttonPin, INPUT_PULLUP);
matrixDisplay.displayText(textToDisplay, PA_CENTER, 1, 10000, PA_SLICE, PA_SLICE);
}
void loop() {
dbgc("ToL", digitalRead(buttonPin) );
//originalDemo();
//modifiedDemo();
testNewFunc();
}
void testNewFunc() {
myTestCnt++;
dbgi("modDemo",myTestCnt,1000);
animateResult = matrixDisplay.displayAnimate();
dbgc("T2", animateResult);
if (animateResult) {
Serial.println("animateResult == true");
matrixDisplay.displayReset();
}
}
void modifiedDemo() {
myTestCnt++;
dbgi("modDemo",myTestCnt,1000);
animateResult = matrixDisplay.displayAnimate();
if (animateResult) {
Serial.println("animateResult == true");
matrixDisplay.displayScroll(textToDisplay, PA_CENTER, PA_SCROLL_LEFT, SPEED);
matrixDisplay.displayReset();
}
else {
dbgi("md", animateResult, 1000);
}
}
void originalDemo() {
if (!digitalRead(buttonPin)) { // read the button
delay(150); // debounce
msg = !msg; // msg between 0 and 1 to choose array element 0 or 1
}
// MD_Parola
if (matrixDisplay.displayAnimate()) {
matrixDisplay.displayScroll(message[msg], PA_CENTER, PA_SCROLL_LEFT, SPEED);
matrixDisplay.displayReset();
}
}