[ RISOLTO ] Visualizzare array su lcd

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);

Grazie della risposta . Mi ero accorto del " . " , dovevo coreggere il post ma mi sono dimenticato :slight_smile: .

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!

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);