[Arduino UNO R4 WiFi] — Impossibile visualizzare l’ora su matrice LED integrata (scrolling o statica)

Ciao a tutti,

mi sono avvicinato da poco ad Arduino, e
sto cercando di realizzare un piccolo orologio su Arduino UNO R4 WiFi, visualizzando l’ora (formato HH:MM) sulla matrice LED integrata.
L’obiettivo finale è far scorrere l’orario da destra a sinistra o, in alternativa, mostrarlo staticamente e aggiornarlo ogni minuto.

Purtroppo, dopo vari tentativi, non sono riuscito a ottenere alcuna visualizzazione corretta dell’orario, nonostante la matrice funzioni perfettamente con gli esempi ufficiali (“Play Animation”, “Scroll Text”, ecc.). La connessione WiFi funziona e il modulo NTP restituisce l’ora corretta sul monitor seriale.

Setup attuale

  • Scheda: Arduino UNO R4 WiFi

  • IDE: Arduino IDE 2.3.6

  • Librerie installate:

    • Arduino_LED_Matrix

    • ArduinoGraphics

    • WiFiS3

    • WiFiUdp

    • NTPClient

Cosa NON funziona

  1. Tutti i tentativi di scrivere testo dinamico (come l’orario) sulla matrice, sia con beginText() / endText(), sia con funzioni di disegno manuale, non producono risultati.
  • Alcune versioni del codice mostrano LED accesi in modo casuale.
  • Altre riempiono completamente la matrice.
  • Nessuna mostra testo leggibile o scrolling dell’orario.
  1. Molte funzioni comuni nelle librerie grafiche (es. drawPixel(), show(), drawChar()) non sono presenti nella classe ArduinoLEDMatrix.
    L’unico metodo funzionante per aggiornare la matrice sembra essere loadFrame(uint32_t[]), che però carica un frame statico da 12x8 bit, non pixel o testo dinamico.
  2. Tentativi di disegnare l’orario convertendo manualmente ogni cifra in bitmap (via uint32_t frame[8]) non mostrano nulla, oppure accendono LED errati.
  • Qualcuno è riuscito a visualizzare testo aggiornato dinamicamente (es. l’ora, un contatore o messaggi che cambiano) sulla matrice integrata della UNO R4 WiFi?
  • Esiste un modo documentato per aggiornare il contenuto di beginText() senza reimpostare la matrice ogni volta?
  • Qualcuno ha trovato un modo per costruire e visualizzare bitmap personalizzate o caratteri usando loadFrame() in modo efficiente?

Grazie per l’attenzione.

https://docs.arduino.cc/tutorials/uno-r4-wifi/led-matrix/

Sezione "Scrolling Text Example"
Se guardi il codice nel setup (fregatene della loop)

  matrix.begin();
  matrix.beginDraw();
  matrix.stroke(0xFFFFFFFF);
  // add some static text
  // will only show "UNO" (not enough space on the display)
  const char text[] = "UNO r4";
  matrix.textFont(Font_4x6);
  matrix.beginText(0, 1, 0xFFFFFF);
  matrix.println(text);
  matrix.endText();
  matrix.endDraw();

Scrive un testo fisso. Se questo ti funziona (e non saprei perchè non dovrebbe) allora invece di stampare testo statico devi solo creare la stringa con dentro l'ora
invece di const char text[] = "UNO r4";
metti char text[] = "00:00";

Poi dovrai "stampare" dentro a text ore e minuti.
Che funzione usi per avere l'ora ?