Lettura LM35 ok su Arduino ma su Arduino Ethernet Shield no...

Ciao a tutti…non riesco a capire una cosa…
ho un sensore LM35 collegato su A0 che con questo codice funziona perfettamente:

const int pin = 0; // analog pin
float celsius = 0, farhenheit =0; // temperature variables
float millivolts; //dichiarazione di variabile tensione (float è per i numeri con la virgola)
int sensor; 


void setup(){
  Serial.begin(9600); //opens serial port, sets data rate to 9600 bps
  }


void loop(){
  lettura();
  }


void lettura(){

    float somma=0.0;
    float media=0.0;
    int i=0;
  
for(i=0;i<8;i++)
  {
  sensor = analogRead(pin);
  millivolts = ( sensor/1024.0)*5000;
  celsius =millivolts/10;
  somma=somma + celsius;
  delay(200); //ritardo tra due campionature successive
}
  media= (somma/8.0); //calcolo del valore medio di 8 rilievi
  somma=0; // riazzeramento della variabile somma
  Serial.print(media);Serial.println(" C"); //stampa su serial monitor del valore di temperatura in gradi Celsius  delay(1000);                           //wait one second before sending new data
  
}

mentre invece se interpongo l’ethernet shield mi da una lettura non reale e che non cambia con la temperatura ambientale… come mai? i pin dell’ethernet shield non sono “passanti”?

lo sketch con l'ethernet?

Uhm.. ho lasciato lo stesso codice..ci ho solo applicato sopra l'ethernet.. è sbagliato? i pin non sono "passanti"?

Ho variato la porta di lettura del sensore su A5 e ora funziona...se può essere d'aiuto ho letto da qualche parte che mettendo l'ethernet shield la porta A0 viene utilizzata per il lettore di SD per quello che non mi funzionava...

smartgatto: se può essere d'aiuto ho letto da qualche parte che mettendo l'ethernet shield la porta A0 viene utilizzata per il lettore di SD per quello che non mi funzionava...

Non penso che dire "ho letto da qualche parte" possa essere di aiuto. Anch'io ho letto tante cose sulle piastrelle dei bagni degli autogrill ma non ne ho fatto bagaglio di informazioni utili :) La spiegazione è un'altra, prendi 2 led e accendili su 2 pin a scelta e vedrai che anche A5 sballerà i suoi valori, a meno che non ci fornisci un link indiscutibile di quello che "hai scoperto"..... Oppure possiamo parlare di tempi di aggiornamento che trascorrono tra pin A0 e pin A5, oppure di tensioni di campionamento interne/esterno del circuito ADC

I pin utilizzati dall' Ethernet Shield per comunicare con il micro appartengono al bus SPI .... pin 12 (MISO) , 11 (MOSI), 13 (SCK), 10 (SS) e il pin 4 che serve, in alternativa al 10 (SS), per selezionare il W5100 o la SD.

Vi è un abbassamento della tensione dei 5V in caso di utilizzo del W5100 causato da un assorbimento di circa 180mA che influisce sulla lettura dei pin analogici.

Puoi verificare da solo quanto detto: i riferimenti ufficiali li trovi qui https://www.arduino.cc/en/Main/ArduinoEthernetShield

verifica attentamente lo schema qui https://www.arduino.cc/en/uploads/Main/arduino-ethernet-shield-06-schematic.pdf Troverai che non c'è nessuna connessione elettrica verso i pin A0 A1 e altri da parte dello shield

Uffa come siete pignoli :-)

Questa è la pagina di questo stesso forum che ho trovato, tramite google... è di un utente e nel dubbio ho fatto la prova ed effettivamente con me ha funzionato, quindi pensavo fosse quello il problema..poi invece ho anche letto in altri forum di utenti con il mio stesso problema e alla fine pare essere qualche Ethernet Shield difettoso...

qui il link che avevo trovato: https://forum.arduino.cc/index.php?topic=20114.0

grazie!

ok, ma quel link e' del 2010....

infatti i pin A0 e A1 erano usati dalla SD ( ma solo se c'era una scheda inserita ) nei primi modelli di Ethernet Shield. Non e' preistoria, ma quasi.

Se poi controlli sulla tua Shield vedrai che non ci sono piste collegate su quei due pin

Mi spiace contraddirti ma nella mia ethernet shield il pin A0 ha proprio una pista sotto:

arduino ethernet shield 01

Also Known As: V1.0, V1, 01, “Old Version 2009″, V4.0 Date: 2009 Schematic: arduino-ethernet-shield-01-schematic.pdf Reference design: arduino-ethernet-shield-reference-design.zip Compatibility: Arduino Duemilanove form factor. Incompatible with the MEGA without hardware modification. This shield uses analogue pins A0 and A1 for SD card detection and write protection capabilities.

in effetti la versione del 2009 (che è l'unica) utilizza A0 e A1, poi nelle altre versioni è stato eliminato il "card detection" e il "write protection" http://smallshire.org.uk/sufficientlysmall/2012/01/01/an-atlas-of-arduino-ethernet-shields/

Però @smart... non è compito nostro comprare la sfera magica per capire che cosa hai in mano .... ci mettiamo la buona volontà e un po' del nostro tempo [gratuito] per aiutare ............... diciamo che ci hai fatto perdere tempo per una tua mancanza. La pignoleria qui non centra, è solo rispetto per chi è qui a disposizione

ciao

Senti Pablos... ma prendersi un po meno sul serio no, eh? :-) È ovvio che la mia frase sull'essere pignoli era una battuta.. e poi, francamente, dire che ti ho fatto perder tempo.. boh.. sono anni che frequento forum di tutti i generi e non mi pare di aver fatto chissà quale grosso errore nel dimenticare la versione e l'anno della mia board tale da averti fatto perdere tempo prezioso per rispondermi (questo forum non è un call center, uno chiede.. se la risposta si sa bene altrimenti non è un obbligo rispondere, no?). Voglio dire... avrei potuto semplicemente rispondere " ho trovato la soluzione cambiando pin" e basta ma non mi pareva giusto..

Cmq in ogni caso grazie mille!