Voglio fare scorrere questa scritta " sab 8 dic 2012 00:03:09" sul display grafico displaytech 64128N e sto usando questa libreria
http://code.google.com/p/u8glib/ che non è dotata di funzioni per traslare una porzione di buffer grafico. Allora ho pensato di fare in modo tradizionale (vedi codice). Il risultato è più o meno quello che segue:
sab 8 dic 2012 00:03
sab 8 dic 2012 00:03:
ab 8 dic 2012 00:03:0
b 8 dic 2012 00:03:09
8 dic 2012 00:03:09
8 dic 2012 00:03:09 s
dic 2012 00:03:09 sa
La cosa funziona ma, come dire girano gli occhi osservando la striscia che scorre a circa 1 secondo a carattere, sembra che il display non sia sufficientemente veloce. Ora mi chiedo è colpa del display lento o della lib che usa un protocollo software ISP, voi avete provato a fare scorrere una scritta? con quale codice? da qualche parte c'è un video? sarebbe più veloce se scrivessi codice che opera sul frame buffer?
Codice:
void scroll_string(const char * s, char *dest_s)
{
static uint8_t i = 0; // viene incrementato ad ogni chiamata
uint8_t end_idx = i;
uint8_t idx = 0;
while (idx < 22) { // copia in dest_s[] 21 caratteri presi da s[]
dest_s[idx] = s[end_idx];
idx++;
end_idx++;
if (end_idx > 23 ) // dopo il 23 esimo carattere si riparte da 0
end_idx = 0;
}
dest_s[21] = '\0'; // aggiungo il fine riga
i++; // se i supera il limite si riparte da 0
if (i > 23)
i = 0;
}
Chiamata:
char date_time[22];
scroll_string(" sab 8 dic 2012 00:03:09", date_time);
Ovviamente " sab 8 dic 2012 00:03:09" non sarà una costante in quanto varia con il tempo in base all'RTC che al momento non ho.
Ciao.