problema programma con arduino uno

Salve a tutti ho un arduino uno con il quale dovrei controllare una ventola da far partire a temperature superiori a 32 gradi centigradi,la temperatura deve essere visualizzata su un display 16x2.Sono riuscito a fare i collegamenti e a visualizzare la temperatura rilevata da un LM35 sul display usando il seguente programma:

#include <LiquidCrystal.h> //Libreria per pilotare il display LCD

#define pin_temp A0 //Pin di collegamento del piedino Vout del sensore di temperatura

double temp = 0; //Variabile in cui verrà memorizzata la temperatura rilevata
int i = 0; //Variabile contatore per il ciclo for

LiquidCrystal lcd(7, 6, 5, 4, 3, 2); //Inizializzazione della libreria con i pin del display LCD

void setup()
{
  lcd.begin(16, 2); //Impostazione del numero di colonne e righe del display LCD 
  lcd.setCursor(0,0); //Sposto il cursore sulla prima riga (riga 0) e sulla prima colonna
  lcd.print("Temperatura:"); //Stampo il messaggio 'Temperatura:' sulla prima riga
  analogReference(INTERNAL);
}

void loop()
{
  
  for(i=0; i<5; i++) //Esegue l'istruzione successiva 5 volte
    temp += (analogRead(pin_temp)  / 9.31); //Calcola la temperatura e la somma alla variabile 'temp'
  
  temp = temp/6; //Calcola la media matematica dei  valori di temperatura

  lcd.setCursor(0,1); //Sposto il cursore sulla prima colonna e sulla seconda riga
  lcd.print(temp); //Stampo sul display LCD la temperatura
  lcd.print(" C"); //Stampo uno spazio e il carattere 'C' sul display
  
  delay(1000); //Ritardo di un secondo (può essere modificato)
}  

per far partire la ventola però devo usare un altro programma che però non riesco ad unirlo all'altro,in che modo posso riuscire a far funzionare il tutto?
Aiutatemi per favore  =(

il secondo programma è il seguente:

float temperatura = 0; //variable per la temperatura
int fan = 8; //pin digitale connesso alla ventola
void setup(){

 Serial.begin (9600); //inizia la comunicazione seriale

 pinMode(8,OUTPUT);//configurazione del pin 8
}
 
void loop(){
//calcola la temperatura con riferimento 5v
temperatura = (3.0 * analogRead(0)*100.0)/1023.0;
Serial.println (temperatura); //scrivi la temperatura nel seriale
delay (300); //aspetta 3 secondi

//comandi per la ventola
if (temperatura < 30){//cambia il numero in funzione dei valori
  digitalWrite(8,HIGH);
  
}else
  digitalWrite(8,LOW);


}

Prima di tutto, essendo il tuo primo post, ti consiglio di presentarti QUI e di leggere con attenzione il REGOLAMENTO ...

... poi ... come da regolamento, punto 7., il codice DEVE essere racchiuso tra i tag CODE(... edita il tuo post), infine ... se fai delle ricerche qui sul forum troverai l'argomento già trattato, con schemi e codice !

Guglielmo

Ok grazie

Beh, prima di tutto mi piacerebbe capire perchè i due programmi leggono la temperatura e fanno un calcolo diverso:

...= (analogRead(pin_temp)  / 9.31); //Calcola la temperatura e la somma alla variabile 'temp'
... = (3.0 * analogRead(0)*100.0)/1023.0;

In quest'ultimo sarebbe il valore 3100/1023 => 300/1023 => valore * 0,29325

Secondariamente, sei sicuro del primo, in cui leggi 5 valori (0 a <5 quindi fino a 4 fai 0,1,2,3,4 cinque letture) e poi dividi per 6 ? :fearful:

Per il resto, in uno hai temp, nell'altro temperatura, dai un nome unico e già i due sketch si assomigliano di più.
Poi se leggi in uno con delay(300), che NON sono 3 secondi come hai nella nota, e nell'altro stampi su lcd ogni delay(1000) devi rendere uguale questo tempo. E i due sketch si assomiglieranno ancora di più.

... aggiungo a quanto domandato da Nid ... perché nella media del calcolo della temperatura tieni in considerazione l'ultima temperatura calcolata in precedenza e non riparti da zero con una serie di letture ???

Non è il tuo caso, ma se la temperatura variasse rapidamente quel vecchio valore ti falserebbe la media !

Guglielmo

Ma soprattutto la domanda qual'è?