.
Dependencies: Debounced QEI RTC-DS1307 TextLCD mbed
Fork of Reloj_alarma by
main.cpp
- Committer:
- alejom23
- Date:
- 2017-11-30
- Revision:
- 2:2f8b2690d757
- Parent:
- 1:0639f31dd59f
File content as of revision 2:2f8b2690d757:
#include "mbed.h" #include "DebouncedIn.h" #include "TextLCD.h" #include "QEI.h" #include "Rtc_Ds1307.h" TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5);// rs, e, d4-d7 Rtc_Ds1307 rtc(PTE0, PTE1); QEI wheel (PTA16, PTA17, NC, 48); DigitalOut led(PTE31); DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); DebouncedIn button_enco(PTC5); int C1=0x0C; int mes=0, dia=0, ano=0, hora=0,minuto=0,seg=0; int m; int Conf=0; // 0: Alarma y 1:Reloj int Lugar=0; // Definen el punto en el cual va el programa int i=0; int visual=0; int alarma=0; int j=0,k=0; int x=1; void pwr(); bool alarma_existe=false; bool control = false; int configurada=0; int d=0; int cabeceraL=9000; int cabeceraH=4555; int Tdescanso=500; int Tlow=630; int Thigh=1750; int duracion; //duracion de un pulso bajo int numb = 33; int code[65]; const unsigned pwrHY[]={575,548,548,575,549,549,575,548,1686,1686,1686,1687,1685,1687,549,1686, 1686,1686,576,548,549,576,549,549,576,549,1687,1687,1686,1686,1687,1686}; int main() { led1=1;led2=1;led3=1; Rtc_Ds1307::Time_rtc tm = {}; Rtc_Ds1307::Time_rtc Alarm[7] = {}; lcd.cls(); lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD lcd.locate(0,0); lcd.printf("--Alarma --Hora"); rtc.getTime(tm); while(1) { rtc.getTime(tm); if(alarma_existe==true){ while(x==1){ if((Alarm[k].date==tm.date && Alarm[k].mon==tm.mon && Alarm[k].year==tm.year && Alarm[k].hour==tm.hour && Alarm[k].min==tm.min && Alarm[k].sec==tm.sec)){ lcd.cls(); lcd.locate(0,0); led1=0;led2=0;led3=0; lcd.printf("Alarma Activada!"); lcd.locate(0,1); lcd.printf("Prendido"); control=true; while(d==0){ if(button_enco.falling()){ pwr(); x=0; lcd.cls(); lcd.locate(0,0); lcd.printf("--Alarma --Hora"); Lugar=0; i=0; led1=1;led2=1;led3=1; control = false; d=1; } } } if(k==j){ break; } k++; } k=0; } d=0; x=1; switch (Lugar) { case 0: m = wheel.getPulses(); if(m!=0 && Conf==0){ Conf=1; wheel.reset(); m=0; } if(m!=0 && Conf==1){ Conf=0; wheel.reset(); m=0; } if(Conf==0){ lcd.locate(11,0); lcd.printf("-"); lcd.locate(1,0); lcd.printf(">"); lcd.locate(0,1); wait(0.1); } if(Conf==1){ lcd.locate(1,0); lcd.printf("-"); lcd.locate(11,0); lcd.printf(">"); lcd.locate(0,1); wait(0.1); } if (button_enco.falling()){ Lugar++; m=0; } break; case 1: switch(i) { case 0: if(Conf==0 && j<6) { lcd.cls(); lcd.locate(0,0); lcd.printf("Config. Alarma "); wait(1); i++; m=0; lcd.cls(); lcd.locate(0,0); lcd.printf("Dia: "); dia=1; } if(Conf==0 && j==6) { j=0; while(j<7){ lcd.cls(); lcd.locate(0,0); lcd.printf("H: "); lcd.printf("%02d:",Alarm[j].hour); lcd.printf("%02d:",Alarm[j].min); lcd.printf("%02d",Alarm[j].sec); lcd.locate(0,1); lcd.printf("F: "); lcd.printf("%02d:",Alarm[j].date); lcd.printf("%02d:",Alarm[j].mon); lcd.printf("%02d",Alarm[j].year); wait(0.25); if(button_enco.falling()){ j++; } } Lugar=0; i=0; j=0; lcd.cls(); lcd.locate(0,0); lcd.printf("--Alarma --Hora"); } if(Conf==1 && configurada==0) { lcd.cls(); lcd.locate(0,0); lcd.printf("Config. hora "); wait(1); i++; m=0; lcd.cls(); lcd.locate(0,0); lcd.printf("Dia: "); //tm.date=1; } if(Conf==1 && configurada==1) { rtc.getTime(tm); lcd.cls(); lcd.locate(0,0); lcd.printf("H: "); lcd.printf("%02d:",tm.hour); lcd.printf("%02d:",tm.min); lcd.printf("%02d",tm.sec); lcd.locate(0,1); lcd.printf("F: "); lcd.printf("%02d:",tm.date); lcd.printf("%02d:",tm.mon); lcd.printf("%02d",tm.year); wait(0.25); if(button_enco.falling()){ Lugar=0; i=0; } lcd.cls(); lcd.locate(0,0); lcd.printf("--Alarma --Hora"); } break; case 1: if(Conf==1){ m=wheel.getPulses(); if (m!=0) { dia=dia+m; if(dia>31) { dia=31; } if(dia<1) { dia=1; } wheel.reset(); m=0; } lcd.locate(5,0); lcd.printf("%02d",dia); } if(Conf==0){ m=wheel.getPulses(); if (m!=0) { dia = dia + m; if(dia>31) { dia=31; } if(dia<1) { dia=1; } wheel.reset(); m=0; } lcd.locate(5,0); lcd.printf("%02d",dia); } if (button_enco.falling()) { i++; m=0; lcd.cls(); lcd.locate(0,0); lcd.printf("Mes: "); //tm.mon=1; } break; case 2: m=wheel.getPulses(); if(Conf==1){ if (m!=0) { mes=mes+m; if(mes>12) { mes=12; } if(mes<1) { mes=1; } wheel.reset(); m=0; } lcd.locate(5,0); lcd.printf("%02d",mes); } if(Conf==0){ if (m!=0) { mes=mes+m; if(mes>12) { mes=12; } if(mes<1) { mes=1; } wheel.reset(); m=0; } lcd.locate(5,0); lcd.printf("%02d",mes); } if (button_enco.falling()) { i++; m=0; lcd.cls(); lcd.locate(0,0); lcd.printf("Year: "); //tm.year=2000; } break; case 3: m=wheel.getPulses(); if(Conf==1){ if (m!=0) { ano=ano+m; if(ano<2000) { ano=2000; } wheel.reset(); m=0; } lcd.locate(6,0); lcd.printf("%02d",ano); } if(Conf==0){ if (m!=0) { ano=ano + m; if(ano<2000) { ano=2000; } wheel.reset(); m=0; } lcd.locate(6,0); lcd.printf("%02d",ano); } if (button_enco.falling()) { i++; m=0; lcd.cls(); lcd.locate(0,0); lcd.printf("Hora: "); //tm.hour=5; } break; case 4: m=wheel.getPulses(); if(Conf==1){ if (m!=0) { hora=hora+ m; if(hora>23) { hora=23; } if(hora<0) { hora=0; } wheel.reset(); m=0; } lcd.locate(6,0); lcd.printf("%02d",hora); } if(Conf==0){ if (m!=0) { hora=hora + m; if(hora>23) { hora=23; } if(hora<0) { hora=0; } wheel.reset(); m=0; } lcd.locate(6,0); lcd.printf("%02d",hora); } if (button_enco.falling()) { i++; m=0; lcd.cls(); lcd.locate(0,0); lcd.printf("Minuto: "); //tm.min=0; } break; case 5: m=wheel.getPulses(); if(Conf==1){ if (m!=0) { minuto=minuto+m; if(minuto>59) { minuto=59; } if(minuto<0) { minuto=0; } wheel.reset(); m=0; } lcd.locate(8,0); lcd.printf("%02d",minuto); } if(Conf==0){ if (m!=0) { minuto=minuto+m; if(minuto>59) { minuto=59; } if(minuto<0) { minuto=0; } wheel.reset(); m=0; } lcd.locate(8,0); lcd.printf("%02d",minuto); } if (button_enco.falling()) { i++; m=0; lcd.cls(); lcd.locate(0,0); lcd.printf("Segundo: "); //tm.sec=0; } break; case 6: m=wheel.getPulses(); if(Conf==1){ if (m!=0) { seg=seg+m; if(seg>59) { seg=59; } if(seg<0) { seg=0; } wheel.reset(); m=0; } lcd.locate(9,0); lcd.printf("%02d",seg); } if(Conf==0){ if (m!=0) { seg=seg+m; if(seg>59) { seg=59; } if(seg<0) { seg=0; } wheel.reset(); m=0; } lcd.locate(9,0); lcd.printf("%02d",seg); } if (button_enco.falling()) { /////////////////// if(Conf==0) { lcd.cls(); lcd.locate(0,0); lcd.printf("Alarma config. "); wait(1); i=0; m=0; Lugar=0; lcd.cls(); alarma_existe=true; Alarm[j].year=ano; Alarm[j].mon=mes; Alarm[j].date=dia; Alarm[j].min=minuto; Alarm[j].sec=seg; Alarm[j].hour=hora; j++; lcd.cls(); lcd.locate(0,0); lcd.printf("--Alarma --Hora"); } if(Conf==1) { tm.year=ano; tm.mon=mes; tm.date=dia; tm.min=minuto; tm.sec=seg; tm.hour=hora; rtc.setTime(tm, false, false); rtc.startClock(); lcd.cls(); lcd.locate(0,0); lcd.printf("Hora Config. "); wait(1); i=0; m=0; configurada=1; Lugar=0; lcd.locate(0,0); lcd.printf("--Alarma --Hora"); } /////////////////// } break; } } } } int descanso(int duracion){ Timer t; t.reset(); t.start(); while(1) { led=1; wait_us(8); led=0; led=0; wait_us(9); if(t.read_us() > duracion) return 0; } } int sendcode(int numb, int *code, int cabeceraL, int cabeceraH, int Tdescanso, int Tlow, int Thigh) { led=0; wait_ms(100); descanso(cabeceraL); wait_us(cabeceraH); for(i=0;i<numb;i++){ if (code[i]>1000){ led=1; descanso(Tdescanso); wait_us(Thigh); } if (code[i]<1000){ led=0; descanso(Tdescanso); wait_us(Tlow); } } descanso(Tdescanso); return 0; } void pwr(){ for(i=0;i<numb;i++){ code[i]=pwrHY[i]; } sendcode(numb,code,cabeceraL, cabeceraH, Tdescanso, Tlow, Thigh); } //**************************** void repeat(){ wait_ms(42); descanso(8800); wait_us(2240); descanso(560); }