Arduino MEGA che si blocca nella lettura di ingresso A0

CIao a tutti,
sono alle prese con lo sketch che si trova in rete per l'invio di dati su spreadsheet di Google.
Lasciando gli ingressi A0 e A1 floating per le prove dello sketch, è tutto perfettamente funzionante, oggi però ho notato che nel momento in cui vado a collegare all'ingresso A0 una tensione, ovviamente referenziata alla GND di Arduino, lo sletch si blocca proprio nella fase di lettura del valore analogico.
Una volta bloccato, è necessario resettare fisicamente Arduino.
In particolare ho collegato un LM35 per misure di temperatura, alimentato dai 5Vcc di Arduino. Se invece collego la sua uscita all'ingresso A1 (secondo ingresso che viene inviato allo spreadsheet di Goggle) di Arduino, lo sketch non si blocca mai.
Capisco che il blocco avviene in fase di lettura (o conversione AD) perchè ho messo una serie di stampe sul monitor seriale per fare una sorta di debug.
Ultima precisazione: utilizzando un altro sketch che legge l'LM35 dal pin A0 e lo manda sulla seriale (quindi senza interpellare l'ethernet shield che comunque resta connessa ad Arduino), nessun problema...
E' capitato anche a voi un problema del genere o avete suggerimenti?
E' strano anche perchè il pin A0 non dovrebbe essere utilizzato dall'Ethernet Shield.
Enzo

Posta il codice

Questo è il codice, personalizzato anche al fine di capire dove si blocca...il blocco si ha nella fase di "Inizio lettura..."

/* Arduino to Google Docs
created 2011

This example code is in the public domain.

Arduino data &ifq&entry.0.single=Boris&entry.2.single=Landoni&submit=Submit
Original from http://goodsite.cocolog-nifty.com/uessay/2010/07/arduinogoogle-d.html
Modified by John Missikos 11/6/11
Modified by Andrea Fainozzi 30/6/11
Modified by Boris Landoni 8/7/11

*/

#include <Ethernet.h>
#include <SPI.h>

char formkey[] = "dFVJMDBVYS02YjZwNFlPVXp4Q1dHMXc6MQ"; //Replace with your Key
byte mac[] = { 0x90,0xA2,0xDA,0x00,0x55,0x8D}; //Replace with your Ethernet shield MAC
byte ip[] = {192,168,14,62}; //The Arduino device IP address
byte subnet[] = {255,255,255,0};
byte gateway[] = {192,168,14,254};
IPAddress server(209,85,229,101); // Google IP
EthernetClient client;

void setup()
{
Serial.begin(9600);
if (Ethernet.begin(mac)==0) {
Serial.println("Failed to connect");
delay(1000);
Serial.println("connecting...");
}
}

void loop(){
String data;
data+="";
data+="entry.0.single=";
Serial.println("Inizio lettura...");
data+=analogRead(A0);
data+="&entry.1.single=";
data+=analogRead(A1);
data+="&submit=Submit";
Serial.println("Fine lettura");

if (client.connect(server, 80)) {
Serial.println("connected");

client.print("POST /formResponse?formkey=");
client.print(formkey);
client.println("&ifq HTTP/1.1");
client.println("Host: spreadsheets.google.com");
client.println("Content-Type: application/x-www-form-urlencoded");
client.println("Connection: close");
client.print("Content-Length: ");
client.println(data.length());
client.println();
client.print(data);
client.println();

Serial.print("POST /formResponse?formkey=");
Serial.print(formkey);
Serial.println("&ifq HTTP/1.1");
Serial.println("Host: spreadsheets.google.com");
Serial.println("Content-Type: application/x-www-form-urlencoded");
Serial.println("Connection: close");
Serial.print("Content-Length: ");
Serial.println(data.length());
Serial.println();
Serial.print(data);
Serial.println();

}
delay(1000);
if (client.connect(server, 80)==0) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
}
delay(5000);
data ="";
}

Ad occhio non vedo cose strane....
ma non è che hai sbagliato qualche collegamento per cui magari fai un corto sul pin A0?
quando fai il collegamento, i led della scheda si spengono?

se togli l'ethernet e provi solo lo sketch di lettura del pin A0, ricevi i dati sulla seriale?

leo72:
Ad occhio non vedo cose strane....
ma non è che hai sbagliato qualche collegamento per cui magari fai un corto sul pin A0?
quando fai il collegamento, i led della scheda si spengono?

se togli l'ethernet e provi solo lo sketch di lettura del pin A0, ricevi i dati sulla seriale?

Infatti neanche io vedo cose strane, non credo di aver sbagliato collegamento anche perchè è tutto scollegato, solo un LM35 su breadboard che manda la sua tensione al pin A0...
I led restano accesi, la scheda funziona fino a quel punto.
Stessa configurazione (quindi Ethernet Shield collegato) ma con un semplice sketch che mi legge il pin A0 e lo scrive sulla seriale, funziona perfettamente.
Bah, se non trovo la soluzione, ovviamente eviterò di usare tale pin :frowning:
Enzo

Ma si blocca subito oppure dopo qualche lettura?
E lo "stesso" identico circuito messo su A1 non blocca lo sketch?

Sicuro che A1 non venga usato per gestire la tua Eth shield ? :roll_eyes:

Rispondo ad entrambi:
effettua la prima lettura e poi si blocca, il pin A0 non viene usato dalla ethernet shield, sono altri i pin che vengono usati, almeno di default.

Se una lettura su A0 la effettua allora il problema sta nel codice.
Prova sostituendo il data+="" iniziale con data="" e togli quest'ultimo in fondo al loop, non vorrei che fosse un problema di memoria