Ayuda con programación de alarma

Jmd

14 Abr 2018
5
C.A.B.A.
Provincia
Bs. As.
Ola a todos, podrán brindarme ayuda con el programa del controlador del acuario.
Agregue 3 alarmas de temperatura y no me compila me tira un error en (varios) que compilaba bien.
Ademas no puedo ver en el LCD la información del caudalimetro.
Agradeceré si alguien con mas experiencia en programación me da una mano , ya que yo me aventure a hacer algo en lo que no tengo ninguna experiencia.
Soy bueno con mis manos tengo un acuario plantado todo realizado con mis manos, pero nulo en programación




#include <Wire.h> // Libreria de comunicacion I2C
#include <OneWire.h> // Libreria de sensores de temperatura
#include <LiquidCrystal.h> // Libreria de LCD
#include <DallasTemperature.h> // Libreria de sensores de temperatura
//#include <Wire.h>
//#define DS1307_I2C_ADDRESS 0x68
#define DS3231_I2C_ADDRESS 0x68
LiquidCrystal lcd(40, 41, 42, 43, 44, 45); // MIS CONECCIONES PEPE
#define ONE_WIRE_BUS 31 //temperatura, pin de entrada
OneWire oneWire(ONE_WIRE_BUS); //temperatura
DallasTemperature sensores(&oneWire);
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; int sensor = 2; //Pin digital para el sensor de flujo YF-S201 ( CAUDALIMETRO )
int PinAlarma =32;
int PinVentilador =33; //Ventiladores para pecera temperatura prende en 26 y apaga en 25
int PinVarios =37; //lus otra pecera
int PinCalentador =35; //por TERMOSTATO prende en 23 y apaga en 24
int PinCooler =39; //cooler temperatura led prende en 23 y apaga en 24
int PinFuente =38; //fuente 12v
int EstadoAlarma=0;
int EstadoVentil=0;
int EstadoCalent=0;
int EstadoCooler=0;
int Retraso=5000;
int PinRele=34; //RELE N°1 de CO2"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
int Tiempo_A=0; //RELE N°1 de CO2"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
//////////
//VARIOS//
//////////
byte decToBcd(byte val) // Convierte números normales decimales a BCD (binario decimal codificado)
{
return ( (val/10*16) + (val%10) );
}
byte bcdToDec(byte val) // Convierte BCD (binario decimal codificado) a números normales decimales
{
return ( (val/16*10) + (val%16) );
}
// Parar el DS3231, pero esto tiene el efecto secundario de segundos que se ponen a 0
// probablemente solo quiera usar esto para pruebas.
/*
void stopDs3231()
{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.send(0);
Wire.send(0x80);
Wire.endTransmission();
}
*/
// 1) Sets the date and time on the ds3231
// 2) Starts the clock
// 3) Sets hour mode to 24 hour clock
// Assumes you're passing in valid numbers
void setDateDs3231(byte second, // 0-59
byte minute, // 0-59
byte hour, // 1-23
byte dayOfWeek, // 1-7
byte dayOfMonth, // 1-28/29/30/31
byte month, // 1-12
byte year) // 0-99
{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0);
Wire.write(decToBcd(second)); // 0 a bit 7 inicia el reloj
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour)); // Si usted quiere 12 hora am/pm usted tiene que poner el
// bit 6 (tambien tiene que cambiar readDateDs3231)
Wire.write(decToBcd(dayOfWeek));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.endTransmission();
}
// Establece la fecha y el tiempo del DS3231
void getDateDs3231(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
// Resetea el registro puntero
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
// Alguno de estos necesitan enmascarar porque ciertos bits son bits de control
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f); //¿Necesita cambiar esto si 12 horas am / pm
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}
//CAUDALIMETRO

