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://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 ![]()