h

Dependencies:   QEI RTC-DS1307 TextLCD mbed

Committer:
Gambetica
Date:
Wed Nov 29 01:30:37 2017 +0000
Revision:
0:448768f23e05
h

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Gambetica 0:448768f23e05 1 // A continuación definimos las librerias necesarias para la ejecución de este programa
Gambetica 0:448768f23e05 2 #include "mbed.h"
Gambetica 0:448768f23e05 3 #include "Rtc_Ds1307.h" //Libreria para rtc
Gambetica 0:448768f23e05 4 #include "TextLCD.h"
Gambetica 0:448768f23e05 5 #include "DebouncedIn.h"
Gambetica 0:448768f23e05 6 #include "QEI.h"
Gambetica 0:448768f23e05 7 #include "debug.h"
Gambetica 0:448768f23e05 8
Gambetica 0:448768f23e05 9 //Pines para el rtc
Gambetica 0:448768f23e05 10 Rtc_Ds1307 rtc (PTE0,PTE1); //Definimos el DS1307
Gambetica 0:448768f23e05 11
Gambetica 0:448768f23e05 12 //PINES DEL ENCODER Y LCD
Gambetica 0:448768f23e05 13 TextLCD lcd(PTB8, PTB9,PTB10,PTB11,PTE2, PTE3); //Puertos LCD rs, e, d4, d5, d6, d7
Gambetica 0:448768f23e05 14 QEI Encoder (PTA1, PTA2, NC, 624); //Puertos de la tarjeta asignados para el Encoder
Gambetica 0:448768f23e05 15
Gambetica 0:448768f23e05 16 //Definicion del puerto serial
Gambetica 0:448768f23e05 17 //Serial pc(USBTX, USBRX, "pc"); //Definimos la cominucacion serial
Gambetica 0:448768f23e05 18
Gambetica 0:448768f23e05 19 DigitalOut led1(LED1); //led de cambio de posición
Gambetica 0:448768f23e05 20 DigitalOut led2(LED2); //led incremento de parámetros
Gambetica 0:448768f23e05 21 DigitalOut led3(LED3); //led decremento de parámetros
Gambetica 0:448768f23e05 22
Gambetica 0:448768f23e05 23 //BOTON DEL ENCODER
Gambetica 0:448768f23e05 24 DebouncedIn bot1(PTC17); //cambiar la posición
Gambetica 0:448768f23e05 25
Gambetica 0:448768f23e05 26 DebouncedIn P2(PTC13); //SET
Gambetica 0:448768f23e05 27
Gambetica 0:448768f23e05 28 char buffer[128];
Gambetica 0:448768f23e05 29 char buffer2[128];
Gambetica 0:448768f23e05 30 int readptr = 0;
Gambetica 0:448768f23e05 31 int readptr2 = 0;
Gambetica 0:448768f23e05 32 char c,c2;
Gambetica 0:448768f23e05 33 int Config;
Gambetica 0:448768f23e05 34 int dia1=0,hora1=0,minuto1=0,on1=0;
Gambetica 0:448768f23e05 35 int dia2=0,hora2=0,minuto2=0,on2=0;
Gambetica 0:448768f23e05 36 int dia3=0,hora3=0,minuto3=0,on3=0;
Gambetica 0:448768f23e05 37 int dia4=0,hora4=0,minuto4=0,on4=0;
Gambetica 0:448768f23e05 38 int dia5=0,hora5=0,minuto5=0,on5=0;
Gambetica 0:448768f23e05 39 int dia6=0,hora6=0,minuto6=0,on6=0;
Gambetica 0:448768f23e05 40 int dia7=0,hora7=0,minuto7=0,on7=0;
Gambetica 0:448768f23e05 41 int dialarm;
Gambetica 0:448768f23e05 42 int bandera=0;
Gambetica 0:448768f23e05 43 int C1=0x0E; // Muestra el cursor
Gambetica 0:448768f23e05 44 // 0x18; // desplazamiento izquierda
Gambetica 0:448768f23e05 45 // 0x1A; // desplazamiento derecha
Gambetica 0:448768f23e05 46 int C4=0x0C;
Gambetica 0:448768f23e05 47
Gambetica 0:448768f23e05 48 int AT=0;
Gambetica 0:448768f23e05 49 int i=0;
Gambetica 0:448768f23e05 50 int j=1;
Gambetica 0:448768f23e05 51 int M2;
Gambetica 0:448768f23e05 52 char Mm[30];
Gambetica 0:448768f23e05 53 char Dd[30];
Gambetica 0:448768f23e05 54 char Hh[30];
Gambetica 0:448768f23e05 55 char MIN[30];
Gambetica 0:448768f23e05 56 char SEG[30];
Gambetica 0:448768f23e05 57 int valor;
Gambetica 0:448768f23e05 58 int val;
Gambetica 0:448768f23e05 59 //------------------------------------------------------------------------------
Gambetica 0:448768f23e05 60 int a,d,d2,M,min,h,seg,b,k; // indice de la variable
Gambetica 0:448768f23e05 61 int YE=2015;
Gambetica 0:448768f23e05 62
Gambetica 0:448768f23e05 63 int p=0;
Gambetica 0:448768f23e05 64 int main() {
Gambetica 0:448768f23e05 65 Rtc_Ds1307::Time_rtc tm = {};
Gambetica 0:448768f23e05 66 led1=led2=led3=1;
Gambetica 0:448768f23e05 67 lcd.printf("ALARMAS");
Gambetica 0:448768f23e05 68 wait(1.5);
Gambetica 0:448768f23e05 69 lcd.cls();
Gambetica 0:448768f23e05 70
Gambetica 0:448768f23e05 71
Gambetica 0:448768f23e05 72
Gambetica 0:448768f23e05 73 //Inicio del ciclo
Gambetica 0:448768f23e05 74
Gambetica 0:448768f23e05 75 while(1) { if (bot1==0 && d==0 && M==0 && YE==2015 && h==0 && min==0 && seg==0)
Gambetica 0:448768f23e05 76 {AT=1;
Gambetica 0:448768f23e05 77 }
Gambetica 0:448768f23e05 78
Gambetica 0:448768f23e05 79 if (AT==1){
Gambetica 0:448768f23e05 80 if(p==1){
Gambetica 0:448768f23e05 81 lcd.cls(); //limpio la pantalla
Gambetica 0:448768f23e05 82 lcd.locate(5,1);
Gambetica 0:448768f23e05 83 lcd.printf("SET UP");
Gambetica 0:448768f23e05 84 wait(0.5);
Gambetica 0:448768f23e05 85 lcd.cls();
Gambetica 0:448768f23e05 86 p=2;
Gambetica 0:448768f23e05 87
Gambetica 0:448768f23e05 88 }
Gambetica 0:448768f23e05 89
Gambetica 0:448768f23e05 90
Gambetica 0:448768f23e05 91 if (p==2){
Gambetica 0:448768f23e05 92
Gambetica 0:448768f23e05 93 if (bot1.falling()) { //----------------- Aumenta de posición el cursor a la primera línea de menu
Gambetica 0:448768f23e05 94 led1=0;
Gambetica 0:448768f23e05 95 wait(.15);
Gambetica 0:448768f23e05 96 led1=1;
Gambetica 0:448768f23e05 97 ++a;
Gambetica 0:448768f23e05 98 }
Gambetica 0:448768f23e05 99 if (p==2){
Gambetica 0:448768f23e05 100 valor = Encoder.getPulses(); } //------------- Asigna el valor de los pulsos del encoder a una variable llamada "valor"
Gambetica 0:448768f23e05 101
Gambetica 0:448768f23e05 102
Gambetica 0:448768f23e05 103 switch(a) {
Gambetica 0:448768f23e05 104 case 0:
Gambetica 0:448768f23e05 105 lcd.printf("FECHA");
Gambetica 0:448768f23e05 106 wait(0.5);
Gambetica 0:448768f23e05 107 lcd.cls();
Gambetica 0:448768f23e05 108 break;
Gambetica 0:448768f23e05 109 //CONFIGURACION DE LA FECHA
Gambetica 0:448768f23e05 110 case 1:
Gambetica 0:448768f23e05 111
Gambetica 0:448768f23e05 112 //Dia
Gambetica 0:448768f23e05 113 tm.date = tm.date + valor; //------------- Asigna el valor del encoder al parámetro dia y tiene en cuenta el valor anterior
Gambetica 0:448768f23e05 114 Encoder.reset(); //------------- Resetea el valor del encoder
Gambetica 0:448768f23e05 115 if (tm.date<=0){
Gambetica 0:448768f23e05 116 tm.date=1; //------------- No se admite valores negativos
Gambetica 0:448768f23e05 117 }
Gambetica 0:448768f23e05 118 if (tm.date>31){ //Limito el valor del dia;
Gambetica 0:448768f23e05 119 tm.date=31;
Gambetica 0:448768f23e05 120 }
Gambetica 0:448768f23e05 121
Gambetica 0:448768f23e05 122 lcd.locate(2,0); //------------- Ubica e imprime el parámetro dia en la pantalla LCD
Gambetica 0:448768f23e05 123 lcd.printf("D",tm.date);
Gambetica 0:448768f23e05 124 lcd.locate(3,0);
Gambetica 0:448768f23e05 125 lcd.printf(":%d",tm.date);
Gambetica 0:448768f23e05 126 wait(0.15);
Gambetica 0:448768f23e05 127
Gambetica 0:448768f23e05 128 if (bot1.falling() && tm.date>0) { //--------------Aumenta de posición el cursor a la segunda línea de menu
Gambetica 0:448768f23e05 129 a=2;
Gambetica 0:448768f23e05 130 led1=0;
Gambetica 0:448768f23e05 131 wait(.15);
Gambetica 0:448768f23e05 132 led1=1;
Gambetica 0:448768f23e05 133 Encoder.reset(); //------------- Resetea el valor del encoder
Gambetica 0:448768f23e05 134 }
Gambetica 0:448768f23e05 135 break;
Gambetica 0:448768f23e05 136 //Mes
Gambetica 0:448768f23e05 137 case 2:
Gambetica 0:448768f23e05 138
Gambetica 0:448768f23e05 139 M = M + valor; //------------- Asigna el valor del encoder al parámetro mes y tiene en cuenta el valor anterior
Gambetica 0:448768f23e05 140 Encoder.reset(); //------------- Resetea el valor del encoder
Gambetica 0:448768f23e05 141 if (M<=0){
Gambetica 0:448768f23e05 142 M=1; //------------- No se admite valores negativos
Gambetica 0:448768f23e05 143 }
Gambetica 0:448768f23e05 144 if (M>12){M =12;} //Limito el valor de mes
Gambetica 0:448768f23e05 145 tm.mon=M;
Gambetica 0:448768f23e05 146 lcd.locate(10,0); //------------- Ubica e imprime el parámetro "mes" en la pantalla LCD
Gambetica 0:448768f23e05 147 lcd.printf("M",tm.mon);
Gambetica 0:448768f23e05 148 lcd.locate(11,0);
Gambetica 0:448768f23e05 149 lcd.printf(":%d",tm.mon);
Gambetica 0:448768f23e05 150 wait(0.15);
Gambetica 0:448768f23e05 151
Gambetica 0:448768f23e05 152 if (bot1.falling()&& M>=1 && tm.date>=1 ) { //--------------Aumenta de posición el cursor a la tercera línea de menu
Gambetica 0:448768f23e05 153
Gambetica 0:448768f23e05 154
Gambetica 0:448768f23e05 155 a=3;
Gambetica 0:448768f23e05 156 led1=0;
Gambetica 0:448768f23e05 157 wait(.15);
Gambetica 0:448768f23e05 158 led1=1;
Gambetica 0:448768f23e05 159 Encoder.reset(); //------------- Resetea el valor del encoder
Gambetica 0:448768f23e05 160 }
Gambetica 0:448768f23e05 161 break;
Gambetica 0:448768f23e05 162 //AÑO
Gambetica 0:448768f23e05 163 case 3:
Gambetica 0:448768f23e05 164
Gambetica 0:448768f23e05 165 YE = YE + valor; //------------- Asigna el valor del encoder al parámetro año y tiene en cuenta el valor anterior
Gambetica 0:448768f23e05 166 Encoder.reset(); //------------- Resetea el valor del encoder
Gambetica 0:448768f23e05 167 if (YE<2015){
Gambetica 0:448768f23e05 168 YE=2015; //------------- No se admite valores negativos
Gambetica 0:448768f23e05 169 }
Gambetica 0:448768f23e05 170 if (YE>2030){ YE=2030;} //Limito el valor de año
Gambetica 0:448768f23e05 171 tm.year=YE;
Gambetica 0:448768f23e05 172 lcd.locate(2,1); //------------- Ubica e imprime el parámetro "año" en la pantalla LCD
Gambetica 0:448768f23e05 173 lcd.printf("A",tm.year);
Gambetica 0:448768f23e05 174 lcd.locate(3,1);
Gambetica 0:448768f23e05 175 lcd.printf(":%d",tm.year);
Gambetica 0:448768f23e05 176 wait(0.15);
Gambetica 0:448768f23e05 177
Gambetica 0:448768f23e05 178 if (bot1.falling()&& tm.date>0 && M>0 && YE>2015) { //--------------Aumenta de posición el cursor a la cuarta línea de menu
Gambetica 0:448768f23e05 179
Gambetica 0:448768f23e05 180 a=4;
Gambetica 0:448768f23e05 181 led1=0;
Gambetica 0:448768f23e05 182 wait(.15);
Gambetica 0:448768f23e05 183 led1=1;
Gambetica 0:448768f23e05 184 Encoder.reset(); //------------- Resetea el valor del encoder
Gambetica 0:448768f23e05 185
Gambetica 0:448768f23e05 186 }
Gambetica 0:448768f23e05 187 break;
Gambetica 0:448768f23e05 188 case 4:
Gambetica 0:448768f23e05 189 lcd.cls();
Gambetica 0:448768f23e05 190 lcd.printf("HORA");
Gambetica 0:448768f23e05 191 wait(0.5);
Gambetica 0:448768f23e05 192 lcd.cls();
Gambetica 0:448768f23e05 193 if (bot1.falling()){
Gambetica 0:448768f23e05 194 a=5;
Gambetica 0:448768f23e05 195 }
Gambetica 0:448768f23e05 196 break;
Gambetica 0:448768f23e05 197 //Configuracion de la hora
Gambetica 0:448768f23e05 198 //HORA
Gambetica 0:448768f23e05 199 case 5:
Gambetica 0:448768f23e05 200
Gambetica 0:448768f23e05 201 h = h + valor; //------------- Asigna el valor del encoder al parámetro hora y tiene en cuenta el valor anterior
Gambetica 0:448768f23e05 202 Encoder.reset(); //------------- Resetea el valor del encoder
Gambetica 0:448768f23e05 203 if (h<0){
Gambetica 0:448768f23e05 204 h=0; //------------- No se admite valores negativos
Gambetica 0:448768f23e05 205 }
Gambetica 0:448768f23e05 206 if (h>23){ h=23;} //Limito el valor de hora
Gambetica 0:448768f23e05 207 tm.hour=h;
Gambetica 0:448768f23e05 208 lcd.locate(2,0); //------------- Ubica e imprime el parámetro "hora" en la pantalla LCD
Gambetica 0:448768f23e05 209 lcd.printf("h=",tm.hour);
Gambetica 0:448768f23e05 210 lcd.locate(3,0);
Gambetica 0:448768f23e05 211
Gambetica 0:448768f23e05 212 lcd.printf(":%d",tm.hour);
Gambetica 0:448768f23e05 213 wait(0.15);
Gambetica 0:448768f23e05 214
Gambetica 0:448768f23e05 215 if (bot1.falling()&& h>0 ) { //--------------Aumenta de posición el cursor a la cuarta línea de menu
Gambetica 0:448768f23e05 216 a=6;
Gambetica 0:448768f23e05 217 led1=0;
Gambetica 0:448768f23e05 218 wait(.15);
Gambetica 0:448768f23e05 219 led1=1;
Gambetica 0:448768f23e05 220 Encoder.reset(); //------------- Resetea el valor del encoder
Gambetica 0:448768f23e05 221 }
Gambetica 0:448768f23e05 222 break;
Gambetica 0:448768f23e05 223
Gambetica 0:448768f23e05 224 //Minutos
Gambetica 0:448768f23e05 225 case 6:
Gambetica 0:448768f23e05 226 min = min + valor; //------------- Asigna el valor del encoder al parámetro min y tiene en cuenta el valor anterior
Gambetica 0:448768f23e05 227 Encoder.reset(); //------------- Resetea el valor del encoder
Gambetica 0:448768f23e05 228 if (min<=0){
Gambetica 0:448768f23e05 229 min=0; //------------- No se admite valores negativos
Gambetica 0:448768f23e05 230 }
Gambetica 0:448768f23e05 231 if (min>61){
Gambetica 0:448768f23e05 232 min=60;}
Gambetica 0:448768f23e05 233 tm.min=min;
Gambetica 0:448768f23e05 234 lcd.locate(10,0); //------------- Ubica e imprime el parámetro "min" en la pantalla LCD
Gambetica 0:448768f23e05 235 lcd.printf("m",&tm.min);
Gambetica 0:448768f23e05 236 lcd.locate(11,0);
Gambetica 0:448768f23e05 237 lcd.printf(":%d",&tm.min);
Gambetica 0:448768f23e05 238 wait(0.15);
Gambetica 0:448768f23e05 239 if (bot1.falling()&& h>=0 && min>=0) { //--------------Aumenta de posición el cursor a la cuarta línea de menu
Gambetica 0:448768f23e05 240 a=7;
Gambetica 0:448768f23e05 241 led1=0;
Gambetica 0:448768f23e05 242 wait(.15);
Gambetica 0:448768f23e05 243 led1=1;
Gambetica 0:448768f23e05 244 Encoder.reset(); //------------- Resetea el valor del encoder
Gambetica 0:448768f23e05 245 }
Gambetica 0:448768f23e05 246 break;
Gambetica 0:448768f23e05 247 //Segundos
Gambetica 0:448768f23e05 248 case 7:
Gambetica 0:448768f23e05 249 seg = seg + valor; //------------- Asigna el valor del encoder al parámetro seg y tiene en cuenta el valor anterior
Gambetica 0:448768f23e05 250 Encoder.reset(); //------------- Resetea el valor del encoder
Gambetica 0:448768f23e05 251 if (seg<=0){
Gambetica 0:448768f23e05 252 seg=0; //------------- No se admite valores negativos
Gambetica 0:448768f23e05 253 }
Gambetica 0:448768f23e05 254 if (seg>61){
Gambetica 0:448768f23e05 255 seg=60;}
Gambetica 0:448768f23e05 256 tm.sec=seg;
Gambetica 0:448768f23e05 257 lcd.locate(2,1); //------------- Ubica e imprime el parámetro "seg" en la pantalla LCD
Gambetica 0:448768f23e05 258 lcd.printf("s",seg);
Gambetica 0:448768f23e05 259 lcd.locate(3,1);
Gambetica 0:448768f23e05 260 lcd.printf(":%d",&tm.sec);
Gambetica 0:448768f23e05 261 wait(0.15);
Gambetica 0:448768f23e05 262
Gambetica 0:448768f23e05 263 if (bot1.falling()&& h>=0 && min>=0 && seg>0) { //--------------Aumenta de posición el cursor a la cuarta línea de menu
Gambetica 0:448768f23e05 264
Gambetica 0:448768f23e05 265 a=8;
Gambetica 0:448768f23e05 266 led1=0;
Gambetica 0:448768f23e05 267 wait(.15);
Gambetica 0:448768f23e05 268 led1=1;
Gambetica 0:448768f23e05 269 p=3;
Gambetica 0:448768f23e05 270
Gambetica 0:448768f23e05 271 Encoder.reset(); //------------- Resetea el valor del encoder
Gambetica 0:448768f23e05 272 }
Gambetica 0:448768f23e05 273
Gambetica 0:448768f23e05 274
Gambetica 0:448768f23e05 275 if (p==3){
Gambetica 0:448768f23e05 276
Gambetica 0:448768f23e05 277 lcd.cls();
Gambetica 0:448768f23e05 278 //Fecha:
Gambetica 0:448768f23e05 279 lcd.locate(0,0);
Gambetica 0:448768f23e05 280 lcd.printf("F=%d/%d/%d",&tm.date,&tm.mon,&tm.year);
Gambetica 0:448768f23e05 281 //Hora
Gambetica 0:448768f23e05 282 lcd.locate(0,1);
Gambetica 0:448768f23e05 283 lcd.printf("H=%d:%d:%d",&tm.hour,&tm.min,&tm.sec);
Gambetica 0:448768f23e05 284
Gambetica 0:448768f23e05 285 }
Gambetica 0:448768f23e05 286
Gambetica 0:448768f23e05 287 }
Gambetica 0:448768f23e05 288
Gambetica 0:448768f23e05 289
Gambetica 0:448768f23e05 290
Gambetica 0:448768f23e05 291
Gambetica 0:448768f23e05 292
Gambetica 0:448768f23e05 293 }
Gambetica 0:448768f23e05 294 }
Gambetica 0:448768f23e05 295 }
Gambetica 0:448768f23e05 296
Gambetica 0:448768f23e05 297
Gambetica 0:448768f23e05 298
Gambetica 0:448768f23e05 299 }