Reloj con alarma programado por enconder. Luna es gay
Dependencies: mbed QEI Debounced ds3231 TextLCD RTC-DS1307 Pulse1
main.cpp@0:fd394f5c0449, 2019-08-13 (annotated)
- 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?
User | Revision | Line number | New 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 | } |