#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
const int sensorPin = A0;
const int sensorMin = 0;
const int sensorMax = 1023;
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES 8
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
uint8_t scrollSpeed = 50; // default frame delay value
textEffect_t scrollEffect = PA_SCROLL_LEFT;
textPosition_t scrollAlign = PA_LEFT;
uint16_t scrollPause = 1500; // in milliseconds
char curMessage[100] = "IOT Course";
void setup() {
Serial.begin(9600);
P.begin();
P.displayText(curMessage, scrollAlign, scrollSpeed, scrollPause, scrollEffect, scrollEffect);
}
void loop() {
int sensorReading = analogRead(sensorPin);
int range = map(sensorReading, sensorMin, sensorMax, 0, 3);
switch (range) {
case 0:
changeMessage("LOW");
break;
case 1:
changeMessage("MEDIUM");
break;
case 2:
changeMessage("UPPER");
break;
case 3:
changeMessage("HIGH");
break;
}
if (P.displayAnimate()) {
readSerial();
}
}
void changeMessage(const char* newMsg) {
if (strcmp(curMessage, newMsg) != 0) {
strcpy(curMessage, newMsg);
P.displayText(curMessage, scrollAlign, scrollSpeed, scrollPause, scrollEffect, scrollEffect);
}
}
void readSerial() {
static char newMessage[100];
static char *cp = newMessage;
while (Serial.available()) {
*cp = (char)Serial.read();
if ((*cp == '\n') || (cp - newMessage >= sizeof(newMessage) - 2)) {
*cp = '\0';
cp = newMessage;
changeMessage(newMessage);
} else {
cp++;
}
}
}