Buonasera a tutti,
Vorrei chiedervi un consiglio su questo semplice termometro che utilizza un display TM1637 a 4 digit ed un sensore di temperatura LM35.
Tutto funziona bene, tranne la lettura sul pin A0 che spesso rileva un valore sbagliato, come se ci fosse del "rumore" in ingresso. Ho provato a mettere anche una resistenza di pull-down da 10K tra il pin di uscita del rilevatore LM35 (e quindi tra il pin A0 di arduino) e il negativo, ma non è servito a nulla.
la cosa buffa è che anche mettendo direttamente il pin A0 al polo negativo, ogni tanto viene rilevato uno "spike" spurio.
Allego lo sketch completo, anche nel caso qualcuno voglia cimentarsi con questo simpatico display che richiede solo due PIN per funzionare (DIO e CLK).
#include "TM1637.h"
//{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
//0~9,A,b,C,d,E,F,"-"," ",degree,r,h
#define CLK 9 //Pins for TM1637
#define DIO 8
TM1637 tm1637(CLK,DIO);
void setup()
{
tm1637.init();
tm1637.set(2);
//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
//Serial.begin(9600);
analogReference(INTERNAL);
}
void loop ()
{
int aRead = 0;
float ref = 1.1;
aRead = analogRead(A0);
// Serial.print("Analog = ");
// Serial.print(aRead);
int tempC = aRead * ref/1023*100;
float volt = aRead * ref/1023;
// Serial.print(" V = ");
// Serial.print(volt);
// Serial.print(" - Temp = ");
// Serial.println(tempC);
//delay(1000);
tm1637.display(0,tempC/10);
tm1637.display(1,tempC%10);
tm1637.display(2,17);
tm1637.display(3,12);
delay(1000);
}
Grazie e buona serata