Algorítimo para relógio com Atmega328 (ARDUÍNO) Atualizado 08/11/2018

//calendario e relogio do sistema com Atmega328
//pedroluand@gmail.com
//versão: 1.5 //usando millis
//versao: 1.4 //salvando clock na eeprom
//versao: 27/08/2018
//versao: 1.3
//versao: 291217

#include <Wire.h>
#include <EEPROM.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0X3F,2,1,0,4,5,6,7,3,POSITIVE);

//configuracoes do relogio e do calendario
long previousMillis = 0;
long interval = 1000;
int hh = 18; 
int mm = 0; 
int ss = 0; 
int dd = 8;
int ms = 11;
int aa = 2018;
int se = 5;          // dia da semana 1 = domingo
int bissexto = 2020; //proximo ano bisexto
int set = 0;

//configuracoes horario de verao, modificar com atenção
int hv = 0;         //set hv 1= hv ligado  0= hv desligado
int hvh = 23;
int hvm = 59;
int hvdi = 4;      //dia hv
int hvmsi = 11;     //mes hv
int hvai = 2018;    //ano hv
int hvdf = 16;      //dia hv
int hvmsf = 2;      //mes hv
int hvaf = 2019;    //ano hv

//configuracao do alarme
int ha = 0;
int ma = 0;
int al = 0;         //1= alarme ligado, 0= alarme desligado
int bp = 0;         //1= beep ligado, 0= beep desligado

//configuracoes globais
int memoria = 0;     //memoria eeprom clock
int cki;             //valor referencia do ajuste de clock interno eeprom
int ck = 872;        //nao modificar clock interno usado pelo sistema
int p = 100;         //pausa do pulso clock externo
int d = 900;         //duracao do pulso clock externo

#define adj2 13    //ajuste clock-
#define ext 12     //entrada clock externo 12
#define adj1 11    //ajuste clock+
#define botao1 10  //ajusta dia da semana e ano
#define botao2 9   //ajuste de minutos e minutos alarme e mes
#define botao3 8   //ajuste de horas e horas alarme e dia
#define beep   7   //buzzer
#define mode   2   //mode relogio e alarme
#define alarme tone(7,1000,200); //beep de hora certa e alarme

void setup(){
    pinMode(mode,INPUT_PULLUP);
    pinMode(botao1,INPUT_PULLUP);
    pinMode(botao2,INPUT_PULLUP);
    pinMode(botao3,INPUT_PULLUP);
    pinMode(ext,INPUT_PULLUP);
    pinMode(beep,OUTPUT);
    pinMode(adj1,OUTPUT);
    pinMode(adj2,OUTPUT);
    lcd.begin(20,4);
    cki=EEPROM.read(memoria); //lê o  valor para ck na eeprom
    }

void loop(){
//clock usando millis
unsigned long currentMillis = millis();
//Intervalo de 1 segundo
if (currentMillis - previousMillis > interval){
previousMillis = currentMillis;
ss++;

     int valor2=digitalRead(botao1);
        if(valor2==LOW)
        {
      //  noTone();
        }
       
     int valor3=digitalRead(mode);
     if(valor3==LOW)
        {
         set+=1;
       
        }
   
        if(set==0) //tela inicial
        {
            display();
        }
               
          if(set==1)  //menu semana
        {
          adjsemana();
        }

        if(set==2)  //menu dia calendario
        {
            adjdia();
        }

        if(set==3)  //menu dia calendario
        {
            adjmes();
        }
       
        if(set==4)  //menu ano calendario
        {
            adjano();
        }
               
        if(set==5)  //menu hora
        {
            adjhora();
        }
       
       
        if(set==6)  //menu minuto
        {
          adjminuto();
        }

        if(set==7)  //menu beep
        {
          beeps();
        }
       
        if(set==8)  //menu hora alarme
        {
          adjhoraal();
        }
       
        if(set==9)  //menu menu alarme
        {
          adjminutoal();
        }

        if(set==10)  //menu beep alarme
        {
          beepal();
        }

        if(set==11)  //menu inicio hv
        {
          iniciohv();
        }
       
        if(set==12)  //menu fim hv
        {
          fimhv();
        }
       
        if(set==13)  //menu ajustes extras
        {
          extras();
        }
       
        if(set==14)  //menu ajustes clock
        {
          adjck();
        }
       
        if(set==15)  //loop do menu
        {
            set=0;
           
            display();
        }
   
    if(hh==ha && mm==ma && ss>=0) //horario do alarme
    {
     if(al==1)
        {
    alarme;
  }}
   
    if(dd==hvdi && ms==hvmsi && aa==hvai && hh==hvh && mm==hvm && ss>=59  && hv==1) //inicio hv
    {
     hh+=1;
     hv=0;
     }
       
     if(dd==hvdf && ms==hvmsf && aa==hvaf && hh==hvh && mm==hvm && ss>=59 && hv==0) //fim hv
    {
     hh-=1;
//     dd-=1;
//     se-=1;
     hv=1;
     }
         
    if(bp==2) //liga/desliga beep
    {
    bp=0;
    //
    }
 
    if(al==2) //liga/desliga alarme
    {
    al=0;
    //
    }
 
    if (ha == 24) //zera o contador de hora alarme
    {
        ha=0;
        //
    }
 
    if (ma == 60) //zera o contador de minutos alarme
    {
        ma=0;
        //
    }
   
     if (hvmsf== 13) //zera o contador de hvmsf
    {
        hvmsf=1;
        //
    }
   
    if (hvmsi == 13) //zera o contador de hvmsi
    {
        hvmsi=1;
        //
    }
   
    if (ss == 60) //zera o contador de segundos
    {
        ss=0;
        //
        mm+=1;
    }
   
    if (mm == 60) //zera o contador de minutos
    {
        mm=0;
        //
        hh+=1;
     }
       if (hh == 25) //correcao horario de verao
     {
     hh=1; 
     dd+=1;
     se+=1;
     }
     if (hh == 24) //formato de 24 horas
     {
     hh=0; 
     dd+=1;
     se+=1;
     }
             
    if(ms==0) //ms decrescente
    {
        ms=12;
    } 
 
    if(ha==-1) //hora alarme decrescente
    {
        ha=23;
    }
         
    if(ma==-1) //minuto alarme decrescente
    {
        ma=59;
    }
    if(mm==-1) //minuto decrescente
    {
        mm=59;
    }
    if(hh==-1) //hora decrescente
    {
        hh=23;
    }
       
     if (se == 8) //zera o contador de dias da semana
     {
     se=1;
     //
     }
 
     if (dd == 32 && ms == 1) //zera o contador de dias de janeiro
     {
     dd=1;
     //
     ms+=1;
     }
   
     if(dd==0 && ms==1) //janeiro decrescente
    {
        dd=31;
    }
   
     if (hvdi == 32 && hvmsi == 1) //zera o contador de dias de janeiro hvdi
     {
     hvdi=1;
     //
     }
       
     if (hvdf == 32 && hvmsf == 1) //zera o contador de dias de janeiro hvdf
     {
     hvdf=1;
     //
     }
   
     if(aa == bissexto && ms == 3 && dd ==1) //calcula o proximo ano bissexto no dia 1 de marco
     {
     bissexto+=4;
     //
     }
   
     if(aa == bissexto && dd == 30 && ms == 2) //zera o contador de dias de fevereiro bissexto
     {
     dd=1;
   
     ms+=1;
     }
       
     if(aa == bissexto && dd==0 && ms==2) //fevereiro bissexto decrescente
    {
        dd=29;
    }
    if(dd==31 && ms==2)
        {
        dd=29;
     }
       
     if(aa != bissexto && dd == 29 && ms == 2) //zera o contador de dias de fevereiro normal
     {
     dd=1;
   
     ms+=1;
     }
             
     if(dd==0 && ms==2) //fevereiro normal decrescente
    {
        dd=28;
    }
       
     if (hvdi == 29 && hvmsi == 2) //zera o contador de dias de fevereiro hvdi
     {
     hvdi=1;
   
     }
       
     if (hvdf == 29 && hvmsf == 2) //zera o contador de dias de fevereiro hvdf
     {
     hvdf=1;
   
     }
   
             
     if (hvdi == 30 && hvmsi == 2) //zera o contador de dias de fevereiro bissexto hvdi
     {
     hvdi=1;
   
     }
       
     if (hvdf == 30 && hvmsf == 2) //zera o contador de dias de fevereiro bissexto hvdf
     {
     hvdf=1;
   
     }
   
       
     if (dd == 32 && ms == 3) //zera o contador de dias de marco
     {
     dd=1;
   
     ms+=1;
     }
               
     if(dd==0 && ms==3) //marco decrescente
    {
        dd=31;
    }
   
     if (hvdi == 32 && hvmsi == 3) //zera o contador de dias de marco hvdi
     {
     hvdi=1;
   
     }
       
     if (hvdf == 32 && hvmsf == 3) //zera o contador de dias de marco hvdf
     {
     hvdf=1;
   
     }
   
     if (dd == 31 && ms == 4) //zera o contador de dias de abril
     {
     dd=1;
   
     ms+=1;
     }
               
     if(dd==0 && ms==4) //abril decrescente
    {
        dd=30;
    }
   
     if (hvdi == 31 && hvmsi == 4) //zera o contador de dias de abril hvdi
     {
     hvdi=1;
   
     }
       
     if (hvdf == 31 && hvmsf == 4) //zera o contador de dias de abril hvdf
     {
     hvdf=1;
   
     }
   
     if (dd == 32 && ms == 5) //zera o contador de dias de maio
     {
     dd=1;
   
     ms+=1;
     }
               
     if(dd==0 && ms==5) //maio decrescente
    {
        dd=31;
    }
   
     if (hvdi == 32 && hvmsi == 5) //zera o contador de dias de maio hvdi
     {
     hvdi=1;
   
     }
       
     if (hvdf == 32 && hvmsf == 5) //zera o contador de dias de maio hvdf
     {
     hvdf=1;
   
     }
   
     if (dd == 31 && ms == 6) //zera o contador de dias de junho
     {
     dd=1;
   
     ms+=1;
     }
               
     if(dd==0 && ms==6) //junho decrescente
    {
        dd=30;
    }
   
     if (hvdi == 31 && hvmsi == 6) //zera o contador de dias de junho hvdi
     {
     hvdi=1;
   
     }
       
     if (hvdf == 31 && hvmsf == 6) //zera o contador de dias de junho hvdf
     {
     hvdf=1;
   
     }
   
     if (dd == 32 && ms == 7) //zera o contador de dias de julho
     {
     dd=1;
   
     ms+=1;
     }
               
     if(dd==0 && ms==7) //julho decrescente
    {
        dd=31;
    }
   
     if (hvdi == 32 && hvmsi == 7) //zera o contador de dias de julho hvdi
     {
     hvdi=1;
   
     }
       
     if (hvdf == 32 && hvmsf == 7) //zera o contador de dias de julho hvdf
     {
     hvdf=1;
   
     }
   
     if (dd == 32 && ms == 8) //zera o contador de dias de agosto
     {
     dd=1;
   
     ms+=1;
     }
               
     if(dd==0 && ms==8) //agosto decrescente
    {
        dd=31;
    }
   
     if (hvdi == 32 && hvmsi == 8) //zera o contador de dias de agosto hvdi
     {
     hvdi=1;
   
     }
       
     if (hvdf == 32 && hvmsf == 8) //zera o contador de dias de agoso hvdf
     {
     hvdf=1;
   
     }
   
     if (dd == 31 && ms == 9) //zera o contador de dias de setembro
     {
     dd=1;
   
     ms+=1;
     }
               
     if(dd==0 && ms==9) //setembro decrescente
    {
        dd=30;
    }
   
     if (hvdi == 31 && hvmsi == 9) //zera o contador de dias de setembro hvdi
     {
     hvdi=1;
   
     }
       
     if (hvdf == 31 && hvmsf == 9) //zera o contador de dias de setembro hvdf
     {
     hvdf=1;
   
     }
   
     if (dd == 32 && ms == 10) //zera o contador de dias de outubro
     {
     dd=1;
   
     ms+=1;
     }
               
     if(dd==0 && ms==10) //outubro decrescente
    {
        dd=31;
    }
   
     if (hvdi == 32 && hvmsi == 10) //zera o contador de dias de outubro hvdi
     {
     hvdi=1;
   
     }
       
     if (hvdf == 32 && hvmsf == 10) //zera o contador de dias de outubro hvdf
     {
     hvdf=1;
   
     }
   
     if (dd == 31 && ms == 11) //zera o contador de dias de novembro
     {
     dd=1;
   
     ms+=1;
     }
               
     if(dd==0 && ms==11) //novembro decrescente
    {
        dd=30;
    }
   
     if (hvdi == 31 && hvmsi == 11) //zera o contador de dias de novembro hvdi
     {
     hvdi=1;
   
     }
       
     if (hvdf == 31 && hvmsf == 11) //zera o contador de dias de novembro hvdf
     {
     hvdf=1;
   
     }
   
     if (dd == 32 && ms == 12) //zera o contador de dias de dezembro
     {
     dd=1;
   
     ms+=1;
     }
           
     if(dd==0 && ms==12) //dezembro decrescente
    {
        dd=31;
    }
   
     if (hvdi == 32 && hvmsi == 12) //zera o contador de dias de dezembro hvdi
     {
     hvdi=1;
   
     }
       
     if (hvdf == 32 && hvmsf == 12) //zera o contador de dias de dezembro hvdf
     {
     hvdf=1;
   
     }
   
     if (ms == 13) //zera o contador de mes
     {
     ms=1;
   
     aa+=1;
     }
       
     if(mm == 0) //beep hora certa
     {
     {
     if(bp==1 && ss==0)
     {
    alarme;
     }
     }}}}
     //fim do loop

void adjck(){
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("AJUSTE CK ");
    lcd.print(ck+cki);
    lcd.print("ms ");
    lcd.print(ss);
    lcd.setCursor(0,1);
    lcd.print("1= +clock ");
    lcd.setCursor(0,2);
    lcd.print("2= -clock ");
       
    int valor2=digitalRead(botao2);
    if(valor2==LOW)
    {
        cki-=1;
        EEPROM.write(memoria,cki);
        digitalWrite(adj1,HIGH);
        //delay(d);
        digitalWrite(adj1,LOW);
       // delay(p);
    }

    int valor3=digitalRead(botao3);
    if(valor3==LOW)
    {
        cki+=1;
        EEPROM.write(memoria,cki);
        digitalWrite(adj2,HIGH);
       // delay(d);
        digitalWrite(adj2,LOW);
       // delay(p);
    } 
    lcd.setCursor(0,3);
    lcd.print("3= zerar segundos ");
   
   int valor1=digitalRead(botao1);
    if(valor1==LOW)
    {
        ss=0;
    } 
    }
   
    void beeps(){
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("AJUSTE BEEP ");
   
    lcd.setCursor(0,1);
    lcd.print("1= beep ");
   // lcd.print(bp);     
    if(bp==1)
    {
      lcd.print("ligado");
    }
    if(bp==0)
    {
      lcd.print("desligado");
    }
 
    int valor3=digitalRead(botao3);
   // if(valor3==LOW && dd!=0)
    if(valor3==LOW)
    {
      alarme;
        bp+=1;
    } 
    lcd.setCursor(0,3);
    lcd.print("3= SAIR ");
   int valor1=digitalRead(botao1);
    if(valor1==LOW)
    {
        set=0;
    } 
    }

void beepal(){
lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("AJUSTE BEEP ALARME ");
   
    lcd.setCursor(0,1);
    lcd.print("1= beep ");
   // lcd.print(al);     

    if(al==1)
    {
      //alarme;
      lcd.print("ligado");
    }
    if(al==0)
    {
      lcd.print("desligado");
    }
   
    int valor3=digitalRead(botao3);
   // if(valor3==LOW && dd!=0)
    if(valor3==LOW)
    {
        alarme;
        al+=1;
    } 
    lcd.setCursor(0,3);
    lcd.print("3= SAIR ");
   int valor1=digitalRead(botao1);
    if(valor1==LOW)
    {
        set=0;
    } 
    }

void extras(){
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("AJUSTES EXTRAS");
    lcd.setCursor(0,1);
    lcd.print("1=h. ver. 2=bissexto");
    lcd.setCursor(0,2);
    lcd.print("h. verao ativo: ");
    if(hv==1)
    {
      lcd.print("SIM");
    }
    if(hv==0)
    {
      lcd.print("NAO");
    }

    int valor3=digitalRead(botao3);
    if(valor3==LOW)
    {
    hv+=1;
    alarme;
    }
   
    if(hv==2)
    {
        hv=0;
        }
   
    lcd.setCursor(0,3);
    lcd.print("prox. bissexto: ");
    lcd.print(bissexto);
    int valor2=digitalRead(botao2);
    if(valor2==LOW)
    {
        bissexto+=4;
    }
//    lcd.setCursor(0,3);
//    lcd.print("3= SAIR ");
   int valor1=digitalRead(botao1);
    if(valor1==LOW)
    {
        set=0;
    } 
    }
     

void fimhv(){
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("FIM HORARIO VERAO");
    lcd.setCursor(6,1);
    lcd.print(hvdf);
    lcd.print("/");
    lcd.print(hvmsf);
    lcd.print("/");
    lcd.print(hvaf);

    int valor2=digitalRead(botao2);
   // if(valor2==LOW && dd!=0)
    if(valor2==LOW)
    {
        hvmsf+=1;
    }

    int valor3=digitalRead(botao3);
   // if(valor3==LOW && dd!=0)
    if(valor3==LOW)
    {
        hvdf+=1;
    } 
    int valor1=digitalRead(botao1);
   // if(valor3==LOW && dd!=0)
    if(valor1==LOW)
    {
        hvaf+=1;
    } 
    }

void iniciohv(){
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("INICIO HORARIO VERAO");
    lcd.setCursor(6,1);
    lcd.print(hvdi);
    lcd.print("/");
    lcd.print(hvmsi);
    lcd.print("/");
    lcd.print(hvai);
       
    int valor2=digitalRead(botao2);
   // if(valor2==LOW && dd!=0)
    if(valor2==LOW)
    {
        hvmsi+=1;
    }

    int valor3=digitalRead(botao3);
   // if(valor3==LOW && dd!=0)
    if(valor3==LOW)
    {
        hvdi+=1;
    } 
    int valor1=digitalRead(botao1);
   // if(valor3==LOW && dd!=0)
    if(valor1==LOW)
    {
        hvai+=1;
    } 
   
       lcd.setCursor(0,3);
    if(hv==1){
    lcd.print("auto ativado");
        }
    if(hv==0){
    lcd.print("auto desativado");
    }
    }

void adjsemana(){
    lcd.clear();
    lcd.setCursor(5,0);
    lcd.print("DIA SEMANA");
    lcd.setCursor(0,1);
    lcd.print("1= +semana: ");
   
    if(se==1){
     lcd.print("DOMINGO");
    }
     if(se==2){
     lcd.print("SEGUNDA");
    }
     if(se==3){
     lcd.print("TERCA ");
    }
     if(se==4){
     lcd.print("QUARTA");
    }
     if(se==5){
     lcd.print("QUINTA");
    }
     if(se==6){
     lcd.print("SEXTA ");
    }
     if(se==7){
     lcd.print("SABADO");
    }
   
    lcd.setCursor(0,3);
    lcd.print("3= SAIR ");
   int valor1=digitalRead(botao1);
    if(valor1==LOW)
    {
        set=0;
    } 
     
    int valor3=digitalRead(botao3);
    if(valor3==LOW)
    {
        se+=1;
    } 
    }
   

void adjdia(){
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("AJUSTE DIA ");
    lcd.print(dd);
    lcd.setCursor(0,1);
    lcd.print("1= +dia ");
  //  lcd.print(dd);
    lcd.setCursor(0,2);
    lcd.print("2= -dia ");
  //  lcd.print(dd);
       
    int valor2=digitalRead(botao2);
   // if(valor2==LOW && dd!=0)
    if(valor2==LOW)
    {
        dd-=1;
    }

    int valor3=digitalRead(botao3);
   // if(valor3==LOW && dd!=0)
    if(valor3==LOW)
    {
        dd+=1;
    } 
    lcd.setCursor(0,3);
    lcd.print("3= SAIR ");
   int valor1=digitalRead(botao1);
    if(valor1==LOW)
    {
        set=0;
    } 
    }

void adjmes(){
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("AJUSTE MES ");
    lcd.print(ms);
    lcd.setCursor(0,1);
    lcd.print("1= +mes ");
   // lcd.print(ms);
    lcd.setCursor(0,2);
    lcd.print("2= -mes ");
   // lcd.print(ms);
       
    int valor2=digitalRead(botao2);
   // if(valor2==LOW && ms!=0)
    if(valor2==LOW)
    {
        ms-=1;
    }

    int valor3=digitalRead(botao3);
   // if(valor3==LOW && ms!=0)
    if(valor3==LOW)
    {
        ms+=1;
    } 
    lcd.setCursor(0,3);
    lcd.print("3= SAIR ");
   int valor1=digitalRead(botao1);
    if(valor1==LOW)
    {
        set=0;
    } 
    }


void adjano(){
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("AJUSTE ANO ");
    lcd.print(aa);
    lcd.setCursor(0,1);
    lcd.print("1= +ano ");
  //  lcd.print(aa);
    lcd.setCursor(0,2);
    lcd.print("2= -ano ");
  //  lcd.print(aa);
       
    int valor2=digitalRead(botao2);
   // if(valor2==LOW && aa!=0)
    if(valor2==LOW)
    {
        aa-=1;
    }

    int valor3=digitalRead(botao3);
   // if(valor3==LOW && aa!=0)
    if(valor3==LOW)
    {
        aa+=1;
    } 
    lcd.setCursor(0,3);
    lcd.print("3= SAIR ");
   int valor1=digitalRead(botao1);
    if(valor1==LOW)
    {
        set=0;
    } 
    }


void adjhora(){
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("AJUSTE HORAS ");
    lcd.print(hh);
    lcd.setCursor(0,1);
    lcd.print("1= +hora ");
   // lcd.print(hh);
    lcd.setCursor(0,2);
    lcd.print("2= -hora ");
   // lcd.print(hh);
       
    int valor2=digitalRead(botao2);
   // if(valor2==LOW && hh!=0)
    if(valor2==LOW)
    {
        hh-=1;
    }

    int valor3=digitalRead(botao3);
   // if(valor3==LOW && hh!=0)
    if(valor3==LOW)
    {
        hh+=1;
    } 
    lcd.setCursor(0,3);
    lcd.print("3= SAIR ");
   int valor1=digitalRead(botao1);
    if(valor1==LOW)
    {
        set=0;
    } 
    }


void adjminuto(){
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("AJUSTE MINUTOS ");
    lcd.print(mm);
    lcd.setCursor(0,1);
    lcd.print("1= +minuto ");
   // lcd.print(hh);
    lcd.setCursor(0,2);
    lcd.print("2= -minuto ");
   // lcd.print(hh);
       
    int valor2=digitalRead(botao2);
   // if(valor2==LOW && mm!=0)
    if(valor2==LOW)
    {
        mm-=1;
    }

    int valor3=digitalRead(botao3);
   // if(valor3==LOW && mm!=0)
    if(valor3==LOW)
    {
        mm+=1;
    } 
    lcd.setCursor(0,3);
    lcd.print("3= SAIR ");
   int valor1=digitalRead(botao1);
    if(valor1==LOW)
    {
        set=0;
    } 
    }


