Sensore di temperatura con e porta seriale

Ciao a tutti ho fatto un semplice programmino con Arduino due che attiva la lettura del sensore TMP36 sul pin A2 quando sulla seriale un programma esterno in python invia il carattere 'A' (in pratica ho collegato raspberry ad arduino utilizzando i pin rx, tx e gnd per implementare una comunicazione seriale tra di loro, sul raspi, python invia un carattere 'A').

void loop()
{

  //analogRead(A3);

  if (Serial.available()){  
  
    char c = Serial.read();  
    
    if (c == 'A'){
    
      //Legge il valore dalla porta analogica
      val = analogRead(A2);
      
      // converte il valore letto in tensione
      float voltage = (val * 3.289)/4096;
    
      //converte la tensione in temperatura
      float celsius = (voltage - 0.5) * 100 ; 
    
      // Trasmette sulla seriale il valore in gradi
      Serial.println(celsius,2);  
      
    }  
    
  }    
    
}

Tutto funziona correttamente se scommento la prima chiamata alla analogRead (che tra l'altro lavora su un altro pin e non memorizza il valore letto in nessuna variabile) Se invece lo commento come a rigore di logica dovrebbe essere, le letture sono sballate, come se ci fosse del rumore sul pin. Sinceramente non mi spiego cosa stia accadendo, qualcuno ha qualche suggerimento ? Grazie.

Cazziatone: un codice incompleto è comprensibile solo da un esperto di Magia Divinatoria.

Come si fa a capire come hai inizializzato Arduino? Manca il resto del codice!

Accetto il caziatone, se questo ti aiuta a darmi suggerimenti, ecco qua:

// Numero del pin analogico sul quale è collegato TMP36
const int termoPin = A2;


void setup() 
{
  //imposta la risoluzione a 12 bit
  analogReadResolution(12);
  Serial.begin(9600); 
  
  while (!Serial) ;  
  
}

Inizializializzazione tipica....

Nella "tipica" inizializzazione, manca la "tipica" dichiarazione della direzione del Pin! XD

Forse sono OT: io con gli analogici non lo faccio quasi mai e funzionano sempre :relaxed: Comunque sempre meglio inserire :)

Avevo già provato ma il risultato è lo stesso, poi l'ho tolta perché nel tutoria da cui ho preso spunto non c'era.

AnalogRead(A3); non fa nulla.

E' una lettura che rimane buttata lì, non assegnata ad alcuna variabile o porta o nulla.

Per il resto sarebbe da vedere come hai attuato i collegamenti.

L'impedenza di un Analog è abbastanza alta da captare rumore con fili che vanno al sensore più lungi di una decina di cm.

Che sensore è? Quanto distante è? Come l'hai cablato? Filo schermato? Filo twistato? Come?

L'inizializzazione è bene che la metti, altrimenti può essere una condizione indefinita in cui sono collegati al pin, sia l'ingresso che l'uscita del PORT interno.

Qualcuno sembra aver postato una risposta abbastanza sensata qui:

http://forum.arduino.cc//index.php?topic=192577.0

Prova leggendo più volte l'ingresso analogico: http://forum.arduino.cc//index.php?topic=173137.msg1286791#msg1286791