clock with several alarms in arduino

0

I'm doing a project with arduino and when I compile it I want the menus to appear for the different alarms and change the time but it does not appear Can you tell me what the error is?

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "RTClib.h"

LiquidCrystal_I2C lcd(0X3F,16,2); // inicializa la interfaz I2C del LCD 16x2
RTC_DS1307 RTC;                       // inicializa el modulo 
int r_diaSemana;                     // almacena el resultado del dia de la semana calculado
const int timbre = 7;             // Pin 7 encargado de activar el timbre, se conecta al Rele

int Pmodo=5;
int Pup=3;
int Pdown=4;
int Pedit=2;

int activate;
int n = 16;

char texto[10];

int Pulsador_modo=0;
int Pulsador_up=0;
int Pulsador_down=0;
int Pulsador_edit=0;

int segundo;
int minuto;
int hora;

int tiempo_timbre=5000; // Tiempo continuo que dura el timbre sonando, en milisegundos 5000 = 5 segundos

int horas_alarma;

int minutos_alarma;

int horas_alarma2;

int minutos_alarma2;

////////////////////////////////// Void Setup() ///////////

void setup() {

pinMode(timbre, OUTPUT);                    // Configura como salida el pin 7
Wire.begin(); 
RTC.begin();
//RTC.adjust(DateTime(__DATE__, __TIME__)); // Lee la fecha y hora del PC (Solo en la primera carga)

Serial.begin(9600);                 // Establece la velocidad de datos del puerto serie a 9600
lcd.init();
lcd.backlight();                    // Coloca luz de fondo al LCD
lcd.clear();                        // Borra el  LCD

pinMode(Pulsador_modo, INPUT); 
pinMode(Pulsador_up, INPUT); 
pinMode(Pulsador_down, INPUT);
pinMode(Pulsador_edit, INPUT);
}

////////////////////////////////// Void loop() ///////////


void loop (){


 DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC

 Serial.print(now.year(), DEC);  // A¤o
 Serial.print('/');
 Serial.print(now.month(), DEC); // Mes
 Serial.print('/');
 Serial.print(now.day(), DEC);   // Dia
 Serial.print(' ');
 Serial.print(now.hour(), DEC);  // Horas
 Serial.print(':');
 Serial.print(now.minute(), DEC); // Minutos
 Serial.print(':');
 Serial.print(now.second(), DEC); // Segundos
 Serial.println();
 lcd.setCursor(0,0);
 lcd.print("D:");
 lcd.print(now.year(), DEC);
 lcd.print("/");
 lcd.print(now.month(), DEC);
 lcd.print("/");
 lcd.print(now.day(), DEC);
 lcd.print(" ");
 lcd.setCursor(0,1);
 lcd.print("T: ");
 lcd.print(now.hour(), DEC);
 lcd.print(":");
 lcd.print(now.minute(), DEC);
 lcd.print(":");
 lcd.print(now.second(), DEC);
 segundo=now.second();
 minuto=now.minute();
 hora=now.hour();

  delay(1000);
 lcd.setCursor(0,0);
 lcd.print("              ");
 lcd.setCursor(0,1);
 lcd.print("              ");

 int r_diaSemana = dia_de_semana();   // llama a la funcion que calcula el dia de la semana y lo almacena en r_diaSemana

 if (digitalRead(Pmodo)){
 activate=activate++;
  if(activate==3)
  {activate=0;
  }
}

switch(activate)
{
  case 1:
 lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Alarma 1");
      lcd.setCursor(0,1);
      sprintf(texto, "%02d:%02d", horas_alarma, minutos_alarma); //las horas tendran 2 digitos 
      lcd.print(texto);
      Pulsador_up = digitalRead(Pup); // cambiar las horas 
      if(Pulsador_up == HIGH){
        horas_alarma++;
        lcd.setCursor(0,1);
        lcd.print(horas_alarma);
        if (horas_alarma>23){
          horas_alarma=0;
        lcd.clear();
        }
        delay(100);
      }
        Pulsador_down= digitalRead(Pdown); // cambiar los minutos 
        if(Pulsador_down == HIGH){
        minutos_alarma++;
        lcd.setCursor(1,1);
        lcd.print(minutos_alarma);
        if(minutos_alarma>59){
          minutos_alarma=0;
        lcd.clear();
        }
        delay(100);
      }
     lcd.clear();

  break;

  case 2:
lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Alarma 2");
      lcd.setCursor(0,1);
      sprintf(texto, "%02d:%02d", horas_alarma2, minutos_alarma2); //las horas tendran 2 digitos 
      lcd.print(texto);
      Pulsador_up = digitalRead(Pup); // cambiar las horas 
      if(Pulsador_up == HIGH){
        horas_alarma2++;
        lcd.setCursor(0,1);
        lcd.print(horas_alarma2);
        if(horas_alarma2>23){
          horas_alarma2=0;
          lcd.clear();
        }
        delay(100);
      }
        Pulsador_down= digitalRead(Pdown); // cambiar los minutos 
        if(Pulsador_down == HIGH){
        minutos_alarma2++;
        lcd.setCursor(1,1);
        lcd.print(minutos_alarma2);
        if(minutos_alarma2>59){
          minutos_alarma2=0;
         lcd.clear();
        }
        delay(100);
      }
         lcd.clear();

  break;

  delay(200);


}


  if (hora==horas_alarma && minuto ==minutos_alarma && segundo==0){

    digitalWrite(timbre, HIGH); 

    lcd.setCursor(0,0);

    Serial.println("Timbre Activo");

    delay(tiempo_timbre); 

    digitalWrite(timbre, LOW);

  }
  if (hora==horas_alarma2 && minuto ==minutos_alarma2 && segundo==0){

    digitalWrite(timbre, HIGH); 

    lcd.setCursor(0,0);

    Serial.println("Timbre Activo");

    delay(tiempo_timbre); 

    digitalWrite(timbre, LOW);
  }


}
    
asked by Ariel Ullon 13.03.2018 в 00:08
source

0 answers