void adjhoraal(){
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("AJUSTE H. ALARME ");
    lcd.print(ha);
    lcd.setCursor(0,1);
    lcd.print("1= +hora ");
   // lcd.print(ha);
    lcd.setCursor(0,2);
    lcd.print("2= -hora ");
   // lcd.print(ha);
       
    int valor2=digitalRead(botao2);
   // if(valor2==LOW && ha!=0)
    if(valor2==LOW)
    {
        ha-=1;
    }

    int valor3=digitalRead(botao3);
   // if(valor3==LOW && ha!=0)
    if(valor3==LOW)
    {
        ha+=1;
    } 
    lcd.setCursor(0,3);
    lcd.print("3= SAIR ");
   int valor1=digitalRead(botao1);
    if(valor1==LOW)
    {
        set=0;
    } 
    }


void adjminutoal(){
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("AJUSTE M. ALARME ");
    lcd.print(ma);
    lcd.setCursor(0,1);
    lcd.print("1= +minuto ");
   // lcd.print(ma);
    lcd.setCursor(0,2);
    lcd.print("2= -minuto ");
   // lcd.print(ma);
       
    int valor2=digitalRead(botao2);
   // if(valor2==LOW && ma!=0)
    if(valor2==LOW)
    {
        ma-=1;
    }

    int valor3=digitalRead(botao3);
   // if(valor3==LOW && ma!=0)
    if(valor3==LOW)
    {
        ma+=1;
    } 
    lcd.setCursor(0,3);
    lcd.print("3= SAIR ");
   int valor1=digitalRead(botao1);
    if(valor1==LOW)
    {
        set=0;
    } 
    }


void display(){
    lcd.clear();
    lcd.setCursor(1,0);
    if(se==1)
    {
     lcd.print("DOMINGO ");
    }
   
    if(se==2)
    {
     lcd.print("SEGUNDA ");
    }
     
    if(se==3)
    {
     lcd.print("TERCA   ");
    }
     
    if(se==4)
    {
     lcd.print("QUARTA  ");
    }
     
    if(se==5)
    {
     lcd.print("QUINTA  ");
    }
     
    if(se==6)
    {
     lcd.print("SEXTA    ");
    }
     
    if(se==7)
    {
     lcd.print("SABADO   ");
    }

    lcd.setCursor(6,1);
    if(hh<10)
    {
    lcd.print("0");
    }
    lcd.print(hh);
    if(mm<10)
    {
    lcd.print(":0");
    }
    if(mm>=10)
    {
    lcd.print(":");
    }
    lcd.print(mm);
    if(ss<10)
    {
    lcd.print(":0");
    }
    if(ss>=10)
    {
    lcd.print(":");
    }
    lcd.print(ss );
   
    lcd.setCursor(9,0);
    if(dd<10)
    {
    lcd.print("0");
    lcd.print(dd);
    }
    if(dd>=10)
    {
    lcd.print(dd);
    }
    if(ms<10)
    {
    lcd.print("/0");
    lcd.print(ms);
    }
    if(ms>=10)
    {
    lcd.print("/");
    lcd.print(ms);
    }
    lcd.print("/");
    lcd.print(aa );
       
    lcd.setCursor(0,3);
    if(al==1)
    {
    lcd.print("(al: ");
    if(ha<10)
    {
    lcd.print("0");
    }
    lcd.print(ha);
    if(ma<10)
    {
    lcd.print(":0");
    }
    if(ma>=10)
    {
    lcd.print(":");
    }
    lcd.print(ma);
    lcd.print(") ");
     
    if(bp==1)
    {
    lcd.setCursor(14,3);
    lcd.print("(beep)");
    }
    }
   

Comentários

Postagens mais visitadas deste blog

Amplificador de 6W para módulos PLL FM, usando transistores C1970 e C1971 - Versão final 04-04-2022

Amplificador de RF 350mW com BD135 para modulos pll

Antena dipolo para transmissores FM