h
Dependencies: QEI RTC-DS1307 TextLCD mbed
Diff: main.cpp
- Revision:
- 0:448768f23e05
diff -r 000000000000 -r 448768f23e05 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Nov 29 01:30:37 2017 +0000 @@ -0,0 +1,299 @@ +// 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); + + } + + } + + + + + + } + } + } + + + +} \ No newline at end of file