Ventola 12v regolata da temperatura

Allora, cercando un po' su internet ho trovato delle guide per fare ciò che serve a lei e le condivido qui sperando che non sia un problema:

https://create.arduino.cc/projecthub/TheGadgetBoy/ds18b20-digital-temperature-sensor-and-arduino-9cc806?f=1

https://forum.arduino.cc/index.php?topic=397752.0

Nel primo le mostra il collegamento, le librerie che deve scaricare e inserire nell'IDE prima di caricare lo sketch e lo sketch per leggere la temperatura;
Nel secondo le dice come fare ad accendere una ventola collegata ad un relay e che codice implementare nella guida del primo link.

Ora io facendo un copia e incolla un po' di qua e un po' di là, e qualche modifica di adattamento al suo scopo ho provato a ricreare uno sketch SPERIAMO FUNZIONANTE che le lascio qui sotto... se non dovesse andare o ho sbagliato qualcosa potranno correggermi gli altri che saranno sicuramente più bravi di me:

/********************************************************************/
// First we include the libraries
#include <OneWire.h> 
#include <DallasTemperature.h>
/********************************************************************/
// Data wire is plugged into pin 2 on the Arduino 
#define ONE_WIRE_BUS 2 
/********************************************************************/
// Setup a oneWire instance to communicate with any OneWire devices  
// (not just Maxim/Dallas temperature ICs) 
OneWire oneWire(ONE_WIRE_BUS); 
/********************************************************************/
// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);
/********************************************************************/ 
//Il risultato della temperatura calcolata dalla sonda lo chiamiamo "temperatura" così da utilizzarlo dopo per il relay
int temperatura = sensors.getTempCByIndex(0);
//Pin al quale dovrai collegare il relay (in questo caso il "3")
const int VENTOLE = 3;

void setup(void) 
{ 
 // start serial port 
 Serial.begin(9600); 
 Serial.println("Dallas Temperature IC Control Library Demo"); 
 // Start up the library 
 sensors.begin(); 
} 
void loop(void) 
{ 
 // call sensors.requestTemperatures() to issue a global temperature 
 // request to all devices on the bus 
/********************************************************************/
 Serial.print("Leggo Temperatura..."); 
 sensors.requestTemperatures(); // Send the command to get temperature readings 
 Serial.println("FINE"); 
/********************************************************************/
 Serial.print("Temperatura: "); 
 Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"?  
   // You can have more than one DS18B20 on the same bus.  
   // 0 refers to the first IC on the wire
   // Leggere le stringhe di sopra IMPORTANTISSIME per il funzionamento della sonda... se si cambia il numero 0 assicurarsi di averlo fatto anche alla stringa:17
   
 //FUNZIONAMENTO VENTOLA
 if (temperatura >= 20)

 {
 digitalWrite (VENTOLE, HIGH);
 } else {
 digitalWrite (VENTOLE, LOW);
 }
 //1 Secondo = 1000 per cui 500 = mezzo secondo di aggiornamento. Da modificare in base alle proprie esigenze
   delay(500); 
}

Ho preferito rimandarla ai link originali in quanto non ne sono l'autore e non mi voglio prendere alcun merito, l'unica cosa che ho fatto io e adattare i codici degli autori dei link di sopra per ciò che serve a lei.

Ci facci sapere se è tutto ok o ci sono problemi...

se dovesse andare tutto bene ma la sonda dà una temperatura pari a -175° in questo link c'è la soluzione a questo problema:
http://forum.arduino.cc/index.php?topic=158995.0

Google aiuta a risolvere i problemi ahah :grinning: