Arduino TFT LCD screen + ethernet shield: un paio di problemi

Ciao a tutti.
Sto facendo alcune prove con Arduino UNO, Ethernet Shield e TFT LCD (http://arduino.cc/en/Main/GTFT).
Ho un paio di problemi/domande a cui non riesco a dare seguito:

  1. Ho visto che, per passare valori all'LCD, occorre usare un array di tipo char. Quindi ad esempio la lettura di un sensore in formato string la passo all'array con la dicitura:
 sensorVal.toCharArray(sensorPrintout, 4);

Facendo un po di prove invece con letture float (con la virgola) ho risolto così:

String sensorVal = dtostrf(sensore,4,1,sensorPrintout);

Ora mi trovo a dover passare al LCD l'indirizzo IP della ethernet shield, che dovrebbe essere in formato 4 byte, giusto?
Ho provato in vari modi, ad esempio:

 String ipAddress = Ethernet.localIP();
ipAddress.toCharArray(sensorPrintout,10);

ma mi dice "conversion from 'IPAddress' to non-scalar type 'String' requested"

oppure

String ipAddress = String(Ethernet.localIP());
 ipAddress.toCharArray(array_to_lcd,10);

il quale mi compila tutto giusto ma mi restituisce un numero lungo senza punti..

oppure con altri metodi ma non riesco.
dove sbaglio?

  1. seguendo questo tutorial http://arduino.cc/en/Tutorial/TFTBitmapLogo per importare un file .bmp e visualizzarlo sull' LCD mi vengono restituiti alcuni errori:
  • se inserisco l'SD card nel LCD mi dice che non la riconosce; se la inserisco invece nell'ethernet shield mi da OK
  • al passo successivo, cercando il file arduino.bmp (presente il root), mi dice che non lo trova, credo perché si aspetta il file nell'alloggiamento dell' LCD non in quello della ethernet shield! (infatti usa il metodo TFTscreen.loadImage("logo.bmp"))

Come posso fare?
Grazie per eventuali aiuti.
Ciao.

davide80:
2) seguendo questo tutorial http://arduino.cc/en/Tutorial/TFTBitmapLogo per importare un file .bmp e visualizzarlo sull' LCD mi vengono restituiti alcuni errori:

ho risolto questo problema, trattasi di collegamenti errati e del cambio del pin SD_CS in funzione della ethernet shield
ho seguito questo schema: http://arduino.cc/en/Guide/TFTtoBoards

per il primo problema invece?
grazie

Il compilatore ti dice che non sà come tradurre in String quello che ritorna la localIP() perchè quest'ultima non ritorna una stringa o un numero ma addirittura un altro oggetto di classe IPAddress
La classe IPAddress sembra che abbia la possibilità di accedere ai 4 valori con le quadre. Internamente la classe "nasconde" i 4 numeri dell'indirizzo IP come 4 numeri senza segno a 8 bit

Qui in inglese come fare:

char buf[20];
sprintf(buf,"%d:%d:%d:%d", Ethernet.localIP()[0],Ethernet.localIP()[1],Ethernet.localIP()[2],Ethernet.localIP()[3]);

Dovrebbe accettarlo

Con snprintf() passi come secondo parametro la dimensione del buf e sei sicuro di non fare casini.
Quei %d se li metti come %03d ti daranno i numeri fillati con 0 es. 56=>056

Hai ragione, ha funzionato al primo colpo!
Grazie.