Hola¡¡ Hace poco me compré el sensor de temperatura para arduino DS18B20, tambien me compre un relé compatible, lo que quiero hacer es muy sencillo y buscando codigo por internet he conseguido que funcionen por separado pero quiero que funcionen juntos y eso es lo que me está costando. Os comento:
Quiero que mi rele se abra cuando la temperatura sea mayor que 25ºC y que se cierre cuando sea menor que 25ºC.
Los codigos que he conseguido son los siguientes. Para el sensor de temperatura:
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire ourWire(2); //Se establece el pin 2 como bus OneWire
DallasTemperature sensors(&ourWire); //Se declara una variable u objeto para nuestro sensor
void setup() {
delay(1000);
Serial.begin(9600);
sensors.begin(); //Se inicia el sensor
}
void loop() {
sensors.requestTemperatures(); //Se envía el comando para leer la temperatura
float temp = sensors.getTempCByIndex(0); //Se obtiene la temperatura en ºC
Serial.print("Temperatura= ");
Serial.print(temp);
Serial.println(" C");
delay(100);
}
Para el relé:
const int pinRELE = 7;
void setup() {
pinMode(pinRELE, OUTPUT);
}
void loop() {
digitalWrite(pinRELE, HIGH);
delay(5000);
digitalWrite(pinRELE, LOW);
delay(5000);
}
Hola, no es tu primer post ya en el foro de Arduino, y no has usado las etiquetas correspondientes para publicar el código, te recomiendo que lo hagas, ahora para tu problema solo tienes que utilizar la condición
if(condicion)
{
//Acciones si las condicion es verdadero
}
else
{
//Acciones si las condicion es falso
}
entonces implementado esto en tu código seria de la siguiente forma
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire ourWire(2); // Se establece el pin 2 como bus OneWire
DallasTemperature sensors(&ourWire); // Se declara una variable u objeto para nuestro sensor
const int pinRELE = 7;
void setup()
{
Serial.begin(9600);
pinMode(pinRELE, OUTPUT);
sensors.begin(); // Se inicia el sensor
}
void loop()
{
static unsigned long tiempoAnteriorDatos = 0;
sensors.requestTemperatures(); // Se envía el comando para leer la temperatura
float temp = sensors.getTempCByIndex(0); // Se obtiene la temperatura en ºC
if (millis() - tiempoAnteriorDatos >= 1000)
{
tiempoAnteriorDatos = millis();
Serial.print("Temperatura= ");
Serial.print(temp);
Serial.println(" C");
}
// Comprueba el valor de la temperatura
if (temp > 25)
{
digitalWrite(pinRELE, HIGH);
}
else
{
digitalWrite(pinRELE, LOW);
}
}
Ahora si tu modulo tiene logica inversa tienes que cambiar en la parte de
muchas gracias y perdon por las etiquetas, he solucionado lo de los reles, ahora quiero que haga una cosa mas, quiero que cuando la T>25ºC espere 30 minutos y luego se encienda y cuando la T>25ºC espere 30 minutos y se apage, como puedo poner esa funcion?