Reloj con alarma programado por enconder. Luna es gay

Dependencies:   mbed QEI Debounced ds3231 TextLCD RTC-DS1307 Pulse1

Committer:
diavad
Date:
Tue Aug 13 19:25:23 2019 +0000
Revision:
0:fd394f5c0449
Modulo Reloj DS3231, con alarmas, configurado por encoder y entradas de sensor IRDA

Who changed what in which revision?

UserRevisionLine numberNew contents of line
diavad 0:fd394f5c0449 1 #include <stdio.h>
diavad 0:fd394f5c0449 2 #include <string.h>
diavad 0:fd394f5c0449 3 #include <stdlib.h>
diavad 0:fd394f5c0449 4 #include "mbed.h"
diavad 0:fd394f5c0449 5 #include "DebouncedIn.h"
diavad 0:fd394f5c0449 6 #include "TextLCD.h"
diavad 0:fd394f5c0449 7 #include "QEI.h"
diavad 0:fd394f5c0449 8 #include "ds3231.h"
diavad 0:fd394f5c0449 9 #include "Rtc_Ds1307.h"
diavad 0:fd394f5c0449 10 #include "string.h"
diavad 0:fd394f5c0449 11 #include <Pulse1.h>
diavad 0:fd394f5c0449 12 #define ESC 0x1B
diavad 0:fd394f5c0449 13
diavad 0:fd394f5c0449 14 ///////////////////////////////// LIB LCD
diavad 0:fd394f5c0449 15 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
diavad 0:fd394f5c0449 16 // Se debe conectar Vss a GND; VDD a 5V; V0 a pot con otro lado conectado a GND
diavad 0:fd394f5c0449 17 // El puerto A va hacia una resistencia de 200 hom a 5 V
diavad 0:fd394f5c0449 18 // EL puerto K va a GND
diavad 0:fd394f5c0449 19
diavad 0:fd394f5c0449 20 Serial pc(USBTX, USBRX);
diavad 0:fd394f5c0449 21 ///////////////////////////////// LIB RELOJ 3231
diavad 0:fd394f5c0449 22 //Ds3231 rtc(PTE0, PTE1); // SDA SCL
diavad 0:fd394f5c0449 23
diavad 0:fd394f5c0449 24 Rtc_Ds1307 rtc(PTE0, PTE1);//SCL,SDA
diavad 0:fd394f5c0449 25 Rtc_Ds1307::Time_rtc tm = {};
diavad 0:fd394f5c0449 26 time_t epoch_time;
diavad 0:fd394f5c0449 27 ///////////////////////////////// LIB Encoder
diavad 0:fd394f5c0449 28
diavad 0:fd394f5c0449 29 QEI wheel (PTD7, PTD6, NC, 50);
diavad 0:fd394f5c0449 30 DebouncedIn button_enco(PTC5);
diavad 0:fd394f5c0449 31 int EncoderInput;
diavad 0:fd394f5c0449 32 int EncoderBoton;
diavad 0:fd394f5c0449 33 ////////////////////////////////// Sensor IRDA
diavad 0:fd394f5c0449 34 PulseInOut irda(PTD5);// en este puerto se pone el sensor infrarrojo
diavad 0:fd394f5c0449 35 BusOut leds(LED1,LED2,LED3);
diavad 0:fd394f5c0449 36 int IRDAInput;
diavad 0:fd394f5c0449 37 int IRDAOpcion;
diavad 0:fd394f5c0449 38 /////////////////////////////////////////// Declarar Variables globales
diavad 0:fd394f5c0449 39 int OpcionMenu;
diavad 0:fd394f5c0449 40
diavad 0:fd394f5c0449 41
diavad 0:fd394f5c0449 42 void ImprimirHora(){
diavad 0:fd394f5c0449 43 int Hora=0;
diavad 0:fd394f5c0449 44 while(Hora==0){
diavad 0:fd394f5c0449 45 lcd.cls();
diavad 0:fd394f5c0449 46 Rtc_Ds1307::Time_rtc tm = {};
diavad 0:fd394f5c0449 47 rtc.getTime(tm);
diavad 0:fd394f5c0449 48 lcd.locate(0,0);
diavad 0:fd394f5c0449 49 lcd.printf("Hora :");
diavad 0:fd394f5c0449 50 lcd.locate(7,0);
diavad 0:fd394f5c0449 51 lcd.printf("%02d:",tm.hour);
diavad 0:fd394f5c0449 52 lcd.printf("%02d:",tm.min);
diavad 0:fd394f5c0449 53 lcd.printf("%02d",tm.sec);
diavad 0:fd394f5c0449 54 lcd.locate(0,1);
diavad 0:fd394f5c0449 55 lcd.printf("BY Procesadores ");
diavad 0:fd394f5c0449 56 wait_ms(100);
diavad 0:fd394f5c0449 57 if(button_enco.falling()){
diavad 0:fd394f5c0449 58 Hora=1;
diavad 0:fd394f5c0449 59 }
diavad 0:fd394f5c0449 60 //epoch_time = rtc.get_epoch();
diavad 0:fd394f5c0449 61 //lcd.cls();
diavad 0:fd394f5c0449 62 //lcd.locate(0,0);
diavad 0:fd394f5c0449 63 //lcd.printf(" CLK %s", ctime(&epoch_time));
diavad 0:fd394f5c0449 64 }
diavad 0:fd394f5c0449 65 }
diavad 0:fd394f5c0449 66
diavad 0:fd394f5c0449 67
diavad 0:fd394f5c0449 68 int LeerEncoder(){
diavad 0:fd394f5c0449 69 wheel.reset();
diavad 0:fd394f5c0449 70 int Valor=0;
diavad 0:fd394f5c0449 71 while(Valor==0){
diavad 0:fd394f5c0449 72 EncoderInput=wheel.getPulses();
diavad 0:fd394f5c0449 73 lcd.cls();
diavad 0:fd394f5c0449 74 lcd.locate(0,0);
diavad 0:fd394f5c0449 75 lcd.printf("Leyendo Encoder");
diavad 0:fd394f5c0449 76 lcd.locate(0,5);
diavad 0:fd394f5c0449 77 lcd.printf("Val : %i",wheel.getPulses());
diavad 0:fd394f5c0449 78 if(button_enco.falling()){
diavad 0:fd394f5c0449 79 EncoderBoton=1;
diavad 0:fd394f5c0449 80 EncoderInput=wheel.getPulses();
diavad 0:fd394f5c0449 81 pc.printf("Boton %i\n", wheel.getPulses());
diavad 0:fd394f5c0449 82 Valor=1;
diavad 0:fd394f5c0449 83 }
diavad 0:fd394f5c0449 84 wait_ms(50);
diavad 0:fd394f5c0449 85 }
diavad 0:fd394f5c0449 86 return EncoderInput;
diavad 0:fd394f5c0449 87 }
diavad 0:fd394f5c0449 88
diavad 0:fd394f5c0449 89 void LeerIRDA(){
diavad 0:fd394f5c0449 90 //////////////////////// Declaro Variables
diavad 0:fd394f5c0449 91
diavad 0:fd394f5c0449 92 int header =0; //tiempo de cabecera pulso abajo
diavad 0:fd394f5c0449 93 const int head_H = 10884; //+20% medida con osciloscopio en microsegundos
diavad 0:fd394f5c0449 94 const int head_L = 7256;//-20% medida con osciloscopio
diavad 0:fd394f5c0449 95 int i=0;
diavad 0:fd394f5c0449 96 const int T_alto=1570;//ponga su tiempo de la prueba
diavad 0:fd394f5c0449 97 const int T_bajo=467;//ponga su tiempo de la prueba
diavad 0:fd394f5c0449 98 const int num_bits = 32;//ponga su numero de bits
diavad 0:fd394f5c0449 99 int num[num_bits];//cadena para almacenar todos los tiempos que conforman los bits de datos
diavad 0:fd394f5c0449 100 int sec[num_bits];//cadena para almacenar la cadena codificada en binario 00100000110111111000100001110111
diavad 0:fd394f5c0449 101 int boton1[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,1,1,0,1,1,0}; //00100000110111111000100001110110 Boton 1
diavad 0:fd394f5c0449 102 int boton2[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,0,1,1,0,1,1,0}; //00100000110111110100100010110110 Boton 2
diavad 0:fd394f5c0449 103 int boton3[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,1,0,1,1,0}; //00100000110111111100100000110110 Boton 3
diavad 0:fd394f5c0449 104 int boton4[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,0,1,0,0,0,1,1,0,1,0,1,1,0}; //00100000110111110010100011010110 Boton 4
diavad 0:fd394f5c0449 105 int boton5[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,0,1,0,1,0,0,0,0,1,0,1,0,1,1,0}; //00100000110111111010100001010110 Boton 5
diavad 0:fd394f5c0449 106 int boton6[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,0,1,1,0,1,0,0,0,1,0,0,1,0,1,1,0}; //00100000110111110110100010010110 Boton 6
diavad 0:fd394f5c0449 107 int boton7[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,0}; //00100000110111111110100000010110 Boton 7
diavad 0:fd394f5c0449 108 int boton8[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,0,1,1,0,0,0,1,1,1,0,0,1,1,0}; //00100000110111110001100011100110 Boton 8
diavad 0:fd394f5c0449 109 int boton9[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,0,0,1,1,0,0,0,0,1,1,0,0,1,1,0}; //00100000110111111001100001100110 Boton 9
diavad 0:fd394f5c0449 110 int boton0[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,0,1,1,0}; //00100000110111110000100011110110 Boton 0
diavad 0:fd394f5c0449 111 int botonEnt[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,0,0,0,1,0,1,1,0,1,1,1,0,0}; //00100000110111110010001011011100 Boton Ent
diavad 0:fd394f5c0449 112 int botonIzq[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,0}; //00100000110111111110000000011110 Boton Izq
diavad 0:fd394f5c0449 113 int botonDer[]= {0,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,0,1,1,0,0,0,0,0,1,0,0,1,1,1,1,0}; //00100000110111110110000010011110 Boton Der
diavad 0:fd394f5c0449 114
diavad 0:fd394f5c0449 115
diavad 0:fd394f5c0449 116 int flag1,flag2,flag3,flag4,flag5,flag6,flag7,flag8,flag9,flag0,flagEnt,flagIzq,flagDer; //Banderas de boton presionado
diavad 0:fd394f5c0449 117 int dato; // tiempo de cada dato que se lee
diavad 0:fd394f5c0449 118 int LeerIRDA=1;
diavad 0:fd394f5c0449 119 //////////////////////////////////////////////////////// Funcion leer datos IRDA
diavad 0:fd394f5c0449 120
diavad 0:fd394f5c0449 121
diavad 0:fd394f5c0449 122 leds = 1; // Color en LED Azul
diavad 0:fd394f5c0449 123
diavad 0:fd394f5c0449 124 lcd.locate(0,0);
diavad 0:fd394f5c0449 125 while(LeerIRDA==1)
diavad 0:fd394f5c0449 126 {
diavad 0:fd394f5c0449 127 ini1:
diavad 0:fd394f5c0449 128 pc.printf("Esperando entrada control remoto: \n");
diavad 0:fd394f5c0449 129 header=0;
diavad 0:fd394f5c0449 130 header = irda.read_low_us(); //funcion para leer un pulso de caida o bajo
diavad 0:fd394f5c0449 131 if (header > head_L && header < head_H) goto seguir;//verificar que este en la tolerancia +-20%
diavad 0:fd394f5c0449 132 else goto ini1;
diavad 0:fd394f5c0449 133
diavad 0:fd394f5c0449 134 seguir:
diavad 0:fd394f5c0449 135 //leo los datos de la trama y se meten a un arreglo
diavad 0:fd394f5c0449 136 wait_us(2000);
diavad 0:fd394f5c0449 137 for(i=0; i<(num_bits-1); ++i) // POR OSCILOSCOPIO se determina que llegan (num_bits),datos
diavad 0:fd394f5c0449 138 {
diavad 0:fd394f5c0449 139 dato = irda.read_high_us(); //leer un bit de datos que es pulso arriba en este control
diavad 0:fd394f5c0449 140 num[i]=dato;
diavad 0:fd394f5c0449 141 wait_us(332);
diavad 0:fd394f5c0449 142 }
diavad 0:fd394f5c0449 143 //wait(0.5); //espero un poquito antes de leer todo el arreglo y ponerlo en pantalla
diavad 0:fd394f5c0449 144 pc.printf(",%d",header);
diavad 0:fd394f5c0449 145 for(i=0; i<num_bits; ++i)
diavad 0:fd394f5c0449 146 {
diavad 0:fd394f5c0449 147 pc.printf(",%d",num[i]);
diavad 0:fd394f5c0449 148 }
diavad 0:fd394f5c0449 149 //wait(0.1); //espero e imprimo en binario
diavad 0:fd394f5c0449 150 pc.printf("\n\n");
diavad 0:fd394f5c0449 151 for(i=0; i<num_bits; ++i)
diavad 0:fd394f5c0449 152 {
diavad 0:fd394f5c0449 153 if(num[i] > ((T_alto+T_bajo)/2))
diavad 0:fd394f5c0449 154 {
diavad 0:fd394f5c0449 155 pc.printf("1");
diavad 0:fd394f5c0449 156 sec[i]=1; // guardo la secuancia en binario
diavad 0:fd394f5c0449 157 }
diavad 0:fd394f5c0449 158 else
diavad 0:fd394f5c0449 159 {
diavad 0:fd394f5c0449 160 sec[i]=0; //guardo la secuencia en binario
diavad 0:fd394f5c0449 161 pc.printf("0");
diavad 0:fd394f5c0449 162 }
diavad 0:fd394f5c0449 163 }
diavad 0:fd394f5c0449 164
diavad 0:fd394f5c0449 165 flag1=1;flag4=1;flag7=1;flag0=1;flagDer=1;
diavad 0:fd394f5c0449 166 flag2=1;flag5=1;flag8=1;flagEnt=1;
diavad 0:fd394f5c0449 167 flag3=1;flag6=1;flag9=1;flagIzq=1;
diavad 0:fd394f5c0449 168
diavad 0:fd394f5c0449 169 for(i=0; i<32; ++i)
diavad 0:fd394f5c0449 170 {
diavad 0:fd394f5c0449 171 if(sec[i]!=boton1[i]) //en caso de que un bit no coincida se descarta el boton 1
diavad 0:fd394f5c0449 172 {
diavad 0:fd394f5c0449 173 //pc.printf("NO Presionaste 1");
diavad 0:fd394f5c0449 174 flag1=0;
diavad 0:fd394f5c0449 175 }
diavad 0:fd394f5c0449 176 if(sec[i]!=boton2[i]) //en caso de que un bit no coincida se descarta el boton 2
diavad 0:fd394f5c0449 177 {
diavad 0:fd394f5c0449 178 //pc.printf("NO Presionaste 2");
diavad 0:fd394f5c0449 179 flag2=0;
diavad 0:fd394f5c0449 180 }
diavad 0:fd394f5c0449 181 if(sec[i]!=boton3[i]) //en caso de que un bit no coincida se descarta el boton 3
diavad 0:fd394f5c0449 182 {
diavad 0:fd394f5c0449 183 //pc.printf("NO Presionaste 3");
diavad 0:fd394f5c0449 184 flag3=0;
diavad 0:fd394f5c0449 185 }
diavad 0:fd394f5c0449 186 if(sec[i]!=boton4[i]) //en caso de que un bit no coincida se descarta el boton 3
diavad 0:fd394f5c0449 187 {
diavad 0:fd394f5c0449 188 //pc.printf("NO Presionaste 3");
diavad 0:fd394f5c0449 189 flag4=0;
diavad 0:fd394f5c0449 190 }
diavad 0:fd394f5c0449 191 if(sec[i]!=boton5[i]) //en caso de que un bit no coincida se descarta el boton 3
diavad 0:fd394f5c0449 192 {
diavad 0:fd394f5c0449 193 //pc.printf("NO Presionaste 3");
diavad 0:fd394f5c0449 194 flag5=0;
diavad 0:fd394f5c0449 195 }
diavad 0:fd394f5c0449 196 if(sec[i]!=boton6[i]) //en caso de que un bit no coincida se descarta el boton 3
diavad 0:fd394f5c0449 197 {
diavad 0:fd394f5c0449 198 //pc.printf("NO Presionaste 3");
diavad 0:fd394f5c0449 199 flag6=0;
diavad 0:fd394f5c0449 200 }
diavad 0:fd394f5c0449 201 if(sec[i]!=boton7[i]) //en caso de que un bit no coincida se descarta el boton 3
diavad 0:fd394f5c0449 202 {
diavad 0:fd394f5c0449 203 //pc.printf("NO Presionaste 3");
diavad 0:fd394f5c0449 204 flag7=0;
diavad 0:fd394f5c0449 205 }
diavad 0:fd394f5c0449 206 if(sec[i]!=boton8[i]) //en caso de que un bit no coincida se descarta el boton 3
diavad 0:fd394f5c0449 207 {
diavad 0:fd394f5c0449 208 //pc.printf("NO Presionaste 3");
diavad 0:fd394f5c0449 209 flag8=0;
diavad 0:fd394f5c0449 210 }
diavad 0:fd394f5c0449 211 if(sec[i]!=boton9[i]) //en caso de que un bit no coincida se descarta el boton 3
diavad 0:fd394f5c0449 212 {
diavad 0:fd394f5c0449 213 //pc.printf("NO Presionaste 3");
diavad 0:fd394f5c0449 214 flag9=0;
diavad 0:fd394f5c0449 215 }
diavad 0:fd394f5c0449 216 if(sec[i]!=boton0[i]) //en caso de que un bit no coincida se descarta el boton 3
diavad 0:fd394f5c0449 217 {
diavad 0:fd394f5c0449 218 //pc.printf("NO Presionaste 3");
diavad 0:fd394f5c0449 219 flag0=0;
diavad 0:fd394f5c0449 220 }
diavad 0:fd394f5c0449 221 if(sec[i]!=botonEnt[i]) //en caso de que un bit no coincida se descarta el boton 3
diavad 0:fd394f5c0449 222 {
diavad 0:fd394f5c0449 223 //pc.printf("NO Presionaste 3");
diavad 0:fd394f5c0449 224 flagEnt=0;
diavad 0:fd394f5c0449 225 }
diavad 0:fd394f5c0449 226 if(sec[i]!=botonIzq[i]) //en caso de que un bit no coincida se descarta el boton 3
diavad 0:fd394f5c0449 227 {
diavad 0:fd394f5c0449 228 //pc.printf("NO Presionaste 3");
diavad 0:fd394f5c0449 229 flagIzq=0;
diavad 0:fd394f5c0449 230 }
diavad 0:fd394f5c0449 231 if(sec[i]!=botonDer[i]) //en caso de que un bit no coincida se descarta el boton 3
diavad 0:fd394f5c0449 232 {
diavad 0:fd394f5c0449 233 //pc.printf("NO Presionaste 3");
diavad 0:fd394f5c0449 234 flagDer=0;
diavad 0:fd394f5c0449 235 }
diavad 0:fd394f5c0449 236 }
diavad 0:fd394f5c0449 237 if(flag1==1)
diavad 0:fd394f5c0449 238 {
diavad 0:fd394f5c0449 239
diavad 0:fd394f5c0449 240 lcd.printf("\n Presionaste 1 \n"); //si coincidieron todos los bits del boton 1
diavad 0:fd394f5c0449 241 leds = 2; // Led Color Rosa
diavad 0:fd394f5c0449 242 IRDAInput=1;
diavad 0:fd394f5c0449 243 LeerIRDA=0;
diavad 0:fd394f5c0449 244 }
diavad 0:fd394f5c0449 245 else if(flag2==1)
diavad 0:fd394f5c0449 246 {
diavad 0:fd394f5c0449 247 leds=2; // Led Color Amarillo
diavad 0:fd394f5c0449 248 lcd.printf("\n Presionaste 2 \n"); //si coincidieron todos los bits del boton 1
diavad 0:fd394f5c0449 249 IRDAInput=2;
diavad 0:fd394f5c0449 250 LeerIRDA=0;
diavad 0:fd394f5c0449 251 }
diavad 0:fd394f5c0449 252 else if(flag3==1)
diavad 0:fd394f5c0449 253 {
diavad 0:fd394f5c0449 254 leds=2; // Led Color Verde
diavad 0:fd394f5c0449 255 lcd.printf("\n Presionaste 3 \n"); //si coincidieron todos los bits del boton 1
diavad 0:fd394f5c0449 256 IRDAInput=3;
diavad 0:fd394f5c0449 257 LeerIRDA=0;
diavad 0:fd394f5c0449 258 }
diavad 0:fd394f5c0449 259 else if(flag4==1)
diavad 0:fd394f5c0449 260 {
diavad 0:fd394f5c0449 261 leds=2; // Led Color Verde
diavad 0:fd394f5c0449 262 lcd.printf("\n Presionaste 4 \n"); //si coincidieron todos los bits del boton 1
diavad 0:fd394f5c0449 263 IRDAInput=4;
diavad 0:fd394f5c0449 264 LeerIRDA=0;
diavad 0:fd394f5c0449 265 }
diavad 0:fd394f5c0449 266 else if(flag5==1)
diavad 0:fd394f5c0449 267 {
diavad 0:fd394f5c0449 268 leds=2; // Led Color Verde
diavad 0:fd394f5c0449 269 lcd.printf("\n Presionaste 5 \n"); //si coincidieron todos los bits del boton 1
diavad 0:fd394f5c0449 270 IRDAInput=5;
diavad 0:fd394f5c0449 271 LeerIRDA=0;
diavad 0:fd394f5c0449 272 }
diavad 0:fd394f5c0449 273 else if(flag6==1)
diavad 0:fd394f5c0449 274 {
diavad 0:fd394f5c0449 275 leds=2; // Led Color Verde
diavad 0:fd394f5c0449 276 lcd.printf("\n Presionaste 6 \n"); //si coincidieron todos los bits del boton 1
diavad 0:fd394f5c0449 277 IRDAInput=6;
diavad 0:fd394f5c0449 278 LeerIRDA=0;
diavad 0:fd394f5c0449 279 }
diavad 0:fd394f5c0449 280 else if(flag7==1)
diavad 0:fd394f5c0449 281 {
diavad 0:fd394f5c0449 282 leds=2; // Led Color Verde
diavad 0:fd394f5c0449 283 lcd.printf("\n Presionaste 7 \n"); //si coincidieron todos los bits del boton 1
diavad 0:fd394f5c0449 284 IRDAInput=7;
diavad 0:fd394f5c0449 285 LeerIRDA=0;
diavad 0:fd394f5c0449 286 }
diavad 0:fd394f5c0449 287 else if(flag8==1)
diavad 0:fd394f5c0449 288 {
diavad 0:fd394f5c0449 289 leds=2; // Led Color Verde
diavad 0:fd394f5c0449 290 lcd.printf("\n Presionaste 8 \n"); //si coincidieron todos los bits del boton 1
diavad 0:fd394f5c0449 291 IRDAInput=8;
diavad 0:fd394f5c0449 292 LeerIRDA=0;
diavad 0:fd394f5c0449 293 }
diavad 0:fd394f5c0449 294 else if(flag9==1)
diavad 0:fd394f5c0449 295 {
diavad 0:fd394f5c0449 296 leds=2; // Led Color Verde
diavad 0:fd394f5c0449 297 lcd.printf("\n Presionaste 9 \n"); //si coincidieron todos los bits del boton 1
diavad 0:fd394f5c0449 298 IRDAInput=9;
diavad 0:fd394f5c0449 299 LeerIRDA=0;
diavad 0:fd394f5c0449 300 }
diavad 0:fd394f5c0449 301 else if(flag0==1)
diavad 0:fd394f5c0449 302 {
diavad 0:fd394f5c0449 303 leds=2; // Led Color Verde
diavad 0:fd394f5c0449 304 lcd.printf("\n Presionaste 0 \n"); //si coincidieron todos los bits del boton 1
diavad 0:fd394f5c0449 305 IRDAInput=0;
diavad 0:fd394f5c0449 306 LeerIRDA=0;
diavad 0:fd394f5c0449 307 }
diavad 0:fd394f5c0449 308 else if(flagEnt==1)
diavad 0:fd394f5c0449 309 {
diavad 0:fd394f5c0449 310 leds=5; // Led Color Verde
diavad 0:fd394f5c0449 311 lcd.printf("\n Presionaste Ent \n"); //si coincidieron todos los bits del boton 1
diavad 0:fd394f5c0449 312 IRDAInput=3;
diavad 0:fd394f5c0449 313 LeerIRDA=0;
diavad 0:fd394f5c0449 314 }else if(flagIzq==1)
diavad 0:fd394f5c0449 315 {
diavad 0:fd394f5c0449 316 leds=5; // Led Color Verde
diavad 0:fd394f5c0449 317 lcd.printf("\n Presionaste Izq \n"); //si coincidieron todos los bits del boton 1
diavad 0:fd394f5c0449 318 IRDAInput=3;
diavad 0:fd394f5c0449 319 LeerIRDA=0;
diavad 0:fd394f5c0449 320 }
diavad 0:fd394f5c0449 321 else if(flagDer==1)
diavad 0:fd394f5c0449 322 {
diavad 0:fd394f5c0449 323 leds=5;
diavad 0:fd394f5c0449 324 lcd.printf("\n Presionaste Der \n"); //si coincidieron todos los bits del boton 1
diavad 0:fd394f5c0449 325 IRDAInput=3;
diavad 0:fd394f5c0449 326 LeerIRDA=0;
diavad 0:fd394f5c0449 327 }
diavad 0:fd394f5c0449 328 else
diavad 0:fd394f5c0449 329 {
diavad 0:fd394f5c0449 330 leds=8; // Led Color Blanco
diavad 0:fd394f5c0449 331 lcd.printf("boton no reconocido"); //si coincidieron todos los bits del boton 1
diavad 0:fd394f5c0449 332 IRDAInput=4;
diavad 0:fd394f5c0449 333 LeerIRDA=0;
diavad 0:fd394f5c0449 334 }
diavad 0:fd394f5c0449 335 }
diavad 0:fd394f5c0449 336 wait_ms(1000);
diavad 0:fd394f5c0449 337 }
diavad 0:fd394f5c0449 338
diavad 0:fd394f5c0449 339
diavad 0:fd394f5c0449 340 void Menu(){
diavad 0:fd394f5c0449 341 lcd.cls();
diavad 0:fd394f5c0449 342 lcd.locate(0,0);
diavad 0:fd394f5c0449 343 lcd.printf("1_Hora");
diavad 0:fd394f5c0449 344 lcd.locate(8,0);
diavad 0:fd394f5c0449 345 lcd.printf("3_Alarma");
diavad 0:fd394f5c0449 346 lcd.locate(0,1);
diavad 0:fd394f5c0449 347 lcd.printf("2_Config Hora");
diavad 0:fd394f5c0449 348
diavad 0:fd394f5c0449 349 wait_ms(1000);
diavad 0:fd394f5c0449 350 }
diavad 0:fd394f5c0449 351
diavad 0:fd394f5c0449 352 //////////////////////////////////////// Configurar Reloj /////////////////
diavad 0:fd394f5c0449 353 void ConfiReloj(){
diavad 0:fd394f5c0449 354 Rtc_Ds1307::Time_rtc tm = {};
diavad 0:fd394f5c0449 355 //;config = 0,config = 0,config = 0,ano = 2019,hora = 0, min = 0,
diavad 0:fd394f5c0449 356 int configR = 0, cont = 1, set = 0;
diavad 0:fd394f5c0449 357 int estado = 1;
diavad 0:fd394f5c0449 358 leds=2;
diavad 0:fd394f5c0449 359 wait(0.2);
diavad 0:fd394f5c0449 360 while(estado == 1){
diavad 0:fd394f5c0449 361 if(configR == 0) {
diavad 0:fd394f5c0449 362 lcd.cls();
diavad 0:fd394f5c0449 363 lcd.locate(0,0);
diavad 0:fd394f5c0449 364 lcd.printf("Configurar reloj");
diavad 0:fd394f5c0449 365 set = set + wheel.getPulses();
diavad 0:fd394f5c0449 366 pc.printf("%i",set);
diavad 0:fd394f5c0449 367 wheel.reset();
diavad 0:fd394f5c0449 368 if(set > 1) {
diavad 0:fd394f5c0449 369 set = 0;
diavad 0:fd394f5c0449 370 }
diavad 0:fd394f5c0449 371 if(set < 0) {
diavad 0:fd394f5c0449 372 set = 1;
diavad 0:fd394f5c0449 373 }
diavad 0:fd394f5c0449 374 lcd.locate(0, 1);
diavad 0:fd394f5c0449 375 if(set == 0) {
diavad 0:fd394f5c0449 376 lcd.printf(" NO ");
diavad 0:fd394f5c0449 377 //wait_ms(10);
diavad 0:fd394f5c0449 378
diavad 0:fd394f5c0449 379 } else if(set == 1) {
diavad 0:fd394f5c0449 380 lcd.printf(" SI ");
diavad 0:fd394f5c0449 381 //wait_ms(10);
diavad 0:fd394f5c0449 382 }
diavad 0:fd394f5c0449 383 if(button_enco.falling()){
diavad 0:fd394f5c0449 384 if(set==1){
diavad 0:fd394f5c0449 385 configR=1;
diavad 0:fd394f5c0449 386 }else if(set!=1){
diavad 0:fd394f5c0449 387 configR=0;
diavad 0:fd394f5c0449 388 estado=0;
diavad 0:fd394f5c0449 389 }
diavad 0:fd394f5c0449 390 }
diavad 0:fd394f5c0449 391 }
diavad 0:fd394f5c0449 392 if(configR == 1) {
diavad 0:fd394f5c0449 393 cont = cont + wheel.getPulses();
diavad 0:fd394f5c0449 394 wheel.reset();
diavad 0:fd394f5c0449 395 if(cont > 31) {
diavad 0:fd394f5c0449 396 cont = 1;
diavad 0:fd394f5c0449 397 }
diavad 0:fd394f5c0449 398 if(cont < 1) {
diavad 0:fd394f5c0449 399 cont = 31;
diavad 0:fd394f5c0449 400 }
diavad 0:fd394f5c0449 401 lcd.locate(0, 1);
diavad 0:fd394f5c0449 402 lcd.printf("Dia: %02d ", cont);
diavad 0:fd394f5c0449 403 tm.date = cont;
diavad 0:fd394f5c0449 404 if(button_enco.falling()){
diavad 0:fd394f5c0449 405
diavad 0:fd394f5c0449 406 configR=2;
diavad 0:fd394f5c0449 407 }
diavad 0:fd394f5c0449 408 }
diavad 0:fd394f5c0449 409 if(configR == 2) {
diavad 0:fd394f5c0449 410 cont = cont + wheel.getPulses();
diavad 0:fd394f5c0449 411 wheel.reset();
diavad 0:fd394f5c0449 412 if(cont > 12) {
diavad 0:fd394f5c0449 413 cont = 1;
diavad 0:fd394f5c0449 414 }
diavad 0:fd394f5c0449 415 if(cont < 1) {
diavad 0:fd394f5c0449 416 cont = 12;
diavad 0:fd394f5c0449 417 }
diavad 0:fd394f5c0449 418 lcd.locate(0, 1);
diavad 0:fd394f5c0449 419 lcd.printf("Mes: %02d ", cont);
diavad 0:fd394f5c0449 420
diavad 0:fd394f5c0449 421 if(button_enco.falling()){
diavad 0:fd394f5c0449 422 tm.mon = cont;
diavad 0:fd394f5c0449 423 configR = 3;
diavad 0:fd394f5c0449 424 }
diavad 0:fd394f5c0449 425 }
diavad 0:fd394f5c0449 426 if(configR == 3) {
diavad 0:fd394f5c0449 427 cont = cont + wheel.getPulses();
diavad 0:fd394f5c0449 428 wheel.reset();
diavad 0:fd394f5c0449 429 if(cont > 3000) {
diavad 0:fd394f5c0449 430 cont = 2016;
diavad 0:fd394f5c0449 431 }
diavad 0:fd394f5c0449 432 if(cont < 2016) {
diavad 0:fd394f5c0449 433 cont = 2016;
diavad 0:fd394f5c0449 434 }
diavad 0:fd394f5c0449 435 lcd.locate(0, 1);
diavad 0:fd394f5c0449 436 lcd.printf("Anno: %02d ", cont);
diavad 0:fd394f5c0449 437
diavad 0:fd394f5c0449 438 if(button_enco.falling()){
diavad 0:fd394f5c0449 439 tm.year = cont;
diavad 0:fd394f5c0449 440 configR = 4;
diavad 0:fd394f5c0449 441 }
diavad 0:fd394f5c0449 442 }
diavad 0:fd394f5c0449 443 if(configR == 4) {
diavad 0:fd394f5c0449 444 cont = cont + wheel.getPulses();
diavad 0:fd394f5c0449 445 wheel.reset();
diavad 0:fd394f5c0449 446 if(cont > 7) {
diavad 0:fd394f5c0449 447 cont = 1;
diavad 0:fd394f5c0449 448 }
diavad 0:fd394f5c0449 449 if(cont < 1) {
diavad 0:fd394f5c0449 450 cont = 7;
diavad 0:fd394f5c0449 451 }
diavad 0:fd394f5c0449 452 lcd.locate(0, 1);
diavad 0:fd394f5c0449 453 lcd.printf("Dia semana: %1d", cont);
diavad 0:fd394f5c0449 454 //tm.wday = cont;
diavad 0:fd394f5c0449 455
diavad 0:fd394f5c0449 456 if(button_enco.falling()){
diavad 0:fd394f5c0449 457 tm.wday = cont;
diavad 0:fd394f5c0449 458 configR = 5;
diavad 0:fd394f5c0449 459 }
diavad 0:fd394f5c0449 460 }
diavad 0:fd394f5c0449 461 if(configR == 5) {
diavad 0:fd394f5c0449 462 cont = cont + wheel.getPulses();
diavad 0:fd394f5c0449 463 wheel.reset();
diavad 0:fd394f5c0449 464 if(cont > 23) {
diavad 0:fd394f5c0449 465 cont = 0;
diavad 0:fd394f5c0449 466 }
diavad 0:fd394f5c0449 467 if(cont < 0) {
diavad 0:fd394f5c0449 468 cont = 23;
diavad 0:fd394f5c0449 469 }
diavad 0:fd394f5c0449 470 lcd.locate(0, 1);
diavad 0:fd394f5c0449 471 lcd.printf("Hora: %02d ", cont);
diavad 0:fd394f5c0449 472 //tm.hour = cont;
diavad 0:fd394f5c0449 473 if(button_enco.falling()){
diavad 0:fd394f5c0449 474 tm.hour = cont;
diavad 0:fd394f5c0449 475 configR = 6;
diavad 0:fd394f5c0449 476 }
diavad 0:fd394f5c0449 477 }
diavad 0:fd394f5c0449 478 if(configR == 6) {
diavad 0:fd394f5c0449 479 cont = cont + wheel.getPulses();
diavad 0:fd394f5c0449 480 wheel.reset();
diavad 0:fd394f5c0449 481 if(cont > 59) {
diavad 0:fd394f5c0449 482 cont = 0;
diavad 0:fd394f5c0449 483 }
diavad 0:fd394f5c0449 484 if(cont < 0) {
diavad 0:fd394f5c0449 485 cont = 59;
diavad 0:fd394f5c0449 486 }
diavad 0:fd394f5c0449 487 lcd.locate(0, 1);
diavad 0:fd394f5c0449 488 lcd.printf("Minutos: %02d ", cont);
diavad 0:fd394f5c0449 489 //tm.min = cont;
diavad 0:fd394f5c0449 490 if(button_enco.falling()){
diavad 0:fd394f5c0449 491 tm.min = cont;
diavad 0:fd394f5c0449 492 configR = 7;
diavad 0:fd394f5c0449 493 }
diavad 0:fd394f5c0449 494 }
diavad 0:fd394f5c0449 495 if(configR == 7) {
diavad 0:fd394f5c0449 496 cont = cont + wheel.getPulses();
diavad 0:fd394f5c0449 497 wheel.reset();
diavad 0:fd394f5c0449 498 if(cont > 59) {
diavad 0:fd394f5c0449 499 cont = 0;
diavad 0:fd394f5c0449 500 }
diavad 0:fd394f5c0449 501 if(cont < 0) {
diavad 0:fd394f5c0449 502 cont = 59;
diavad 0:fd394f5c0449 503 }
diavad 0:fd394f5c0449 504 lcd.locate(0, 1);
diavad 0:fd394f5c0449 505 lcd.printf("Segundos: %02d ", cont);
diavad 0:fd394f5c0449 506 tm.sec = cont;
diavad 0:fd394f5c0449 507 if(button_enco.falling()){
diavad 0:fd394f5c0449 508 tm.sec = cont;
diavad 0:fd394f5c0449 509 configR = 8;
diavad 0:fd394f5c0449 510 }
diavad 0:fd394f5c0449 511 }
diavad 0:fd394f5c0449 512 if(configR == 8) {
diavad 0:fd394f5c0449 513 lcd.locate(0, 1);
diavad 0:fd394f5c0449 514 lcd.printf(" Establecido ");
diavad 0:fd394f5c0449 515 rtc.setTime(tm, false, false);
diavad 0:fd394f5c0449 516 rtc.startClock();
diavad 0:fd394f5c0449 517 //estado = 0;
diavad 0:fd394f5c0449 518 configR = 0;
diavad 0:fd394f5c0449 519 estado=0;
diavad 0:fd394f5c0449 520 wait(2);
diavad 0:fd394f5c0449 521 }
diavad 0:fd394f5c0449 522 }
diavad 0:fd394f5c0449 523 }
diavad 0:fd394f5c0449 524
diavad 0:fd394f5c0449 525
diavad 0:fd394f5c0449 526 int main(){
diavad 0:fd394f5c0449 527 while(1) {
diavad 0:fd394f5c0449 528 pc.printf("Corriendo ...\n");
diavad 0:fd394f5c0449 529
diavad 0:fd394f5c0449 530 Menu();
diavad 0:fd394f5c0449 531 wait_ms(1000);
diavad 0:fd394f5c0449 532 OpcionMenu = LeerEncoder();
diavad 0:fd394f5c0449 533 pc.printf("%i",OpcionMenu);
diavad 0:fd394f5c0449 534 switch(OpcionMenu){
diavad 0:fd394f5c0449 535 //pc.printf("%i",OpcionMenu);
diavad 0:fd394f5c0449 536 case 1:
diavad 0:fd394f5c0449 537 // 1 HORA
diavad 0:fd394f5c0449 538 ImprimirHora();
diavad 0:fd394f5c0449 539 case 2:
diavad 0:fd394f5c0449 540 //Configurar hora
diavad 0:fd394f5c0449 541 ConfiReloj();
diavad 0:fd394f5c0449 542 break;
diavad 0:fd394f5c0449 543 case 3:
diavad 0:fd394f5c0449 544 // Alarmas
diavad 0:fd394f5c0449 545 break;
diavad 0:fd394f5c0449 546 case 4:
diavad 0:fd394f5c0449 547 lcd.cls();
diavad 0:fd394f5c0449 548 lcd.locate(0,0);
diavad 0:fd394f5c0449 549 lcd.printf("Esperando trama");
diavad 0:fd394f5c0449 550 lcd.locate(0,1);
diavad 0:fd394f5c0449 551 lcd.printf("control remoto");
diavad 0:fd394f5c0449 552 LeerIRDA();
diavad 0:fd394f5c0449 553 break;
diavad 0:fd394f5c0449 554 }
diavad 0:fd394f5c0449 555 //ImprimirHora();
diavad 0:fd394f5c0449 556 wait_ms(500);
diavad 0:fd394f5c0449 557 //LeerEncoder();
diavad 0:fd394f5c0449 558 //wait_ms(50);
diavad 0:fd394f5c0449 559 //LeerIRDA();
diavad 0:fd394f5c0449 560 }
diavad 0:fd394f5c0449 561 }