Sensore temperatura

Allora ragazzi premetto che sono nuovo della programmazione, in un'altro topic mi sono fatto consigliare quale starter kit prendere e da un paio di giorni finalmente è arrivato, chiusa premessa; Stavo provando ad utilizzare il sensore di temperatura LM35DZ a 3 pin, e il pin centrale ad un pin analogico...perfetto fino a qui tutto normale.
Ho cominciato a documentarmi su come utilizzarlo, su come far uscire i gradi e l'operazione che andava fatta e qui il mio problema... :sweat_smile: vi lascio
Lo sketch che ho scritto io e non funziona

float tempC;      //dichiarazione di variabile per la temperatura 
int tempPin = A0;  //inizializzazione del pin di Arduino
float milliVolts=0;


void setup()
{
Serial.begin(9600); 
}

void loop()
{
  tempC = analogRead(tempPin);
  milliVolts = ( tempC/1023)*5000;
  delay(2);
}

Visto che non funzionava mi sono documentato su internet qualche sketch di prova già creato per poi confrontarlo con il mio

sketch preso da un blog

const int pin = A0; // analog pin
float celsius = 0; // temperature variables
float millivolts; 
int sensor;
const int G_LED = 9;
const int Y_LED = 10;
void setup(){
Serial.begin(9600); 
// LED
pinMode(G_LED, OUTPUT);
pinMode(Y_LED, OUTPUT);
}

void loop() {
  sensor = analogRead(pin); 
  millivolts = ( sensor/1023.0)*5000; //formula per ottenere la tensione di uscita dell'LM35 in millivolts
  celsius =millivolts/10; // valore espresso in gradi Celsius (l'out del sensore è 10mv per grado)
 // farhenheit=celsius*1.8+32; // valore espresso in gradi Farhenheit
  Serial.print("Valore pin Analogico: ");
  Serial.print(sensor); //stampa su serial monitor del valore restituito dal conv. A/D a 10 bit di Arduino(da 0 a 1024)
  Serial.print("Millivolts: ");
  Serial.print(millivolts); //stampa su serial monitor del valore di tensione in millivolts
  Serial.print("Gradi celsius: ");
  Serial.println(celsius); // stampa su serial monitor del valore di temperatura in gradi Celsius
  delay(500);
 }

E non funziona neanche questo...il monitor seriale mi restituisce

"Valore pin analogico" 1023 "Millivolts" 5000.00 "Gradi celsius:" 500.00

Neanche cambiando la temperatura, magari premendolo con le dita per farlo scaldare.
Vi prego a darmi una mano che ho bisogno di questo sensore per un piccolo progetto che ho in mente... :confused:

Ringrazio in anticipo chi ci si dedicherà ???

p.s Lo schema di collegamento non mi sono neanche sprecato a parlarne per la semplicità del collegamento, come ho fatto io: pin sinx ROSSO pin desx NERO pin centrale pin A0 arduino

Hai collegato giusto il LM35??
Ciao Uwe

uwefed:
Hai collegato giusto il LM35??
Ciao Uwe

Il collegamento dovrebbe essere come ho scritto no?

ArduM0pro:
Il collegamento dovrebbe essere come ho scritto no?

come ho fatto io: pin sinx ROSSO pin desx NERO pin centrale pin A0 arduino

Bhe diciamocelo, i collegamenti non si descrivono a parole, ci sono i disegni, e nei disegni spesso i componenti non vengono indicati se visti da sopra, visti da sotto, ruotato di 180° ... dx sx non significa nulla
Fa riferimento ad uno schema ... se hai invertito le polarità per errore potresti averlo danneggiato .... provato un altro componente nuovo?

float tempC;      //dichiarazione di variabile per la temperatura 
int tempPin = A0;  //inizializzazione del pin di Arduino
float milliVolts=0;


void setup()
{
Serial.begin(9600); 
}

void loop()
{
  tempC = analogRead(tempPin);
  milliVolts = ( (float)(tempC) * 5000.0) / 1024.0;
  delay(500);
}

prova così, se con va allora hai problemi hardware.

vbextreme:

float tempC;      //dichiarazione di variabile per la temperatura 

int tempPin = A0;  //inizializzazione del pin di Arduino
float milliVolts=0;

void setup()
{
Serial.begin(9600);
}

void loop()
{
  tempC = analogRead(tempPin);
  milliVolts = ( (float)(tempC) * 5000.0) / 1024.0;
  delay(500);
}



prova così, se con va allora hai problemi hardware.

Ok il tuo sketch funziona, poggiando il dito il valore letto e i millivolts cambiano.

pablos:
Bhe diciamocelo, i collegamenti non si descrivono a parole, ci sono i disegni, e nei disegni spesso i componenti non vengono indicati se visti da sopra, visti da sotto, ruotato di 180° ... dx sx non significa nulla
Fa riferimento ad uno schema ... se hai invertito le polarità per errore potresti averlo danneggiato .... provato un altro componente nuovo?

Hai ragione, ho fatto una bozza su Fritzing l'ho allegato sopra :slight_smile:

Ragazzi non so perchè o il motivo, forse ieri avevo sbagliato qualcosa nei collegamenti e non me ne ero accorto.
Ma oggi funziona tutto, riuscendo anche a printarlo sul display! Ringrazio comunque chi mi aiutato con dei codici :smiley: