lo_sty
1
Come posso visualizzare un array int su lcd 16x2 ?
Lo schemo usa il modulo I2C con libreria LiquidCrystal_I2C.h
in pratica ho ho un array int di 4 valori 10,11,12,13 e vorrei visualizzarli in formato hex su lcd .
int a [3] = {10,11,12,13};
lcd.print (a[0].HEX);
In questo modo il valore A viene visualizzato ma inserendo le altre variabili il compilatore mi da errore .
Qual'è il modo giusto di inserire i dati ?
Hai commesso un paio di errori:
- la dichiarazione di dimensione dell'array è 4 e non 3;
- nel print devi usare la virgola e non il punto.
int a[4] = {10, 11, 12, 13};
lcd.println (a[0], HEX);
lcd.println (a[1], HEX);
lcd.println (a[2], HEX);
lcd.println (a[3], HEX);
lo_sty
3
Grazie della risposta . Mi ero accorto del " . " , dovevo coreggere il post ma mi sono dimenticato
.
Avevo usato già la tua soluzione , ma credevo ci fosse un modo per inserire tutte e 4 le variabili in un solo comando
int a[4] = {10, 11, 12, 13};
for (byte i = 0; i < 4; i ++) {
lcd.println (a[i], HEX);
}
mi intrometto xkè interessa l'argomento: e se si volesse racchiudere tutto in una variabile? e poi stampare la variabile su LCD? Grazie!
lo_sty
6
Io ho risolto con sprintf
char buffer [10] ;
lcd.setCursor ( 3 , 0 ) ;
sprintf ( buffer , "%02d/%02d/%d" , now.day () , now.month () , now.year () ) ;
lcd.print(buffer);
lcd.setCursor ( 4 , 1 ) ;
sprintf ( buffer , "%02d:%02d:%02d" , now.hour () , now.minute () , now.second () ) ;
lcd.print ( buffer);
visualizzazione data ed ora di un RTC ds1307
byte arr[4] = {10, 11, 12, 13}; // display 0x0A,0xB,0x0C,0xD 20 caratteri + 1 fine stringa
char buf[25];
byte lun=0;
...
for (byte idx = 0; idx < 4; idx++)
{ lun=lun+sprintf(buf+lun,"%02X,",buf[idx]); // snprint ritorna quanti caratteri ha scritto dentro a lun
}
Serial.println(buf);