Arduino e sure3216 dot matrix dispaly color

salve ragazzi, come visto anche dai post precedenti sono un appassionato di questi display pilotati dal chil holtec 1632c

ho realizzato diversi orologi ma ora questo display mi sta facendo diventare matto

dall' allegato vedrete il codice ma il problema è questo:

il dislay visualizza perfettamente tutto quello che voglio

esempio:

      ht1632_putchar(27, 0, buffer[0], GREEN);
      ht1632_putchar(33, 0, buffer[1], GREEN);

e giustamente mi scrive il contenuto della variabile BUFFER

se scrivo:

 char STRING2[ ]="        ";
  sprintf(STRING2, "%02d:%02d", rtc[DS1307_HR], rtc[DS1307_MIN]);

cls ();  
ht1632_putchar(9, 0, STRING2[0], GREEN);
ht1632_putchar(15, 0, STRING2[1], GREEN);
ht1632_putchar(21, 0, STRING2[2], GREEN);
ht1632_putchar(27, 0, STRING2[3], GREEN);
ht1632_putchar(33, 0, STRING2[4], GREEN);

perfettamente funziona

oppure se scrivo

  ht1632_putchar(0 , 0, 'S', RED);
  ht1632_putchar(6 , 0, 'e', RED);
  ht1632_putchar(12 , 0, 't', RED);
  ht1632_putchar(18 , 0, ' ', RED);
  ht1632_putchar(24 , 0, 'H', RED);
  ht1632_putchar(30 , 0, 'o', RED); 
  ht1632_putchar(36 , 0, 'u', RED);
  ht1632_putchar(42 , 0, 'r', RED);
  ht1632_putchar(48 , 0, 's', RED);

funzioa perfettmanete.

Eppure quando dalla funzione entro nel menù per impostare data e ora, i caratteri diventano incompleti ovvero per esempio alla parola SET magari alcuni led NON SI ACCENDONO

Avevo anche provato a settare le funzioni di regolazione di data e ora in maniera indipendenti ( se vedrete il file allegato capirete che intendo con la funzione byte(set_hours)

ma dove è l'intoppo ?
vi giuro sono incredulo
guardate la foto per rendervene conto

grazie mille a chi mi aiuterà

Daniele

sure3216_ds3231_colorclock.zip (11.3 KB)

Dunque forse ho capito il problema spero qualcuno ci capisca come risolverlo

Se nel menù che apro ( menù con diverse voci )
il passaggio da una voce di menù alla successiva se avvine mantenedo lo stesso colore dà errore.

Mi spiego meglio

entro nel menù regolazione orologio

imposto l'ora e il menù in in rosso
se anche il menù successivo che imposta i minuti è di colore rosso allora si verificherà l'errore di testo

se invece i menù si invertono di colore ( esempio rosso e poi verde )
allora scrive correttamente.

Ora mi viene in mente che ci sia un problema di memoria dell'informazione in ram del display o qualcosa di simile. Esiste un metodo di resettarla ( non il cls() che già uso ?