Salve a tutti,
Sto incontrando alcune difficoltà nel capire queste righe di codice che ho estrapolato dagli esempi di gestione del display "Nokia 6600" e che adesso vorrei utilizzare per gestire un display a cristalli liquidi a due righe.
Tra i vari sketch che ho trovato in rete, ho sempre notato che le le tecniche di programmazione per "stampare" sul display le ore, minuti e secondi, erano parecchio diverse da questa e forse risultavano più leggibili e intuitive, fino a quando mi sono imbattuto in questo codice che reputo interessante, ma che forse per un profano, risulta essere molto meno intuitivo e di difficile interpretazione, almeno per quanto riguarda alcuni passaggi chiave.
Le prime perplessità nascono dalla dichiarazione delle variabili all'interno del "void", senza peraltro l'azzeramento delle stesse, seconda domanda come
fa il software a trasformare le "x" in zeri, terza e ultima domanda, a cosa serve lo "+=0x30", dopo il ciclo di for.
Per molti esperti saranno domande stupide, ma per adesso sto facendo fatica a venirne a capo.
Nel frattempo ho cercato di adattare il codice gestendo un display a due righe e il risultato è stato (00:00:00), inserendo in testa al programma un
"sec++" e un "delay(1000)" per scandire il tempo, dopodichè ho stampato il valore "timeChar" tramite la funzione "lcd.print(timeChar)" e impostato
tramite "lcd.setCursor(5,1)", la posizione sul display, ma il risultato finale è stato solo una indecifrata scansione di caratteri alfanumerici, negli utimi due zeri stampati sul display.
void displayDigitalTime(int h, int m, int s, int ap)
{
char timeChar[13] = {'x', 'x', 0x0A, 'x', 'x', 0x0A, 'x', 'x', ' ', ' '};
timeChar[0] = h/10;
timeChar[1] = h - (timeChar[0] * 10);
timeChar[3] = m/10;
timeChar[4] = m - (timeChar[3] * 10);
timeChar[6] = s/10;
timeChar[7] = s - (timeChar[6] * 10);
for (int i=0; i<8; i++)
timeChar[i] += 0x30;
Ciao