a

Dependencies:   QEI RTC-DS1307 TextLCD mbed

main.cpp

Committer:
Hedizxom
Date:
2018-05-05
Revision:
1:cce4b697494d
Parent:
0:a800d044c724

File content as of revision 1:cce4b697494d:

#include "mbed.h"
#include "Rtc_Ds1307.h"
#include "TextLCD.h"
#include "QEI.h"

TextLCD lcd(PTD5, PTD7, PTD6, PTD4, PTD2, PTC9); // rs, e, d4-d7
Rtc_Ds1307 rtc(PTE0, PTE1);//Dato,Reloj
QEI encoder (PTC0, PTC4, NC, 624);
DigitalIn chan(PTD3);//btn
DigitalIn rlo(PTC3);
DigitalIn rl(PTC12);
DigitalOut ledr(PTE29);
DigitalOut buzz(PTA6);
char buffer[128];
int readptr = 0,segundos =0,cambio=0, diferencia=0,cont=0,pla=0,pla2=0,key=0;
int di=0,me=0,an=0,fle=0,mi=0,se=0;
long int jod=0;
int main() 
{
Rtc_Ds1307::Time_rtc tm = {};
ledr=1;
while(1){
sk:         if(pla==1)
            {
            buzz=0;
            ledr=1;
            jod=0;
            key=0;
            while(rlo==1){}
            lcd.cls();
            while(cont==0)
            {
            rtc.stopClock();
            lcd.locate(0,0);
            lcd.printf("(Day 1..31)");
            diferencia=encoder.getPulses()-cambio;
            cambio=encoder.getPulses();
            if(cambio<=1){cambio=1;}
            if(cambio>=31){cambio=31;}
            lcd.locate(0,1);
            lcd.printf("    ");
            lcd.locate(0,1);
            lcd.printf("%d",cambio);
            while(chan==0){encoder.reset();cont=1;}
            }
            tm.date=cambio;
            cambio=0;diferencia=0;
            while(cont==1)
            {            
            lcd.locate(0,0);
            lcd.printf("(month 1..12)");
            diferencia=encoder.getPulses()-cambio;
            cambio=encoder.getPulses();
            if(cambio<=1){cambio=1;}
            if(cambio>=12){cambio=12;}
            lcd.locate(0,1);
            lcd.printf("    ");
            lcd.locate(0,1);
            lcd.printf("%d",cambio);
            while(chan==0){encoder.reset();cont=2;}                  
            }
            tm.mon=cambio;
            cambio=0;diferencia=0;             
            while(cont==2)
            {            
            lcd.locate(0,0);
            lcd.printf("(year   0-99)");
            diferencia=encoder.getPulses()-cambio;
            cambio=encoder.getPulses();
            if(cambio<=0){cambio=0;}
            if(cambio>=99){cambio=99;}
            lcd.locate(0,1);
            lcd.printf("    ");
            lcd.locate(0,1);
            lcd.printf("%d",cambio);
            while(chan==0){encoder.reset();cont=3;}                  
            }
            tm.year=cambio+2000;
            cambio=0;diferencia=0;
            while(cont==3)
            {            
            lcd.locate(0,0);
            lcd.printf("(hours 0..23)");
            diferencia=encoder.getPulses()-cambio;
            cambio=encoder.getPulses();
            if(cambio<=0){cambio=0;}
            if(cambio>=23){cambio=23;}
            lcd.locate(0,1);
            lcd.printf("    ");
            lcd.locate(0,1);
            lcd.printf("%d",cambio);
            while(chan==0){encoder.reset();cont=4;cambio=cambio;}                  
            }
            tm.hour=cambio;
            cambio=0;diferencia=0;
            while(cont==4)
            {            
            lcd.locate(0,0);
            lcd.printf("(minutes 0..59)");
            diferencia=encoder.getPulses()-cambio;
            cambio=encoder.getPulses();
            if(cambio<=0){cambio=0;}
            if(cambio>=59){cambio=59;}
            lcd.locate(0,1);
            lcd.printf("    ");
            lcd.locate(0,1);
            lcd.printf("%d",cambio);
            while(chan==0){encoder.reset();cont=5;}                  
            }
            tm.min=cambio;
            cambio=0;diferencia=0;
            while(cont==5)
            {            
            lcd.locate(0,0);
            lcd.printf("(seconds 0..59)");
            diferencia=encoder.getPulses()-cambio;
            cambio=encoder.getPulses();
            if(cambio<=0){cambio=0;}
            if(cambio>=59){cambio=59;}
            lcd.locate(0,1);
            lcd.printf("    ");
            lcd.locate(0,1);
            lcd.printf("%d",cambio);
            while(chan==0){encoder.reset();cont=6;lcd.locate(0,0);lcd.printf("(              ");}                  
            }
            tm.sec=cambio;
            cambio=1;diferencia=1;
            while(cont==6)
            {            
            lcd.locate(0,0);
            lcd.printf("(sunday=1)");
            diferencia=encoder.getPulses()-cambio;
            cambio=encoder.getPulses();
            if(cambio<=1){cambio=1;}
            if(cambio>=7){cambio=7;}
            lcd.locate(0,1);
            lcd.printf("    ");
            lcd.locate(0,1);
            lcd.printf("%d",cambio);
            while(chan==0){encoder.reset();cont=7;}                  
            }
            tm.wday=cambio;
            cambio=0;diferencia=0;
            rtc.setTime(tm, false, false);
            rtc.startClock();
            pla=0;
            }
            cont=0;
            
sk2:         if(pla2==1)
            {
            buzz=0;
            ledr=1;
            jod=0;
            key=0;   
            while(rl==1){}
            lcd.cls();
            while(cont==0)
            {
            lcd.locate(0,0);
            lcd.printf("alm(Day 1..31)");
            diferencia=encoder.getPulses()-cambio;
            cambio=encoder.getPulses();
            if(cambio<=1){cambio=1;}
            if(cambio>=31){cambio=31;}
            lcd.locate(0,1);
            lcd.printf("    ");
            lcd.locate(0,1);
            lcd.printf("%d",cambio);
            while(chan==0){encoder.reset();cont=1;}
            }
            di=cambio;
            cambio=0;diferencia=0;
            while(cont==1)
            {            
            lcd.locate(0,0);
            lcd.printf("alm(month 1..12)");
            diferencia=encoder.getPulses()-cambio;
            cambio=encoder.getPulses();
            if(cambio<=1){cambio=1;}
            if(cambio>=12){cambio=12;}
            lcd.locate(0,1);
            lcd.printf("    ");
            lcd.locate(0,1);
            lcd.printf("%d",cambio);
            while(chan==0){encoder.reset();cont=2;}                  
            }
            me=cambio;
            cambio=0;diferencia=0;             
            while(cont==2)
            {            
            lcd.locate(0,0);
            lcd.printf("alm(year  0..99)");
            diferencia=encoder.getPulses()-cambio;
            cambio=encoder.getPulses();
            if(cambio<=0){cambio=0;}
            if(cambio>=99){cambio=99;}
            lcd.locate(0,1);
            lcd.printf("    ");
            lcd.locate(0,1);
            lcd.printf("%d",cambio);
            while(chan==0){encoder.reset();cont=3;}                  
            }
            an=cambio+2000;
            cambio=0;diferencia=0;
            while(cont==3)
            {            
            lcd.locate(0,0);
            lcd.printf("alm(hours 0..23)");
            diferencia=encoder.getPulses()-cambio;
            cambio=encoder.getPulses();
            if(cambio<=0){cambio=0;}
            if(cambio>=23){cambio=23;}
            lcd.locate(0,1);
            lcd.printf("    ");
            lcd.locate(0,1);
            lcd.printf("%d",cambio);
            while(chan==0){encoder.reset();cont=4;}                  
            }
            fle=cambio;
            cambio=0;diferencia=0;
            while(cont==4)
            {            
            lcd.locate(0,0);
            lcd.printf("alm(minutes 0..59)");
            diferencia=encoder.getPulses()-cambio;
            cambio=encoder.getPulses();
            if(cambio<=0){cambio=0;}
            if(cambio>=59){cambio=59;}
            lcd.locate(0,1);
            lcd.printf("    ");
            lcd.locate(0,1);
            lcd.printf("%d",cambio);
            while(chan==0){encoder.reset();cont=5;}                  
            }
            mi=cambio;
            cambio=0;diferencia=0;
            while(cont==5)
            {            
            lcd.locate(0,0);
            lcd.printf("alm(seconds 0..59)");
            diferencia=encoder.getPulses()-cambio;
            cambio=encoder.getPulses();
            if(cambio<=0){cambio=0;}
            if(cambio>=59){cambio=59;}
            lcd.locate(0,1);
            lcd.printf("    ");
            lcd.locate(0,1);
            lcd.printf("%d",cambio);
            while(chan==0){encoder.reset();cont=6;lcd.locate(0,0);lcd.printf("(              ");}                  
            }
            se=cambio;
            cambio=0;diferencia=0;
            pla2=0;
            }

            cont=0;
   cicl:        if (rtc.getTime(tm) ) {
                //pc.printf("The current time is : %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec);
                //pc.printf("The current date is : %s, %02d/%02d/%04d\n", rtc.weekdayToString(tm.wday), tm.mon, tm.date, tm.year);
                if(rlo==0){pla=1;goto sk;}
                if(rl==0){pla2=1;goto sk2;}     
                lcd.cls();
                lcd.locate(0,0);
                lcd.printf("%02d:%02d:%02d", tm.hour, tm.min, tm.sec);
                lcd.locate(0,1);
                lcd.printf("%s/%02d/%02d/%4d", rtc.weekdayToString(tm.wday), tm.date, tm.mon, tm.year);       
                if((tm.date==di)&&(tm.mon==me)&&(tm.year==an)&&(tm.hour==fle)&&(tm.min==mi)&&(tm.sec==se)){key=1;}
                while(key==1)
                    {
                        jod++;
                        ledr=0;buzz=1;
                        wait(0.5);
                        ledr=1;buzz=0;
                        wait(0.5);
                        if(chan!=1){key=0;jod=0;goto cicl;}
                        if(jod==7){key=0;mi=mi+1;if(mi==60){mi=0;fle=fle+1;if(fle==24){fle=0;di=di+1;if(di==31){di=1;me=me+1;if(me==12){me=1;an=an+1;}}}}jod=0;
    
                        }
                    }
                wait(0.2);
                goto cicl;
                }

         }
            


}