Sensore temperatura + sensore luminosità

Ciao a tutti :slight_smile:
Premetto che mi sono avvicinato al mondo di Arduino da poco quindi vi prego non uccidetemi :stuck_out_tongue:
Allora vi spiego il mio problema, ho realizzato un circuito che mi permette di rilevare la temperatura tramite un LM35 e semplicemente accendere 3 LED in base alla temperatura rilevata, e fin qui nessun problema, il problema è arrivato quando ho modificato lo sketch per aggiungere la rilevazione della luminosità tramite una fotoresistenza. Praticamente quando ho aggiunto il "pezzo" di programma per la luminosità la rilevazione della temperatura è completamente sballata, oscilla a random tra i 10°C e i 40°C, mentre la rilevazione della luminosità funziona perfettamente. So per certo che il problema risiede nello sketch ma non riesco a trovare l'errore!
Vi posto lo sketch:

float tempC;      
int LM35 = A0;      
int G_LED = 12;
int Y_LED = 9;
int R_LED= 11;
int Fotoresistore = A1;
int LDRValue;
int LUCE = 6;
void setup()
{
Serial.begin(9600); 
pinMode(G_LED, OUTPUT);
pinMode(Y_LED, OUTPUT);
pinMode(R_LED, OUTPUT);
pinMode(LUCE, OUTPUT);
pinMode(LM35, INPUT);
pinMode(Fotoresistore, INPUT);
}

void loop()
{
//TEMPERATURA
tempC = analogRead(LM35);           
tempC = (5.0 * tempC * 100.0)/1024.0;                                            
Serial.print(" Temperatura C = ");
Serial.println(tempC);
//LUMINOSITà
LDRValue = analogRead(Fotoresistore);            
Serial.print(" Luminosita = " );
Serial.println(LDRValue);
if(tempC>29) {
digitalWrite(G_LED, LOW);
digitalWrite(Y_LED, LOW);
digitalWrite(R_LED, HIGH);}
else if(tempC<23) {
digitalWrite(G_LED, HIGH);
digitalWrite(Y_LED, LOW);
digitalWrite(R_LED, LOW);}
else {
digitalWrite(G_LED, LOW);
digitalWrite(Y_LED, HIGH);
digitalWrite(R_LED, LOW);}
//LUMINOSITà
if(LDRValue<350){
digitalWrite(LUCE,HIGH);}
else{
digitalWrite(LUCE,LOW);}
  
delay(900);                          
}

Aiutatemi :~
Grazie!
Stefano

Ciao,
prima di tutto, essendo il tuo primo post, ti consiglio di presentarti QUI e di leggere il REGOLAMENTO ...

Poi, se fai un po' di ricerche nel forum, vedrai che se ne è parlato molte volte ...
... detto brevemente ... quando hai due analogRead(), su due o più ingressi differenti ... la prima lettura di ogni ingresso è da scartare. Ancora meglio è se, per ogni ingresso, tu facessi più letture e prendessi la media di esse :wink:

Guglielmo

Grazie della risposta!
Ho letto altri topic dove si presentava più o meno lo stesso problema ma non ho capito bene come risolvere, potresti essere più preciso?
Grazie mille!
Stefano

Mi è sembrato di essere abbastanza chiaro e di scrivere in Italiano ... "la prima lettura di ogni ingresso è da scartare." ...
... ovvero, ogni volta che cambi ingresso, devi fare una lettura a vuoto e buttare il valore poi fai la vera lettura ... tutto qui.

Se poi vuoi migliorare la precisione, oltre a questo, fai anche .. che so io ... 10 letture di fila sullo stesso ingresso e fai la media :slight_smile:

Ti è chiaro o hai ancora dubbi ... ???

Guglielmo

OK, tutto chiaro!
Grazie!
Stefano

Bene, allora poi facci sapere come va :slight_smile:

Guglielmo