h
Dependencies: QEI RTC-DS1307 TextLCD mbed
main.cpp
- Committer:
- Gambetica
- Date:
- 2017-11-29
- Revision:
- 0:448768f23e05
File content as of revision 0:448768f23e05:
// A continuación definimos las librerias necesarias para la ejecución de este programa #include "mbed.h" #include "Rtc_Ds1307.h" //Libreria para rtc #include "TextLCD.h" #include "DebouncedIn.h" #include "QEI.h" #include "debug.h" //Pines para el rtc Rtc_Ds1307 rtc (PTE0,PTE1); //Definimos el DS1307 //PINES DEL ENCODER Y LCD TextLCD lcd(PTB8, PTB9,PTB10,PTB11,PTE2, PTE3); //Puertos LCD rs, e, d4, d5, d6, d7 QEI Encoder (PTA1, PTA2, NC, 624); //Puertos de la tarjeta asignados para el Encoder //Definicion del puerto serial //Serial pc(USBTX, USBRX, "pc"); //Definimos la cominucacion serial DigitalOut led1(LED1); //led de cambio de posición DigitalOut led2(LED2); //led incremento de parámetros DigitalOut led3(LED3); //led decremento de parámetros //BOTON DEL ENCODER DebouncedIn bot1(PTC17); //cambiar la posición DebouncedIn P2(PTC13); //SET char buffer[128]; char buffer2[128]; int readptr = 0; int readptr2 = 0; char c,c2; int Config; int dia1=0,hora1=0,minuto1=0,on1=0; int dia2=0,hora2=0,minuto2=0,on2=0; int dia3=0,hora3=0,minuto3=0,on3=0; int dia4=0,hora4=0,minuto4=0,on4=0; int dia5=0,hora5=0,minuto5=0,on5=0; int dia6=0,hora6=0,minuto6=0,on6=0; int dia7=0,hora7=0,minuto7=0,on7=0; int dialarm; int bandera=0; int C1=0x0E; // Muestra el cursor // 0x18; // desplazamiento izquierda // 0x1A; // desplazamiento derecha int C4=0x0C; int AT=0; int i=0; int j=1; int M2; char Mm[30]; char Dd[30]; char Hh[30]; char MIN[30]; char SEG[30]; int valor; int val; //------------------------------------------------------------------------------ int a,d,d2,M,min,h,seg,b,k; // indice de la variable int YE=2015; int p=0; int main() { Rtc_Ds1307::Time_rtc tm = {}; led1=led2=led3=1; lcd.printf("ALARMAS"); wait(1.5); lcd.cls(); //Inicio del ciclo while(1) { if (bot1==0 && d==0 && M==0 && YE==2015 && h==0 && min==0 && seg==0) {AT=1; } if (AT==1){ if(p==1){ lcd.cls(); //limpio la pantalla lcd.locate(5,1); lcd.printf("SET UP"); wait(0.5); lcd.cls(); p=2; } if (p==2){ if (bot1.falling()) { //----------------- Aumenta de posición el cursor a la primera línea de menu led1=0; wait(.15); led1=1; ++a; } if (p==2){ valor = Encoder.getPulses(); } //------------- Asigna el valor de los pulsos del encoder a una variable llamada "valor" switch(a) { case 0: lcd.printf("FECHA"); wait(0.5); lcd.cls(); break; //CONFIGURACION DE LA FECHA case 1: //Dia tm.date = tm.date + valor; //------------- Asigna el valor del encoder al parámetro dia y tiene en cuenta el valor anterior Encoder.reset(); //------------- Resetea el valor del encoder if (tm.date<=0){ tm.date=1; //------------- No se admite valores negativos } if (tm.date>31){ //Limito el valor del dia; tm.date=31; } lcd.locate(2,0); //------------- Ubica e imprime el parámetro dia en la pantalla LCD lcd.printf("D",tm.date); lcd.locate(3,0); lcd.printf(":%d",tm.date); wait(0.15); if (bot1.falling() && tm.date>0) { //--------------Aumenta de posición el cursor a la segunda línea de menu a=2; led1=0; wait(.15); led1=1; Encoder.reset(); //------------- Resetea el valor del encoder } break; //Mes case 2: M = M + valor; //------------- Asigna el valor del encoder al parámetro mes y tiene en cuenta el valor anterior Encoder.reset(); //------------- Resetea el valor del encoder if (M<=0){ M=1; //------------- No se admite valores negativos } if (M>12){M =12;} //Limito el valor de mes tm.mon=M; lcd.locate(10,0); //------------- Ubica e imprime el parámetro "mes" en la pantalla LCD lcd.printf("M",tm.mon); lcd.locate(11,0); lcd.printf(":%d",tm.mon); wait(0.15); if (bot1.falling()&& M>=1 && tm.date>=1 ) { //--------------Aumenta de posición el cursor a la tercera línea de menu a=3; led1=0; wait(.15); led1=1; Encoder.reset(); //------------- Resetea el valor del encoder } break; //AÑO case 3: YE = YE + valor; //------------- Asigna el valor del encoder al parámetro año y tiene en cuenta el valor anterior Encoder.reset(); //------------- Resetea el valor del encoder if (YE<2015){ YE=2015; //------------- No se admite valores negativos } if (YE>2030){ YE=2030;} //Limito el valor de año tm.year=YE; lcd.locate(2,1); //------------- Ubica e imprime el parámetro "año" en la pantalla LCD lcd.printf("A",tm.year); lcd.locate(3,1); lcd.printf(":%d",tm.year); wait(0.15); if (bot1.falling()&& tm.date>0 && M>0 && YE>2015) { //--------------Aumenta de posición el cursor a la cuarta línea de menu a=4; led1=0; wait(.15); led1=1; Encoder.reset(); //------------- Resetea el valor del encoder } break; case 4: lcd.cls(); lcd.printf("HORA"); wait(0.5); lcd.cls(); if (bot1.falling()){ a=5; } break; //Configuracion de la hora //HORA case 5: h = h + valor; //------------- Asigna el valor del encoder al parámetro hora y tiene en cuenta el valor anterior Encoder.reset(); //------------- Resetea el valor del encoder if (h<0){ h=0; //------------- No se admite valores negativos } if (h>23){ h=23;} //Limito el valor de hora tm.hour=h; lcd.locate(2,0); //------------- Ubica e imprime el parámetro "hora" en la pantalla LCD lcd.printf("h=",tm.hour); lcd.locate(3,0); lcd.printf(":%d",tm.hour); wait(0.15); if (bot1.falling()&& h>0 ) { //--------------Aumenta de posición el cursor a la cuarta línea de menu a=6; led1=0; wait(.15); led1=1; Encoder.reset(); //------------- Resetea el valor del encoder } break; //Minutos case 6: min = min + valor; //------------- Asigna el valor del encoder al parámetro min y tiene en cuenta el valor anterior Encoder.reset(); //------------- Resetea el valor del encoder if (min<=0){ min=0; //------------- No se admite valores negativos } if (min>61){ min=60;} tm.min=min; lcd.locate(10,0); //------------- Ubica e imprime el parámetro "min" en la pantalla LCD lcd.printf("m",&tm.min); lcd.locate(11,0); lcd.printf(":%d",&tm.min); wait(0.15); if (bot1.falling()&& h>=0 && min>=0) { //--------------Aumenta de posición el cursor a la cuarta línea de menu a=7; led1=0; wait(.15); led1=1; Encoder.reset(); //------------- Resetea el valor del encoder } break; //Segundos case 7: seg = seg + valor; //------------- Asigna el valor del encoder al parámetro seg y tiene en cuenta el valor anterior Encoder.reset(); //------------- Resetea el valor del encoder if (seg<=0){ seg=0; //------------- No se admite valores negativos } if (seg>61){ seg=60;} tm.sec=seg; lcd.locate(2,1); //------------- Ubica e imprime el parámetro "seg" en la pantalla LCD lcd.printf("s",seg); lcd.locate(3,1); lcd.printf(":%d",&tm.sec); wait(0.15); if (bot1.falling()&& h>=0 && min>=0 && seg>0) { //--------------Aumenta de posición el cursor a la cuarta línea de menu a=8; led1=0; wait(.15); led1=1; p=3; Encoder.reset(); //------------- Resetea el valor del encoder } if (p==3){ lcd.cls(); //Fecha: lcd.locate(0,0); lcd.printf("F=%d/%d/%d",&tm.date,&tm.mon,&tm.year); //Hora lcd.locate(0,1); lcd.printf("H=%d:%d:%d",&tm.hour,&tm.min,&tm.sec); } } } } } }