Colaboradores > Zootecnia Domestica
Terrario exterior para Pogona, todo el año?
korneto:
Buenos dias Ramon
Vacaciones?? que vaaaa jajajaja llevo 2 meses en ERTE asi que es como unas minivacaciones.
TEMPNOW
Basicamente hemos declarado una variable vacia como TEMPNOW. Al pasar arduino por esa linea le dice que si la temperatura actual es diferente a TEMPNOW escriba en la pantalla y declare TEMPNOW con el valor de la temperatura actual, asi solo se escribe de nuevo si la temperatura actual cambia. Es un recurso muy util para un sin fin de cosas.
APERTURA
Fallo mio , jajajaja, si te fijas al principio declare la variable #define APERTURAS 30000 pero si vas al loop veras que algo falla.... if((now - tiempodelectura2) > APERTURA) { ... le falta la S esto lo hice para que el nombre APERTURA no coincida con el del loop, vamos seria añadirle la S al final.
TRUCO DE LOS ERRORES
Te voy a contar como hago yo cada vez que creo algo nuevo en el sketch, como ya te dije yo he ido aprendiendo a mi manera yo solo asi que el truco es cosecha propia.
Crear un nuevo void temporizado
En el loop
if((now - tiempodelectura3) > LOQUESEA) {
tiempodelectura3 = now;
Serial.print("FUNCIONA");
}
Subo el sketch y miro si en el monitor serie me pone FUNCIONA si es SI sigo si es NO repaso ese poquito de codigo
SIGUIENTE PASO
void LOQUESEA(){
Serial.print("FUNCIONA");
}
En el loop
if((now - tiempodelectura3) > LOQUESEA) {
tiempodelectura3 = now;
LOQUESEA();
}
Vuelvo a subir el codigo y vuelvo a mirar si sale FUNCIONA y asi es como iba poco a poco creando el nuevo codigo, tardas mas , pero es infalible. Actualmente tambien lo uso pero mucho menos, solo cuando no doy encontrado un error en alguna parte entonces lo comento todo y voy poco a poco en esa parte.
De todas maneras, faltaban tambien algunos ) en el sketch :nos:
--- Código: ---/////////////////////////////////////////////////////////////////////
// //
// CONTROLADOR BIZONAL INVERNADERO PARA REPTILES V.1 //
// //
// -Control clima general:Termostato 2 relé (alta/baja) //
// -Control hibernáculo(nido):Termostato 2 relé ( " ) //
// -Medición humedad relativa (HR) invernadero y nido //
// -Interruptor crepuscular alumbrado general (diurno) //
// -Control continuo rendimiento lámpara/tubo UVa/UVb //
// -Control horario/estacional de parámetros (Temps./luz) //
// -Apertura/cierre progresivo techo invernadero //
// -Sensor lluvia cierre total techo invernadero //
// -Sensor presencia en hibernáculo (eficiencia energética) //
// //
// RCG Zootecnia Doméstica 04/05/2020 V.1 //
// //
/////////////////////////////////////////////////////////////////////
//Glosario, terminaciones en:
// ...C: Relativas a Clima invernadero (general)
// ...N: " a clima Nido (hibernáculo)
// ..FC: " a Frío Clima general
// ..FN: " a Frío Nido
// ..CC: " a Calor Clima
// ..CN: " a Calor Nido
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ INCLUDES ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
#include <DHT.h> //librería DHT
#include <DHT_U.h> //librería DHT unificada
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ PINES ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
#define SENSORC 2 //sensor DHT22 CLIMA
#define SENSORN 9 //sensor DHT22 NIDO
#define SENSORLDR 0 //sensor LDR
#define LEDFC 4 //LED indicador frío CLIMA
#define LEDCC 3 //LED indicador calor CLIMA
#define LEDFN 11 //LED indicador frío NIDO
#define LEDCN 10 //LED indicador calor NIDO
#define LEDLDR 7 //LED indicador LDR iluminación Gral.
#define LEDABIER 5 //LED indicador puerta ABIERTA
#define LEDCERRA 6 //LED indicador puerta CERRADA
#define RELECC 22 //Relé alta calor CLIMA
#define RELEFC 24 //Relé baja frío CLIMA
#define RELELDR 26 //Relé LDR iluminación Gral.
#define RELECN 28 //Relé alta calor NIDO
#define RELEFN 30 //Relé baja frío NIDO
#define RELEABRIR 34 //Relé abrir puerta
#define RELECERRAR 36 //Relé cerrar puerta
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ VARIABLES ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
float TEMPERATURAC; //variable temperatura CLIMA
float TEMPERATURAN; //variable temperatura NIDO
int HUMEDADC; //variable humedad CLIMA
int HUMEDADN; //variable humedad NIDO
int TEMPNOW = 0;
DHT dht1(SENSORC, DHT22); //Asignación sensor CLIMA
DHT dht2(SENSORN, DHT22); //Asignación sensor NIDO
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ CONFIGURACION ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
uint64_t tiempodelectura = 0;
uint64_t tiempodelectura2 = 0;
int TempNID = 23; /// Temperatura que querremos en el Nido
int TempINV = 24; /// Temperatura que querremos en el Invernadero
#define SENSORES 30000 //
#define APERTURAS 30000 //
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ SENSORES ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
void LEER_SENSORES(){
//VARIABLES
TEMPERATURAC = dht1.readTemperature(); //asignación variable lectura Temp. DHTCLIMA
HUMEDADC = dht1.readHumidity(); //asignación variable lectura Humed. DHTCLIMA
TEMPERATURAN = dht2.readTemperature(); //asignación variable lectura Temp. DHTNIDO
HUMEDADN = dht2.readHumidity(); //asignación variable lectura Humed. DHTNIDO
Serial.print("CLIMA "); //imprimir Monitor serie. Sin valor
Serial.print("Tª:"); //imprimir Monitor serie. Con valor TªCLIMA
Serial.print(TEMPERATURAC, 1); //asignar a impresión variable TªCLIMA
Serial.print(" HR:"); //imprimir Monitor serie. Con valor Hum.CLIMA
Serial.println(HUMEDADC); //asignar a impresión variable Hum.CLIMA y ¿(ln)fin línea?
Serial.print("NIDO "); //imprimir Monitor serie. Sin valor
Serial.print("Tª:"); //imprimir Monitor serie. Con valor TªCLIMA
Serial.print(TEMPERATURAN, 1); //asignar a impresión variable TªCLIMA
Serial.print(" HR:"); //imprimir Monitor serie. Con valor Hum.CLIMA
Serial.println(HUMEDADN); //asignar a impresión variable Hum.CLIMA y ¿(ln)fin línea?
if(TEMPERATURAC != TEMPNOW){
lcd.setCursor(0, 0); //Posicionando cursor 1ª línea
lcd.print("CLIMA "); //Imprimir CLIMA
lcd.print("T:"); //Imprimir T:
lcd.print(TEMPERATURAC, 1); //asignar a impresión variable TªCLIMA
lcd.print(" HR:"); //imprimir HR:
lcd.print(HUMEDADC); //asignar a impresión variable Hum.CLIMA
lcd.setCursor(0, 1); //Posicionando cursor 2ª línea
lcd.print("NIDO "); //imprimir NIDO
lcd.print("T:"); //imprimir T:
lcd.print(TEMPERATURAN, 1); //asignar a impresión variable TªNIDO
lcd.print(" HR:"); //imprimir HR:
lcd.print(HUMEDADN); //asignar a impresión variable Hum.NIDO
TEMPNOW = TEMPERATURAC;
}
}
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ CREPUSCULO ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
void CREPUSCULO(){
//INTERRUPTOR CREPUSCULAR
if(analogRead(SENSORLDR) < 200){ //si... lectura sensor LDR inferior a...
digitalWrite(LEDLDR, HIGH); //...entonces LED LDR señal alta
digitalWrite(RELELDR, LOW); //...entonces relé LDR Ilum.Gral. señal baja
Serial.println("LUZ:On");
lcd.setCursor(0, 2);
lcd.print("LUZ:On");
lcd.print(" UVa:__");
lcd.print(" UVb:__");
}else{ //sino...
digitalWrite(LEDLDR, LOW); //...LED LDR señal baja
digitalWrite(RELELDR, HIGH); //relé LDR Ilum.Gral. señal alta
Serial.println("LUZ:Off");
lcd.setCursor(0, 2);
lcd.print("LUZ:Of");
lcd.print(" UVa:__");
lcd.print(" UVb:__");
}
}
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ TEMPERATURA ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
void TEMPERATURA(){
if((TEMPERATURAC - 1) < TempINV){
digitalWrite(LEDCC, HIGH);
digitalWrite(RELECC, LOW);
digitalWrite(LEDFC, LOW);
digitalWrite(RELEFC, HIGH);
}
if((TEMPERATURAC + 1) > TempINV){
digitalWrite(LEDFC, HIGH);
digitalWrite(RELEFC, LOW);
digitalWrite(LEDCC, LOW);
digitalWrite(RELECC, HIGH);
}
if((TEMPERATURAN - 1) < TempNID){
digitalWrite(LEDCN, HIGH);
digitalWrite(RELECN, LOW);
digitalWrite(LEDFN, LOW);
digitalWrite(RELEFN, HIGH);
}
if((TEMPERATURAN + 1) > TempNID){
digitalWrite(LEDFN, HIGH);
digitalWrite(RELEFN, LOW);
digitalWrite(LEDCN, LOW);
digitalWrite(RELECN, HIGH);
}
}
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ APERTURA AUTOMATICA ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
void APERTURA(){
if((TEMPERATURAC - 2) < TempINV){
digitalWrite(LEDCERRA, HIGH);
digitalWrite(RELECERRAR, LOW);
Serial.println("PUERTA CERRADA");
lcd.setCursor(0, 3);
lcd.print("PUERTA CERRADA");
}
if((TEMPERATURAC + 2) > TempINV){
digitalWrite(LEDABIER, HIGH);
digitalWrite(RELEABRIR, LOW);
Serial.println("PUERTA ABIERTA");
lcd.setCursor(0, 3);
lcd.print("PUERTA ABIERTA");
}
}
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ SETUP ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
void setup(){
lcd.setBacklightPin(3,POSITIVE); //
lcd.setBacklight(HIGH);
lcd.begin(20, 4);
lcd.clear();
Serial.begin(9600); //inicializando monitor serie
dht1.begin(); //inicializando sonda DHT1(CLIMA)
dht2.begin(); //inicializando sonda DHT2(NIDO)
digitalWrite(LEDCC, LOW); //LED calor CLIMA señal baja
digitalWrite(LEDFC, LOW); //LED frío CLIMA señal baja
digitalWrite(RELECC, HIGH); //relé calor CLIMA señal baja
digitalWrite(RELEFC, HIGH); //relé frío CLIMA señal baja
digitalWrite(RELELDR, HIGH); //relé LDR iluminación Gral.señal alta
digitalWrite(LEDCN, LOW); //LED calor NIDO señal baja
digitalWrite(LEDFN, LOW); //LED frío NIDO señal baja
digitalWrite(RELECN, HIGH); //relé calor NIDO señal baja
digitalWrite(RELEFN, HIGH); //relé frío NIDO señal baja
pinMode(LEDCC, OUTPUT); //pin LED calor CLIMA es una salida
pinMode(LEDFC, OUTPUT); //pin LED frío CLIMA es una salida
pinMode(LEDLDR, OUTPUT); //pin LED LDR Ilumin. Gral. es una salida
pinMode(RELECC, OUTPUT); //pin relé calor CLIMA es una salida
pinMode(RELEFC, OUTPUT); //pin relé frío CLIMA es una salida
pinMode(RELELDR, OUTPUT); //pin relé LDR Ilumin. Gral. es una salida
pinMode(LEDCN, OUTPUT); //pin LED calor NIDO es una salida
pinMode(LEDFN, OUTPUT); //pin LED frío NIDO es una salida
pinMode(RELECN, OUTPUT); //pin relé calor NIDO es una salida
pinMode(RELEFN, OUTPUT); //pin relé frío NIDO es una salida(OJO!pinA1!)
//NOTA: Entradas analógicas asignan por defect
}
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ LOOP ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
void loop(){
uint64_t now = millis(); /// declaramos la variable now con los millis actuales
if((now - tiempodelectura) > SENSORES) { /// si now menos la variable tiempo de lectura es mayor que los millis que le hemos declarado en sensores
tiempodelectura = now; /// cambiamos la variable tiempo de lectura por now que son los millis actuales
LEER_SENSORES(); /// ejecutamos la lectura de sensores
}
if((now - tiempodelectura2) > APERTURAS) { /// si now menos la variable tiempo de lectura es mayor que los millis que le hemos declarado en sensores
tiempodelectura2 = now; /// cambiamos la variable tiempo de lectura por now que son los millis actuales
APERTURA(); /// ejecutamos la lectura de sensores
}
CREPUSCULO();
TEMPERATURA();
}
--- Fin del código ---
Ahi esta corregido, aun asi creo que nos puede dar algun problema puesto que TEMPERATURAC es un float y le estamos restando un int, pero vamos a ver si suena la campana asi y sino lo cambiamos
Ramon:
Jooooder, esto me recuerda a mi infancia hace muuuchos años. Yo te propongo vacaciones y tu me respondes que de eso nada. Y encima me pones deberes!!! :ght:
Creo que con tu método paso a paso esta vez lo tendría que pillar, ya va siendo hora. Lo probaré hasta la saciedad a ver si así...
(Tengo una moscarda por aquí dando por saco, espera... ...se escapó.)
He cargado el programa y tachán! El problema persiste...
He cambiado tanto el LED como la resistencia y los dos jumpers por otros componentes nuevos. Nanai...
He sustituido las variables float por int. Compila sin problemas y cuando lo cargo como es natural, pierdo los decimales de las temperaturas en la LCD pero el problema sigue.
El problema:
1-Los relés correspondientes al actuador lineal RELEABRIR (pin 34) y RELECERRAR (pin 36) declarados ambos como.... mierda, espera!!!!
Relés ABRIR/CERRAR sin declarar como salida!
Relés ABRIR/CERRAR sin declarar como HIGH! (Lógica inversa china)
He o hemos debido traspapelar archivos previos y posteriores a la asignación de voidAPERTURA. Hago prueba... Los relés ya funcionan pero se superponen en las temperaturas próximas a TempINV. Bueno, a menos hemos vuelto al error inicial!
Vuelvo a cambiar float por int... y voy probando en TempINV diversos valores próximos a la lectura del DHT1:
TempINV= 24 / temperatura lectura DHT1= 23. Los dos relés encendidos a la vez pese a que tendrían que actuar uno a -2ºC y el otro a +2ºC respecto a TempINV!
2-Los leds encargados de avisar el estado puerta ABIERTA/CERRADA trabajan a baja tensión (Poca luz) y también están encendidos a la vez.
3-En la LCD imprime PUERTA ABIERTA aún correspondiendo CERRADA
Esto vuelve a oler a hardware ya sea por falta de amperaje (Lo cual no tiene sentido, el otro sketch antiguo lo encendía todo y podía) o alguna corriente parásita. Me estoy volviendo loco :tongo:
(Ahora sí, me acabo de cargar la moscarda... :ght:)
Aprovecho para ponerte el sketch con las correcciones de añadir los relés como salida y señal HIGH y el cambio de float por int:
--- Código: ---/////////////////////////////////////////////////////////////////////
// //
// CONTROLADOR BIZONAL INVERNADERO PARA REPTILES V.1 //
// //
// -Control clima general:Termostato 2 relé (alta/baja) //
// -Control hibernáculo(nido):Termostato 2 relé ( " ) //
// -Medición humedad relativa (HR) invernadero y nido //
// -Interruptor crepuscular alumbrado general (diurno) //
// -Control continuo rendimiento lámpara/tubo UVa/UVb //
// -Control horario/estacional de parámetros (Temps./luz) //
// -Apertura/cierre progresivo techo invernadero //
// -Sensor lluvia cierre total techo invernadero //
// -Sensor presencia en hibernáculo (eficiencia energética) //
// //
// RCG y Korneto para Zootecnia Doméstica 04/05/2020 V.1 //
// //
/////////////////////////////////////////////////////////////////////
//Glosario, terminaciones en:
// ...C: Relativas a Clima invernadero (general)
// ...N: " a clima Nido (hibernáculo)
// ..FC: " a Frío Clima general
// ..FN: " a Frío Nido
// ..CC: " a Calor Clima
// ..CN: " a Calor Nido
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ INCLUDES ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
#include <DHT.h> //librería DHT
#include <DHT_U.h> //librería DHT unificada
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ PINES ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
#define SENSORC 2 //sensor DHT22 CLIMA
#define SENSORN 9 //sensor DHT22 NIDO
#define SENSORLDR 0 //sensor LDR
#define LEDFC 4 //LED indicador frío CLIMA
#define LEDCC 3 //LED indicador calor CLIMA
#define LEDFN 11 //LED indicador frío NIDO
#define LEDCN 10 //LED indicador calor NIDO
#define LEDLDR 7 //LED indicador LDR iluminación Gral.
#define LEDABIER 5 //LED indicador puerta ABIERTA
#define LEDCERRA 6 //LED indicador puerta CERRADA
#define RELECC 22 //Relé alta calor CLIMA
#define RELEFC 24 //Relé baja frío CLIMA
#define RELELDR 26 //Relé LDR iluminación Gral.
#define RELECN 28 //Relé alta calor NIDO
#define RELEFN 30 //Relé baja frío NIDO
#define RELEABRIR 34 //Relé abrir puerta
#define RELECERRAR 36 //Relé cerrar puerta
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ VARIABLES ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
int TEMPERATURAC; //variable temperatura CLIMA
int TEMPERATURAN; //variable temperatura NIDO
int HUMEDADC; //variable humedad CLIMA
int HUMEDADN; //variable humedad NIDO
int TEMPNOW = 0;
DHT dht1(SENSORC, DHT22); //Asignación sensor CLIMA
DHT dht2(SENSORN, DHT22); //Asignación sensor NIDO
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ CONFIGURACION ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
uint64_t tiempodelectura = 0;
uint64_t tiempodelectura2 = 0;
int TempNID = 23; /// Temperatura que querremos en el Nido
int TempINV = 24; /// Temperatura que querremos en el Invernadero
#define SENSORES 30000 //
#define APERTURAS 30000 //
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ SENSORES ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
void LEER_SENSORES(){
//VARIABLES
TEMPERATURAC = dht1.readTemperature(); //asignación variable lectura Temp. DHTCLIMA
HUMEDADC = dht1.readHumidity(); //asignación variable lectura Humed. DHTCLIMA
TEMPERATURAN = dht2.readTemperature(); //asignación variable lectura Temp. DHTNIDO
HUMEDADN = dht2.readHumidity(); //asignación variable lectura Humed. DHTNIDO
Serial.print("CLIMA "); //imprimir Monitor serie. Sin valor
Serial.print("Tª:"); //imprimir Monitor serie. Con valor TªCLIMA
Serial.print(TEMPERATURAC, 1); //asignar a impresión variable TªCLIMA
Serial.print(" HR:"); //imprimir Monitor serie. Con valor Hum.CLIMA
Serial.println(HUMEDADC); //asignar a impresión variable Hum.CLIMA y ¿(ln)fin línea?
Serial.print("NIDO "); //imprimir Monitor serie. Sin valor
Serial.print("Tª:"); //imprimir Monitor serie. Con valor TªCLIMA
Serial.print(TEMPERATURAN, 1); //asignar a impresión variable TªCLIMA
Serial.print(" HR:"); //imprimir Monitor serie. Con valor Hum.CLIMA
Serial.println(HUMEDADN); //asignar a impresión variable Hum.CLIMA y ¿(ln)fin línea?
if(TEMPERATURAC != TEMPNOW){
lcd.setCursor(0, 0); //Posicionando cursor 1ª línea
lcd.print("CLIMA "); //Imprimir CLIMA
lcd.print("T:"); //Imprimir T:
lcd.print(TEMPERATURAC, 1); //asignar a impresión variable TªCLIMA
lcd.print(" HR:"); //imprimir HR:
lcd.print(HUMEDADC); //asignar a impresión variable Hum.CLIMA
lcd.setCursor(0, 1); //Posicionando cursor 2ª línea
lcd.print("NIDO "); //imprimir NIDO
lcd.print("T:"); //imprimir T:
lcd.print(TEMPERATURAN, 1); //asignar a impresión variable TªNIDO
lcd.print(" HR:"); //imprimir HR:
lcd.print(HUMEDADN); //asignar a impresión variable Hum.NIDO
TEMPNOW = TEMPERATURAC;
}
}
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ CREPUSCULO ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
void CREPUSCULO(){
//INTERRUPTOR CREPUSCULAR
if(analogRead(SENSORLDR) < 200){ //si... lectura sensor LDR inferior a...
digitalWrite(LEDLDR, HIGH); //...entonces LED LDR señal alta
digitalWrite(RELELDR, LOW); //...entonces relé LDR Ilum.Gral. señal baja
Serial.println("LUZ:On");
lcd.setCursor(0, 2);
lcd.print("LUZ:On");
lcd.print(" UVa:__");
lcd.print(" UVb:__");
}else{ //sino...
digitalWrite(LEDLDR, LOW); //...LED LDR señal baja
digitalWrite(RELELDR, HIGH); //relé LDR Ilum.Gral. señal alta
Serial.println("LUZ:Off");
lcd.setCursor(0, 2);
lcd.print("LUZ:Of");
lcd.print(" UVa:__");
lcd.print(" UVb:__");
}
}
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ TEMPERATURA ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
void TEMPERATURA(){
if((TEMPERATURAC - 1) < TempINV){
digitalWrite(LEDCC, HIGH);
digitalWrite(RELECC, LOW);
digitalWrite(LEDFC, LOW);
digitalWrite(RELEFC, HIGH);
}
if((TEMPERATURAC + 1) > TempINV){
digitalWrite(LEDFC, HIGH);
digitalWrite(RELEFC, LOW);
digitalWrite(LEDCC, LOW);
digitalWrite(RELECC, HIGH);
}
if((TEMPERATURAN - 1) < TempNID){
digitalWrite(LEDCN, HIGH);
digitalWrite(RELECN, LOW);
digitalWrite(LEDFN, LOW);
digitalWrite(RELEFN, HIGH);
}
if((TEMPERATURAN + 1) > TempNID){
digitalWrite(LEDFN, HIGH);
digitalWrite(RELEFN, LOW);
digitalWrite(LEDCN, LOW);
digitalWrite(RELECN, HIGH);
}
}
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ APERTURA AUTOMATICA ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
void APERTURA(){
if((TEMPERATURAC - 2) < TempINV){
digitalWrite(LEDCERRA, HIGH);
digitalWrite(RELECERRAR, LOW);
Serial.println("PUERTA CERRADA");
lcd.setCursor(0, 3);
lcd.print("PUERTA CERRADA");
}
if((TEMPERATURAC + 2) > TempINV){
digitalWrite(LEDABIER, HIGH);
digitalWrite(RELEABRIR, LOW);
Serial.println("PUERTA ABIERTA");
lcd.setCursor(0, 3);
lcd.print("PUERTA ABIERTA");
}
}
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ SETUP ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
void setup(){
lcd.setBacklightPin(3,POSITIVE); //
lcd.setBacklight(HIGH);
lcd.begin(20, 4);
lcd.clear();
Serial.begin(9600); //inicializando monitor serie
dht1.begin(); //inicializando sonda DHT1(CLIMA)
dht2.begin(); //inicializando sonda DHT2(NIDO)
digitalWrite(LEDCC, LOW); //LED calor CLIMA señal baja
digitalWrite(LEDFC, LOW); //LED frío CLIMA señal baja
digitalWrite(RELECC, HIGH); //relé calor CLIMA señal baja
digitalWrite(RELEFC, HIGH); //relé frío CLIMA señal baja
digitalWrite(RELELDR, HIGH); //relé LDR iluminación Gral.señal alta
digitalWrite(LEDCN, LOW); //LED calor NIDO señal baja
digitalWrite(LEDFN, LOW); //LED frío NIDO señal baja
digitalWrite(RELECN, HIGH); //relé calor NIDO señal baja
digitalWrite(RELEFN, HIGH); //relé frío NIDO señal baja
digitalWrite(RELEABRIR, HIGH);
digitalWrite(RELECERRAR, HIGH);
pinMode(LEDCC, OUTPUT); //pin LED calor CLIMA es una salida
pinMode(LEDFC, OUTPUT); //pin LED frío CLIMA es una salida
pinMode(LEDLDR, OUTPUT); //pin LED LDR Ilumin. Gral. es una salida
pinMode(RELECC, OUTPUT); //pin relé calor CLIMA es una salida
pinMode(RELEFC, OUTPUT); //pin relé frío CLIMA es una salida
pinMode(RELELDR, OUTPUT); //pin relé LDR Ilumin. Gral. es una salida
pinMode(LEDCN, OUTPUT); //pin LED calor NIDO es una salida
pinMode(LEDFN, OUTPUT); //pin LED frío NIDO es una salida
pinMode(RELECN, OUTPUT); //pin relé calor NIDO es una salida
pinMode(RELEFN, OUTPUT); //pin relé frío NIDO es una salida
pinMode(RELEABRIR, OUTPUT);
pinMode(RELECERRAR, OUTPUT);
//NOTA: Entradas analógicas asignan por defect
}
//╔══════════════════════════════════════════════╗
//║ ║
//║ ║
//║ LOOP ║
//║ ║
//║ ║
//╚══════════════════════════════════════════════╝
void loop(){
uint64_t now = millis(); /// declaramos la variable now con los millis actuales
if((now - tiempodelectura) > SENSORES) { /// si now menos la variable tiempo de lectura es mayor que los millis que le hemos declarado en sensores
tiempodelectura = now; /// cambiamos la variable tiempo de lectura por now que son los millis actuales
LEER_SENSORES(); /// ejecutamos la lectura de sensores
}
if((now - tiempodelectura2) > APERTURAS) { /// si now menos la variable tiempo de lectura es mayor que los millis que le hemos declarado en sensores
tiempodelectura2 = now; /// cambiamos la variable tiempo de lectura por now que son los millis actuales
APERTURA(); /// ejecutamos la lectura de sensores
}
CREPUSCULO();
TEMPERATURA();
}
--- Fin del código ---
Navegación
[*] Página Anterior
Ir a la versión completa