int litros_Hora; // Variable que almacena el caudal (L/hora)
volatile int pulsos = 0; // Variable que almacena el número de pulsos
unsigned long tiempoAnterior = 0; // Variable para calcular el tiempo transcurrido
unsigned long pulsos_Acumulados = 0; // Variable que almacena el número de pulsos acumulados
// Rutina de servicio de la interrupción (ISR)
void flujo()
{
pulsos++; // Incrementa en una unidad el número de pulsos
}
//CAUDALIMETRO
void setup()
{
pinMode(PinAlarma, OUTPUT);
pinMode(PinVentilador, OUTPUT); // OUTPUT DECLARAN PIN COMO SALIDA
pinMode(PinVarios, OUTPUT); // otra pecera
pinMode(PinFuente, OUTPUT);
pinMode(PinCalentador, OUTPUT);
pinMode(PinCooler, OUTPUT);
pinMode(PinRele, OUTPUT); //RELE N°1 de CO2"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
///pines pwm//
pinMode(5, OUTPUT);//AZULES// // OUTPUT DECLARAN PIN COMO SALIDA
pinMode(6, OUTPUT);//SOL//
pinMode(7, OUTPUT);//blancas//
pinMode(8, OUTPUT);//Verdes//
pinMode(9, OUTPUT);//violetas//
pinMode(4, OUTPUT);//rojas//
//Establecer el número de la pantalla LCD de columnas y filas:
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
// segundo, minuto,hora,dia de la semana, dia del mes, mes, año
Wire.begin();
lcd.noBlink();
lcd.begin(20,4);
sensores.begin();
lcd.setCursor(0,0);
lcd.print(" *PROYECTO*");
lcd.setCursor(0,1);
lcd.print(" ESTEBAN & PEPE");
// Cambie los valores de abajo a los reales del momento para poner su reloj en hora y fecha.
// Usted probablemente solo quiere poner su reloj una vez y luego quitarla llamada de setDateDs3231.
// (para quitar las 8 lineas orizontales siguientes de setDateDS3231 hay que poner el reloj en fecha y hora luego desconectar el arduino de la PC y despues desconectar el reloj de
// arduino conectar el arduino a la PC denuevo y poner adelante de cada linea // asi se comenta una linea o quita la llamada o desactiba luego subir el programa desconectar de nuevo
// de la pc y conectar reloj si desea poner en hora, active esta parte y luego vuelva a quitarla, como se esplica arriba.
// Otra opcion para comentar varias lineas /* */ mas rapido o mas facil.
second = 00; // segundos
minute = 40; // minutos
hour = 21; // hora
dayOfWeek = 5; // dia de la semana
dayOfMonth = 6; // dia del mes
month = 7; // mes
year = 19; // año
setDateDs3231(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
//CAUDALIMETRO
{
pinMode(sensor, INPUT_PULLUP); // Pin digital como entrada con conexión PULL-UP interna
//+ lcd.begin(20,4); // Inicializo el LCD 2004
interrupts(); // Habilito las interrupciones
// Interrupción INT0, llama a la ISR llamada "flujo" en cada flanco de subida en el pin digital 2
attachInterrupt(digitalPinToInterrupt(sensor), flujo, RISING);
}
//CAUDALIMETRO
delay(6000); // aca decia 6000
}
void loop() {
getDateDs3231(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); //Obtenemos la hora
sensores.requestTemperatures();
Luces(minute, hour);
Temperatura(minute, hour);
Tiempo_A=hour*60+minute; //RELE N°1 de CO2"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if(Tiempo_A >= 690 && Tiempo_A <=1260) //RELE N°1 de CO2"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
{
digitalWrite(PinRele, LOW); //RELE N°1 de CO2"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
}
else
{
digitalWrite(PinRele, HIGH); //RELE N°1 de CO2"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
}
{ //CAUDALIMETRO
// Cada segundo calculamos e imprimimos el caudal
if(millis() - tiempoAnterior > 1000)
{
// Realizo los cálculos
tiempoAnterior = millis(); // Actualizo el nuevo tiempo
pulsos_Acumulados += pulsos; // Número de pulsos acumulados
litros_Hora = (pulsos * 60 / 7.5); // Q = frecuencia * 60/ 7.5 (L/Hora)
pulsos = 0; // Pongo nuevamente el número de pulsos a cero
// Llamada a la función que muestra los resultados en el LCD 2004
//+LCD_2004();
}
} //CAUDALIMETRO
Varios(minute, hour);
lcd.noBlink();
if (minute < 2) Retraso=1000;
else if (hour < 5) Retraso=10000; // aca decia 10000
else Retraso=4000; // ESTO ES TIEMPO EN QUE DURA CADA PANTALLA aca decia 3000
}
void Luces(int minutos, int horas) {
//fase 1//
int LucesAzules; // SE PUEDEN CAMBIAR LOS NOMBRES DE LOS COLORES EJEMPLO TODO DONDE DICE AZUL X NEGRO, SI DONDE DICE FASE 1 Y EN TODOS LADOS QUE DIGA AZUL
int InicioAmanecerAzules=631; // Empiesa azules a las 10,31 horas SE PUEDE CAMBIAR HORARIO
int FinAmanecerAzules=720; // Termina amanecer y pasa a pleno azules a las 12,00 horas
int InicioAnochecerAzules=1350; // Empieza a anochecer azules a las 22,30 horas
int FinAnochecerAzules=1439; // Se apagan los azules a las 23,59 horas
int MaxAzules=100; // PORSENTAJE DE LUZ ESTO CAMBIE DECIA 100
int PorcentAzules;
float PasoAzulesAM=MaxAzules/(FinAmanecerAzules-InicioAmanecerAzules); // ?????? esto esta bien ???????
float PasoAzulesPM=MaxAzules/(FinAnochecerAzules-InicioAnochecerAzules);
//fase 2//
int LucesSol;
int InicioAmanecerSol=900; // Empieza amanecer Sol a las 15 horas
int FinAmanecerSol=960; // Termina amanecer y pasa a pleno Sol a las 16 horas
int InicioAnochecerSol=1140; // Empieza anochecer Sol a las 19,00 h0ras
int FinAnochecerSol=1230; // Terminan anochecer Sol a las 20,30 horas
int MaxSol=100; // PORCENTAJE DE LUZ ESTO CAMBIE DECIA 100
int PorcentSol;
float PasoSolAM=MaxSol/(FinAmanecerSol-InicioAmanecerSol);
float PasoSolPM=MaxSol/(FinAnochecerSol-InicioAnochecerSol);
//fase 3//
int LucesBlancas;
int InicioAmanecerBlancas=740; // Empiesa amanece Verdes a las 12,20 horas
int FinAmanecerBlancas=840; // Termina amanecer y pasa a pleno blancas a las 14 horas
int InicioAnochecerBlancas=1275; // Empieza anochecer Sol a las 21,15 horas
int FinAnochecerBlancas=1334; // Termina atardecer blancas a las 22,14 horas
int MaxBlancas=100; // PORSENTAJE DE LUZ
int PorcentBlancas;
float PasoBlancasAM=MaxBlancas/(FinAmanecerBlancas-InicioAmanecerBlancas);
float PasoBlancasPM=MaxBlancas/(FinAnochecerBlancas-InicioAnochecerBlancas);
//fase 4//
int LucesVerdes;
int InicioAmanecerVerdes=750; // Empiesa amanece Verdes a las 12,30 horas
int FinAmanecerVerdes=819; // Termina amanecer y pasa a pleno Verdes a las 13,39 horas
int InicioAnochecerVerdes=1250; // Empieza a anochecer Verdes a las 21,10 horas
int FinAnochecerVerdes=1320; // Se apagan los Verdes a las 22, horas
int MaxVerdes=100; // PORSENTAJE DE LUZ
int PorcentVerdes;
float PasoVerdesAM=MaxVerdes/(FinAmanecerVerdes-InicioAmanecerVerdes);
float PasoVerdesPM=MaxVerdes/(FinAnochecerVerdes-InicioAnochecerVerdes);
//fase 5//
int LucesVioletas;
int InicioAmanecerVioletas=660; // Empiezan amanecer Violetas a las 11 horas
int FinAmanecerVioletas=720; // Termina amanecer y pasa a pleno Violetas a las 14 h
int InicioAnochecerVioletas=1290; // Empieza a anochecer Violetas a las 21,30 horas
int FinAnochecerVioletas=1349; // Terminan anochecer Violetas a las 22,29 horas
int MaxVioletas=100; // PORCENTAJE DE LUZ
int PorcentVioletas;
float PasoVioletasAM=MaxVioletas/(FinAmanecerVioletas-InicioAmanecerVioletas);
float PasoVioletasPM=MaxVioletas/(FinAnochecerVioletas-InicioAnochecerVioletas);
//fase 6//
int LucesRojas;
int InicioAmanecerRojas=730; // Empieza amanecer rojas a las 12,10 horas
int FinAmanecerRojas=789; // Termina amanecer y pasa a pleno rojas a las 13,09 horas
int InicioAnochecerRojas=1290; // Empieza atardecer rojas a las 21,30 horas
int FinAnochecerRojas=1349; // Termina atardecer rojas a las 22,29 horas
int MaxRojas=100;
int PorcentRojas;
float PasoRojasAM=MaxRojas/(FinAmanecerRojas-InicioAmanecerRojas);
float PasoRojasPM=MaxRojas/(FinAnochecerRojas-InicioAnochecerRojas);
int Tiempo;
Tiempo=horas*60+minutos; //CONVIERTE EL TIEMPO DE HORAS A MINUTOS
//################################# AZULES ###################################
//Noche
if (Tiempo < InicioAmanecerAzules ) PorcentAzules =0;
else if (Tiempo <= FinAmanecerAzules) PorcentAzules = (Tiempo-InicioAmanecerAzules)*PasoAzulesAM;
else if (Tiempo < InicioAnochecerAzules) PorcentAzules =MaxAzules; // //else if (Tiempo < InicioAnochecerAzules) PorcentAzules =0; <-- LINEA A CAMBIAR
else if (Tiempo <= FinAnochecerAzules) PorcentAzules = (FinAnochecerAzules-Tiempo)*PasoAzulesPM;
else PorcentAzules =0;
LucesAzules= (PorcentAzules*10)/100; //aca decia 255 cambie en todas x 10 -aproximado 3%- (PorcentAzules*255)/100
analogWrite(5, LucesAzules);
//################################# SOL ###################################
//Noche
if (Tiempo < InicioAmanecerSol ) PorcentSol =0;
else if (Tiempo <= FinAmanecerSol) PorcentSol = (Tiempo-InicioAmanecerSol)*PasoSolAM;
else if (Tiempo < InicioAnochecerSol) PorcentSol =MaxSol;
else if (Tiempo <= FinAnochecerSol) PorcentSol = (FinAnochecerSol-Tiempo)*PasoSolPM;
else PorcentSol =0;
LucesSol= (PorcentSol*176)/100; //aca decia 255 cambie x 160 -69%
analogWrite(6, LucesSol);
//################################# BLANCAS ###################################
//Noche
if (Tiempo < InicioAmanecerBlancas ) PorcentBlancas =0;
else if (Tiempo <= FinAmanecerBlancas ) PorcentBlancas = (Tiempo-InicioAmanecerBlancas )*PasoBlancasAM;
else if (Tiempo < InicioAnochecerBlancas ) PorcentBlancas =MaxBlancas;
else if (Tiempo <= FinAnochecerBlancas ) PorcentBlancas = (FinAnochecerBlancas -Tiempo)*PasoBlancasPM;
else PorcentBlancas =0;
LucesBlancas= (PorcentBlancas*205)/100; //aca decia 255 cambie x 205 -80%
analogWrite(7, LucesBlancas);
//#################################VERDES##############################################
//Noche
if (Tiempo < InicioAmanecerVerdes ) PorcentVerdes =0;
else if (Tiempo <= FinAmanecerVerdes ) PorcentVerdes = (Tiempo-InicioAmanecerVerdes )*PasoVerdesAM;
else if (Tiempo < InicioAnochecerVerdes ) PorcentVerdes =MaxVerdes;
else if (Tiempo <= FinAnochecerVerdes ) PorcentVerdes = (FinAnochecerVerdes -Tiempo)*PasoVerdesPM;
else PorcentVerdes =0;
LucesVerdes= (PorcentVerdes*80)/100; //cambie 255 x 90 viene a ser un 31%
analogWrite(8, LucesVerdes);
//################################violetas################################################
//Noche
if (Tiempo < InicioAmanecerVioletas ) PorcentVioletas =0;
else if (Tiempo <= FinAmanecerVioletas ) PorcentVioletas = (Tiempo-InicioAmanecerVioletas )*PasoVioletasAM;
else if (Tiempo < InicioAnochecerVioletas ) PorcentVioletas =MaxVioletas;
else if (Tiempo <= FinAnochecerVioletas ) PorcentVioletas = (FinAnochecerVioletas -Tiempo)*PasoVioletasPM;
else PorcentVioletas =0;
LucesVioletas= (PorcentVioletas*205)/100; // ????????viene a ser un 80 x 100 ?????
analogWrite(9, LucesVioletas);
//################################rojas###################################################
//Noche
if (Tiempo < InicioAmanecerRojas ) PorcentRojas =0;
else if (Tiempo <= FinAmanecerRojas ) PorcentRojas = (Tiempo-InicioAmanecerRojas )*PasoRojasAM;
else if (Tiempo < InicioAnochecerRojas ) PorcentRojas =MaxRojas;
else if (Tiempo <= FinAnochecerRojas ) PorcentRojas = (FinAnochecerRojas -Tiempo)*PasoRojasPM;
else PorcentRojas =0;
LucesRojas= (PorcentRojas*65)/100; //cambie 255 x 65 viene a ser un 26 x 100
analogWrite(4, LucesRojas);
if (Tiempo >= InicioAmanecerAzules && Tiempo <= FinAnochecerAzules) //////////////////////RELE ALIMENTACION FUENTE DE 12 V se le ordena activarla con la 1ª fase azules/////////////////
{digitalWrite(PinFuente, HIGH); // PRENDIDO CON OCTOACOPLADOR HIGH con relay cambiar a LOW
}
else
{
digitalWrite(PinFuente, LOW); // APAGADO CON OCTOACOPLADOR LOW, con relay cambiar a HIGH
}
delay(Retraso);
lcd.clear(); //////////////////////PRIMERA PANTALLA/////////////////////////
lcd.setCursor(0,0);
lcd.print(" INFORMACION");
lcd.setCursor(0,3);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.print("/");
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.print("/");
if (year < 10) lcd.print("0");
lcd.setCursor(6,3);
lcd.print("20");
lcd.print(year, DEC);
lcd.setCursor(12,2);
lcd.print("Hora"
);
lcd.setCursor(12,3);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.print(":");
getDateDs3231(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); //Obtenemos la hora
if (second < 10) lcd.print("0");
lcd.print(second, DEC);
lcd.setCursor(0,1);
switch (dayOfWeek)
{
case 1:
lcd.print("Lunes");
break;
case 2:
lcd.print("Martes");
break;
case 3:
lcd.print("Miercoles");
break;
case 4:
lcd.print("Jueves");
break;
case 5:
lcd.print("Viernes");
break;
case 6:
lcd.print("Sabado");
break;
case 7:
lcd.print("Domingo");
break;
}
delay(Retraso); //FIN PRIMERA PANTALLA
lcd.clear(); /////////////////////SEGUNDA PANTALLA - INFORMACION FASE AZULES////////////////////
lcd.setCursor(0,0);
lcd.print("INFORME-LUZ-ACUARIO");
lcd.setCursor(15,1);
lcd.print("=");
if (PorcentAzules < 100);
lcd.print(PorcentAzules);
lcd.print("%");
lcd.setCursor(0,1);
if (Tiempo > InicioAmanecerAzules && Tiempo < FinAmanecerAzules) lcd.print ("AMANECER-AZUL");
if (Tiempo > FinAmanecerAzules && Tiempo < InicioAnochecerAzules) lcd.print ("PLENO-AZUL");
if (Tiempo >= InicioAnochecerAzules && Tiempo <= FinAnochecerAzules) lcd.print ("ATARDECE-AZUL");
if (Tiempo > FinAnochecerAzules || Tiempo < InicioAmanecerAzules) lcd.print ("NOCHE-AZUL");
lcd.setCursor(15,2);
lcd.print("=");
if (PorcentVioletas < 100);
lcd.print(PorcentVioletas);
lcd.print("%");
lcd.setCursor(0,2);
if (Tiempo > InicioAmanecerVioletas && Tiempo < FinAmanecerVioletas) lcd.print ("AMANECE-VIOLETA");
if (Tiempo > FinAmanecerVioletas && Tiempo < InicioAnochecerVioletas) lcd.print ("PLENO-VIOLETA");
if (Tiempo >= InicioAnochecerVioletas && Tiempo <= FinAnochecerVioletas) lcd.print ("ATARDEC-VIOLETA");
if (Tiempo > FinAnochecerVioletas || Tiempo < InicioAmanecerVioletas) lcd.print ("NOCHE-VIOLETA");
lcd.setCursor(10,3);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.print(":");
getDateDs3231(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); //Obtenemos la hora
if (second < 10) lcd.print("0");
lcd.print(second, DEC);
delay(Retraso); //FIN SEGUNDA PANTALLA
lcd.clear(); /////////////////////TRECER PANTALLA - INFORMACION ROJAS////////////////////
lcd.setCursor(0,0);
lcd.print("INFORME-LUZ-ACUARIO");
lcd.setCursor(15,1);
lcd.print("=");
if (PorcentRojas < 100);
lcd.print(PorcentRojas);
lcd.print("%");
lcd.setCursor(0,1);
if (Tiempo > InicioAmanecerRojas && Tiempo < FinAmanecerRojas) lcd.print ("AMANECER-ROJAS");
if (Tiempo > FinAmanecerRojas && Tiempo < InicioAnochecerRojas) lcd.print ("PLENO-ROJAS");
if (Tiempo >= InicioAnochecerRojas && Tiempo <= FinAnochecerRojas) lcd.print ("ATARDECER-ROJAS");
if (Tiempo > FinAnochecerRojas || Tiempo < InicioAmanecerRojas) lcd.print ("NOCHE-ROJAS");
lcd.setCursor(15,2);
lcd.print("=");
if (PorcentVerdes < 100);
lcd.print(PorcentVerdes);
lcd.print("%");
lcd.setCursor(0,2);
if (Tiempo > InicioAmanecerVerdes && Tiempo < FinAmanecerVerdes) lcd.print ("AMANECER-VERDES");
if (Tiempo > FinAmanecerVerdes && Tiempo < InicioAnochecerVerdes) lcd.print ("PLENO-VERDES");
if (Tiempo >= InicioAnochecerVerdes && Tiempo <= FinAnochecerVerdes) lcd.print ("ATARDECE-VERDES");
if (Tiempo > FinAnochecerVerdes || Tiempo < InicioAmanecerVerdes) lcd.print ("NOCHE-VERDES");
lcd.setCursor(10,3);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.print(":");
getDateDs3231(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); //Obtenemos la hora
if (second < 10) lcd.print("0");
lcd.print(second, DEC);
delay(Retraso); // FIN TERCER PANTALLA //

lcd.clear(); /////////////////////CUARTA PANTALLA - INFORMACION FASE SOL////////////////////
lcd.setCursor(0,0);
lcd.print("INFORME-LUZ-ACUARIO");
lcd.setCursor(15,1);
lcd.print("=");
if (PorcentSol < 100); //??????????? aca abra que poner el porcentaje en que esta la intencidad ?????????
lcd.print(PorcentSol);
lcd.print("%");
lcd.setCursor(0,1);
if (Tiempo > InicioAmanecerSol && Tiempo < FinAmanecerSol) lcd.print ("AMANECER-SOL");
if (Tiempo > FinAmanecerSol && Tiempo < InicioAnochecerSol) lcd.print ("PLENO-SOL");
if (Tiempo >= InicioAnochecerSol && Tiempo <= FinAnochecerSol) lcd.print ("ATARDECE-SOL");
if (Tiempo > FinAnochecerSol || Tiempo < InicioAmanecerSol) lcd.print ("NOCHE-SOL");
lcd.setCursor(15,2);
lcd.print("=");
if (PorcentBlancas < 100);
lcd.print(PorcentBlancas);
lcd.print("%");
lcd.setCursor(0,2);
if (Tiempo > InicioAmanecerBlancas && Tiempo < FinAmanecerBlancas) lcd.print ("AMANECER-BLANCA");
if (Tiempo > FinAmanecerBlancas && Tiempo < InicioAnochecerBlancas) lcd.print ("PLENO-BLANCAS");
if (Tiempo >= InicioAnochecerBlancas && Tiempo <= FinAnochecerBlancas) lcd.print ("ATARDECE-BLANCA");
if (Tiempo > FinAnochecerBlancas || Tiempo < InicioAmanecerBlancas) lcd.print ("NOCHE-BLANCAS");
lcd.setCursor(10,3);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.print(":");
getDateDs3231(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); //Obtenemos la hora
if (second < 10) lcd.print("0");
lcd.print(second, DEC);
delay(Retraso);
} // FIN TERCER PANTALLA //
void LCD_2004() // CAUDALIMETRO //
{
// Imprimo la cabecera del sistema
lcd.clear();
lcd.setCursor(0,0);
lcd.print("CAUDAL");
// Presento los valores a través del LCD 2004
lcd.setCursor(6,0);
// Imprimo el caudal en L/hora
lcd.print("-> ");
lcd.print(litros_Hora, DEC);
lcd.print(" L/Hora");

delay(Retraso);
}
// CAUDALIMETRO //
void Temperatura(int minutos, int horas) /////////////////////OCTAVA PANTALLA - INFORMACION SENSORES TEMPERATURA////////////////////
{
float T1; // nada
float T2; // calentador y enfriador
float T3; // VENTILADOR
float T4;
sensores.requestTemperatures();
T1=sensores.getTempCByIndex(0)+1;
T2=sensores.getTempCByIndex(1)+1;
T3=sensores.getTempCByIndex(2)+1;
T4=sensores.getTempCByIndex(3)+1;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("CENTIL: "); // QUE ES ESTO NO ESTA ABAJO
lcd.print(T3,2);
lcd.print((char)223);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print("REFRIG: "); //ENFRIADOR PECERA+++++++++++++++++++++BIEN++++++++++++++++++++
lcd.print(T2,2);
lcd.print((char)223);
lcd.setCursor(0,1);
lcd.print("C00LER: "); //+++++++++++++++++++++BIEN++++++++++++++++++++
lcd.print(T1,2);
lcd.print((char)223);
lcd.setCursor(0,2);
lcd.print("CALENT: ");
lcd.print(T2,2);
lcd.print((char)223);
lcd.print(" ");
if (T1 < 24) EstadoCooler=1; // 1 Y 0 PARA OPTO ACOPLADOR, PARA RELE CAMBIAR A 0 1 Y CAMBIAR PERNDINO X APAGADO+++++++++++++++++++++BIEN++++++++++++++++++++
if (T1 > 25) EstadoCooler=0; // +++++++++++++++++++++BIEN++++++++++++++++++++
if (T2 < 25) EstadoVentil=0; //VENTILADOR O ENFRIADOR PECERA ESTA PARA RELAY, PARA OPTO ACOPLADOR CAMBIAR A 1 Y 0 Y CAMBIAR PERNDINO X APAGADO++++++++BIEN++++++++++++++++++++
if (T2 > 26) EstadoVentil=1; //+++++++++++++++++++++BIEN++++++++++++++++++++
if (T2 < 23) EstadoCalent=1;
if (T2 > 24) EstadoCalent=0;
lcd.setCursor(14, 2); //LE DECIMOS A LCD QUE IMPRIMA ESTADO CALENTADOR
if(EstadoCalent==1 ){
digitalWrite(PinCalentador, LOW);
lcd.print(" PREND"); //Prendido

}
else
{
digitalWrite(PinCalentador, HIGH);
lcd.print(" APAGA"); //Apagado

}
lcd.setCursor(14, 1); //LE DECIMOS A LCD QUE IMPRIMA ESTADO COOLER +++++++++++++++++++++BIEN++++++++++++++++++++
if(EstadoCooler==1 ){
digitalWrite(PinCooler, LOW);
lcd.print(" APAGA"); //Prendido


}
else
{
digitalWrite(PinCooler, HIGH);
lcd.print(" PREND"); // apagado

}
lcd.setCursor(14, 3);
if(EstadoVentil==1 ){ //decimos al LCD QUE IMPRIMA rele VENTILADOR el encendido o apagado//+++++++++++++++++++++BIEN++++++++++++++++++++
digitalWrite(PinVentilador, LOW);
lcd.print(" PREND"); //Prendido

}
else
{
digitalWrite(PinVentilador, HIGH);
lcd.print(" APAGA"); // apagado*/
}
delay(7000);
} // FIN OCTAVA PANTALLA //

// ALARMA //
// void Temperatura(int minutos, int horas)
// {
float T1; // nada
float T2; // calentador y enfriador
float T3; // VENTILADOR
float T4;
if (T1 > 26) EstadoAlarma=1;
if (T1 < 27) EstadoAlarma=0;
if (T2 > 26) EstadoAlarma=1;
if (T2 < 27) EstadoAlarma=0;
if (T2 < 21) EstadoAlarma=1;
if (T2 > 22) EstadoAlarma=0;
if (EstadoAlarma==1 ){
digitalWrite(PinAlarma, HIGH);
delay(250);
}
}
void Varios(int minutos, int horas) ///////// NOVENA PANTALLA-VARIOS /////////
{ //HORARIO DE PECERA AUXILIAR
int Varios;
int InicioVarios=720; // 12 horas ????????????????cambio al revez???????? acadecia 720 no paso nada
int FinVarios=1140; // 19 horas
int Tiempo;
Tiempo=horas*60+minutos;
if (Tiempo < InicioVarios ) Varios=0; //Amanecer ????????????????cambi 0 x 1 no paso nada??????????
if (Tiempo >= InicioVarios && Tiempo <= FinVarios) Varios=(Tiempo,InicioVarios,FinVarios);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("OTRA PECERA");
lcd.setCursor(0,2);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.print(":");
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.setCursor(0,3);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.print("/");
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.print("/");
lcd.print("20");
if (year < 10) lcd.print("0");
lcd.print(year, DEC);
lcd.print(" ");
if (Tiempo >= InicioVarios && Tiempo <= FinVarios) //decimos al rele el encendido y apagado ???? cambio < x > y no paso nada??????//
{
digitalWrite(PinVarios, HIGH);
lcd.setCursor(0,1);
lcd.print("PRENDIDO: "); //Prendido
}
else
{
digitalWrite(PinVarios, LOW);
lcd.setCursor(0,1);
lcd.print("APAGADO: "); // apagado
}
delay(Retraso);
} // FIN NOVENA PANTALLA
///////// DECIMA PANTALLA-VARIOS /////////
/* void LCD_2004()
{
// Imprimo la cabecera del sistema //CAUDALIMETRO
lcd.clear();
lcd.setCursor(0,0);
lcd.print("CAUDAL");
// Presento los valores a través del LCD 2004
lcd.setCursor(6,0);
// Imprimo el caudal en L/hora
lcd.print("-> ");
lcd.print(litros_Hora, DEC);
lcd.print(" L/Hora");

delay(Retraso);
}*/
//CAUDALIMETRO



// FIN NOVENA PANTALLA
int Porcent(int Valor, int Maximo)
{
int result;
result=Valor*50;
result=result/Maximo;
return result;
}
 
Arriba