Buongiorno a tutti, sono Claudio e sto cominciano a cimentarmi con Arduino e la programmazione C++.
Il mio progetto consiste nella lettura di un valore da un potenziometro e la visucalizzazione di un valore su una matricie di Led governata dalla Libreria MD_Parole.
Il codice funziona ma le parole che vengono visualizzate non fanno lo scrolling e non capisco perché.
Mi potete aiutare?
Il codice é molto corto:
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
MD_Parola P = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
int winkel = 0;
int messwert = 0;
int prevMesswert = 0;
const int PotiPin = A0;
const int FromLow = 790;
const int FromHigh = 520;
const int ToLow = 0;
const int ToHigh = 90;
const int Totzone = 10;
unsigned long startTime = 0;
const int delayThreshold = 5000;
bool wordDisplayed = false;
void scrollMessage(const char* message) {
P.displayClear();
P.displayText(message, PA_CENTER, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
while (P.displayAnimate()) {
delay(50);
}
P.displayClear();
}
void setup(void) {
pinMode(PotiPin, INPUT);
Serial.begin(9600);
P.begin();
}
void loop(void) {
messwert = analogRead(PotiPin);
if (prevMesswert + Totzone <= messwert || prevMesswert - Totzone >= messwert) {
winkel = map(messwert, FromLow, FromHigh, ToLow, ToHigh);
prevMesswert = messwert;
startTime = millis();
wordDisplayed = false;
}
Serial.print("messung = ");
Serial.println(messwert);
Serial.print("winkel = ");
Serial.println(winkel);
P.print(" " + String(winkel));
if (!wordDisplayed && millis() - startTime >= delayThreshold) {
P.displayClear();
// Randomly select a word based on the pot value range
const char* selectedWord;
if (winkel < 30) {
selectedWord = "MORE!"; // Example: Different message for low range
} else if (winkel < 60) {
selectedWord = "WOW!"; // Example: Different message for medium range
} else {
selectedWord = "TOUGH!"; // Example: Different message for high range
}
if (selectedWord[0] != '\0') { // Check if the selected word is not empty
scrollMessage(selectedWord);
wordDisplayed = true;
P.print(String(winkel) + " ");
delay(200);
}
}
}
Grazie