Ayuda con programación de alarma

Tema en 'Programación' iniciado por Jmd, 10 Jul 2019.

  1. Jmd

    Jmd

    Mensajes:
    4
    Registrado:
    14 Abr 2018
    Ubicación:
    C.A.B.A.
    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;
    }
     
  2. Jmd

    Jmd

    Mensajes:
    4
    Registrado:
    14 Abr 2018
    Ubicación:
    C.A.B.A.
    Perdón pero no supe comprimir el programa