Punto 3 del TP1: Aire Acondicionado
Dependencies: DS18B20_1wire TextLCD mbed
main.cpp@0:c9d0c42dc7f2, 2018-05-31 (annotated)
- Committer:
- Joacolopez22
- Date:
- Thu May 31 14:11:23 2018 +0000
- Revision:
- 0:c9d0c42dc7f2
Punto 3 del TP1;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Joacolopez22 | 0:c9d0c42dc7f2 | 1 | #include "mbed.h" |
Joacolopez22 | 0:c9d0c42dc7f2 | 2 | #include "TextLCD.h" |
Joacolopez22 | 0:c9d0c42dc7f2 | 3 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 4 | //ENTRADAS Y SALIDAS |
Joacolopez22 | 0:c9d0c42dc7f2 | 5 | DigitalIn PULS_SUMA(PTC17); |
Joacolopez22 | 0:c9d0c42dc7f2 | 6 | DigitalIn PULS_RESTA(PTC6); |
Joacolopez22 | 0:c9d0c42dc7f2 | 7 | DigitalIn PULS_MODO(PTC12); |
Joacolopez22 | 0:c9d0c42dc7f2 | 8 | DigitalIn PULS_ENCENDIDO(PTC16); |
Joacolopez22 | 0:c9d0c42dc7f2 | 9 | DigitalOut ROJO(LED1); |
Joacolopez22 | 0:c9d0c42dc7f2 | 10 | DigitalOut AZUL(LED3); |
Joacolopez22 | 0:c9d0c42dc7f2 | 11 | TextLCD lcd(PTC7,PTB1,PTB2,PTB3,PTC2,PTC1, TextLCD::LCD20x4); // rs, e, d4-d7 |
Joacolopez22 | 0:c9d0c42dc7f2 | 12 | AnalogIn ADC(PTB0); |
Joacolopez22 | 0:c9d0c42dc7f2 | 13 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 14 | //ENUMS MAQUINA AIRE // |
Joacolopez22 | 0:c9d0c42dc7f2 | 15 | enum {APAGADO, ESPERA_CALOR, CALOR , FRIO, ESPERA_FRIO,NO_GIRA,IZQUIERDA |
Joacolopez22 | 0:c9d0c42dc7f2 | 16 | }; |
Joacolopez22 | 0:c9d0c42dc7f2 | 17 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 18 | // ENUMS MAQUINA ANTIRREBOTE // |
Joacolopez22 | 0:c9d0c42dc7f2 | 19 | enum { |
Joacolopez22 | 0:c9d0c42dc7f2 | 20 | SUELTO, QUIZAS_PRESIONADO, PRESIONADO, QUIZAS_SUELTO |
Joacolopez22 | 0:c9d0c42dc7f2 | 21 | }; |
Joacolopez22 | 0:c9d0c42dc7f2 | 22 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 23 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 24 | //ENUMS MAQUINA DETECTOR DE FLANCOS // |
Joacolopez22 | 0:c9d0c42dc7f2 | 25 | enum { |
Joacolopez22 | 0:c9d0c42dc7f2 | 26 | NO_PRESIONADO, APRETADO, DEJO_APRETAR |
Joacolopez22 | 0:c9d0c42dc7f2 | 27 | }; |
Joacolopez22 | 0:c9d0c42dc7f2 | 28 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 29 | //OBJETOS // |
Joacolopez22 | 0:c9d0c42dc7f2 | 30 | Ticker temporizador; |
Joacolopez22 | 0:c9d0c42dc7f2 | 31 | Ticker med; |
Joacolopez22 | 0:c9d0c42dc7f2 | 32 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 33 | //PROTOCOLOS // |
Joacolopez22 | 0:c9d0c42dc7f2 | 34 | void AIRE_Control(int pulsa); |
Joacolopez22 | 0:c9d0c42dc7f2 | 35 | int PULS_Antirrebote(void); |
Joacolopez22 | 0:c9d0c42dc7f2 | 36 | int DETECTOR_Flancos(int maq_antirrebote); |
Joacolopez22 | 0:c9d0c42dc7f2 | 37 | void Set_tempe(int m); |
Joacolopez22 | 0:c9d0c42dc7f2 | 38 | void timer (void); |
Joacolopez22 | 0:c9d0c42dc7f2 | 39 | void Medicion_tempe(void); |
Joacolopez22 | 0:c9d0c42dc7f2 | 40 | void Manejo_display(int pul); |
Joacolopez22 | 0:c9d0c42dc7f2 | 41 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 42 | //VARIABLES |
Joacolopez22 | 0:c9d0c42dc7f2 | 43 | unsigned char AIRE_estado = APAGADO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 44 | unsigned char DETECTOR_estado = NO_PRESIONADO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 45 | unsigned char PULS_estado = SUELTO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 46 | int a = 0; |
Joacolopez22 | 0:c9d0c42dc7f2 | 47 | int b = 0; |
Joacolopez22 | 0:c9d0c42dc7f2 | 48 | int timeout = 0; |
Joacolopez22 | 0:c9d0c42dc7f2 | 49 | int tempe_medida_anterior = 0; |
Joacolopez22 | 0:c9d0c42dc7f2 | 50 | int tempe_medida = 0; |
Joacolopez22 | 0:c9d0c42dc7f2 | 51 | int tempe_set = 20; |
Joacolopez22 | 0:c9d0c42dc7f2 | 52 | int modo = 0; // Variable utilizada en maquina AIRE_Control // |
Joacolopez22 | 0:c9d0c42dc7f2 | 53 | int pulsador =0 ; // Variable usada para maquina PULS_Antirrebote // |
Joacolopez22 | 0:c9d0c42dc7f2 | 54 | int p =0; // Variable devuelta por maquina PULS_Antirrebote // |
Joacolopez22 | 0:c9d0c42dc7f2 | 55 | int puls=0 ; // Variable devuelta por maquina DETECTOR_Flancos // |
Joacolopez22 | 0:c9d0c42dc7f2 | 56 | int y = 0; // Variable utilizada en funcion manejo_display // |
Joacolopez22 | 0:c9d0c42dc7f2 | 57 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 58 | //MAIN |
Joacolopez22 | 0:c9d0c42dc7f2 | 59 | int main() |
Joacolopez22 | 0:c9d0c42dc7f2 | 60 | { |
Joacolopez22 | 0:c9d0c42dc7f2 | 61 | ROJO = 1; // Led rojo apagado // |
Joacolopez22 | 0:c9d0c42dc7f2 | 62 | AZUL = 1; // Led azul apagado // |
Joacolopez22 | 0:c9d0c42dc7f2 | 63 | temporizador.attach(&timer,0.001); |
Joacolopez22 | 0:c9d0c42dc7f2 | 64 | med.attach(&Medicion_tempe, 1); |
Joacolopez22 | 0:c9d0c42dc7f2 | 65 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 66 | while(1) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 67 | a = PULS_Antirrebote(); |
Joacolopez22 | 0:c9d0c42dc7f2 | 68 | b = DETECTOR_Flancos(a); |
Joacolopez22 | 0:c9d0c42dc7f2 | 69 | AIRE_Control(b); |
Joacolopez22 | 0:c9d0c42dc7f2 | 70 | if(y == 1) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 71 | Set_tempe(b); |
Joacolopez22 | 0:c9d0c42dc7f2 | 72 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 73 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 74 | tempe_medida = (ADC*30); |
Joacolopez22 | 0:c9d0c42dc7f2 | 75 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 76 | Manejo_display(b); |
Joacolopez22 | 0:c9d0c42dc7f2 | 77 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 78 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 79 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 80 | void AIRE_Control (int pulsa) // Maneja los estados del Aire // |
Joacolopez22 | 0:c9d0c42dc7f2 | 81 | { |
Joacolopez22 | 0:c9d0c42dc7f2 | 82 | switch (AIRE_estado) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 83 | case APAGADO: |
Joacolopez22 | 0:c9d0c42dc7f2 | 84 | if(pulsa == 4) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 85 | AIRE_estado=FRIO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 86 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 87 | AZUL = 1; // Led azul apagado // |
Joacolopez22 | 0:c9d0c42dc7f2 | 88 | ROJO = 1; // Led rojo apagado // |
Joacolopez22 | 0:c9d0c42dc7f2 | 89 | modo = 0; |
Joacolopez22 | 0:c9d0c42dc7f2 | 90 | break; |
Joacolopez22 | 0:c9d0c42dc7f2 | 91 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 92 | case FRIO: |
Joacolopez22 | 0:c9d0c42dc7f2 | 93 | if(pulsa == 4) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 94 | AIRE_estado = APAGADO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 95 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 96 | if(pulsa == 3) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 97 | AIRE_estado = CALOR; |
Joacolopez22 | 0:c9d0c42dc7f2 | 98 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 99 | if(tempe_medida <= tempe_set) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 100 | AIRE_estado = ESPERA_FRIO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 101 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 102 | AZUL = 0; // Led azul prendido // |
Joacolopez22 | 0:c9d0c42dc7f2 | 103 | ROJO = 1; // Led rojo apagado // |
Joacolopez22 | 0:c9d0c42dc7f2 | 104 | modo = 1; |
Joacolopez22 | 0:c9d0c42dc7f2 | 105 | break; |
Joacolopez22 | 0:c9d0c42dc7f2 | 106 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 107 | case CALOR: |
Joacolopez22 | 0:c9d0c42dc7f2 | 108 | if(pulsa == 4) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 109 | AIRE_estado = APAGADO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 110 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 111 | if(pulsa == 3) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 112 | AIRE_estado = FRIO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 113 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 114 | if(tempe_medida >= tempe_set) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 115 | AIRE_estado = ESPERA_CALOR; |
Joacolopez22 | 0:c9d0c42dc7f2 | 116 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 117 | AZUL = 1; // Led azul apagado // |
Joacolopez22 | 0:c9d0c42dc7f2 | 118 | ROJO = 0; // Led rojo prendido // |
Joacolopez22 | 0:c9d0c42dc7f2 | 119 | modo = 2; |
Joacolopez22 | 0:c9d0c42dc7f2 | 120 | break; |
Joacolopez22 | 0:c9d0c42dc7f2 | 121 | case ESPERA_CALOR: |
Joacolopez22 | 0:c9d0c42dc7f2 | 122 | if(tempe_medida == (tempe_set-2)) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 123 | AIRE_estado = CALOR; |
Joacolopez22 | 0:c9d0c42dc7f2 | 124 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 125 | if(pulsa == 4) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 126 | AIRE_estado=APAGADO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 127 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 128 | if(pulsa == 3) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 129 | AIRE_estado = FRIO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 130 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 131 | AZUL = 1; // Led azul apagado // |
Joacolopez22 | 0:c9d0c42dc7f2 | 132 | ROJO = 1; // Led rpjo apagado // |
Joacolopez22 | 0:c9d0c42dc7f2 | 133 | modo = 2; |
Joacolopez22 | 0:c9d0c42dc7f2 | 134 | break; |
Joacolopez22 | 0:c9d0c42dc7f2 | 135 | case ESPERA_FRIO: |
Joacolopez22 | 0:c9d0c42dc7f2 | 136 | if(tempe_medida == (tempe_set+2)) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 137 | AIRE_estado = FRIO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 138 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 139 | if(pulsa == 4) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 140 | AIRE_estado =APAGADO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 141 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 142 | if(pulsa == 3) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 143 | AIRE_estado = CALOR; |
Joacolopez22 | 0:c9d0c42dc7f2 | 144 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 145 | AZUL = 1; // Led azul apagado // |
Joacolopez22 | 0:c9d0c42dc7f2 | 146 | ROJO = 1; // Led rojo apagado // |
Joacolopez22 | 0:c9d0c42dc7f2 | 147 | modo = 1; |
Joacolopez22 | 0:c9d0c42dc7f2 | 148 | break; |
Joacolopez22 | 0:c9d0c42dc7f2 | 149 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 150 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 151 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 152 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 153 | int PULS_Antirrebote(void) // Elimina el rebote del pulsador. Devuelve "0" si ningun |
Joacolopez22 | 0:c9d0c42dc7f2 | 154 | { // pulsador fue presionado. Si se presiona un pulsador devuelve "1", |
Joacolopez22 | 0:c9d0c42dc7f2 | 155 | if (PULS_SUMA == 1) { // "2","3" o "4" dependiendo de que pulsador fue presionado. |
Joacolopez22 | 0:c9d0c42dc7f2 | 156 | pulsador = PULS_SUMA ; |
Joacolopez22 | 0:c9d0c42dc7f2 | 157 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 158 | if (PULS_RESTA == 1) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 159 | pulsador = PULS_RESTA ; |
Joacolopez22 | 0:c9d0c42dc7f2 | 160 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 161 | if (PULS_MODO == 1) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 162 | pulsador = PULS_MODO ; |
Joacolopez22 | 0:c9d0c42dc7f2 | 163 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 164 | if (PULS_ENCENDIDO == 1) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 165 | pulsador = PULS_ENCENDIDO ; |
Joacolopez22 | 0:c9d0c42dc7f2 | 166 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 167 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 168 | if (PULS_SUMA == 0 && PULS_RESTA == 0 && PULS_MODO == 0 && PULS_ENCENDIDO == 0) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 169 | pulsador = 0; |
Joacolopez22 | 0:c9d0c42dc7f2 | 170 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 171 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 172 | switch (PULS_estado) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 173 | default: |
Joacolopez22 | 0:c9d0c42dc7f2 | 174 | case SUELTO: |
Joacolopez22 | 0:c9d0c42dc7f2 | 175 | p = 0; |
Joacolopez22 | 0:c9d0c42dc7f2 | 176 | if (pulsador == 1) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 177 | PULS_estado = QUIZAS_PRESIONADO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 178 | timeout = 30; |
Joacolopez22 | 0:c9d0c42dc7f2 | 179 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 180 | break; |
Joacolopez22 | 0:c9d0c42dc7f2 | 181 | case QUIZAS_PRESIONADO: |
Joacolopez22 | 0:c9d0c42dc7f2 | 182 | p = 0; |
Joacolopez22 | 0:c9d0c42dc7f2 | 183 | if (timeout == 0 && pulsador == 1) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 184 | PULS_estado = PRESIONADO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 185 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 186 | if (timeout == 0 && pulsador == 0) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 187 | PULS_estado = SUELTO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 188 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 189 | break; |
Joacolopez22 | 0:c9d0c42dc7f2 | 190 | case PRESIONADO: |
Joacolopez22 | 0:c9d0c42dc7f2 | 191 | if (pulsador == PULS_SUMA) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 192 | p = 1; |
Joacolopez22 | 0:c9d0c42dc7f2 | 193 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 194 | if (pulsador == PULS_RESTA) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 195 | p = 2; |
Joacolopez22 | 0:c9d0c42dc7f2 | 196 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 197 | if (pulsador == PULS_MODO) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 198 | p = 3; |
Joacolopez22 | 0:c9d0c42dc7f2 | 199 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 200 | if (pulsador == PULS_ENCENDIDO) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 201 | p = 4; |
Joacolopez22 | 0:c9d0c42dc7f2 | 202 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 203 | if (pulsador == 0) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 204 | PULS_estado = QUIZAS_SUELTO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 205 | timeout = 30; |
Joacolopez22 | 0:c9d0c42dc7f2 | 206 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 207 | break; |
Joacolopez22 | 0:c9d0c42dc7f2 | 208 | case QUIZAS_SUELTO: |
Joacolopez22 | 0:c9d0c42dc7f2 | 209 | if (pulsador == PULS_SUMA) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 210 | p = 1; |
Joacolopez22 | 0:c9d0c42dc7f2 | 211 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 212 | if (pulsador == PULS_RESTA) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 213 | p = 2; |
Joacolopez22 | 0:c9d0c42dc7f2 | 214 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 215 | if (pulsador == PULS_MODO) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 216 | p = 3; |
Joacolopez22 | 0:c9d0c42dc7f2 | 217 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 218 | if (pulsador == PULS_ENCENDIDO) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 219 | p = 4; |
Joacolopez22 | 0:c9d0c42dc7f2 | 220 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 221 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 222 | if (timeout == 0 && pulsador == 1) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 223 | PULS_estado = PRESIONADO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 224 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 225 | if (timeout == 0 && pulsador == 0) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 226 | PULS_estado = SUELTO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 227 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 228 | break; |
Joacolopez22 | 0:c9d0c42dc7f2 | 229 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 230 | return p; |
Joacolopez22 | 0:c9d0c42dc7f2 | 231 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 232 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 233 | int DETECTOR_Flancos(int antirrebote) // Entrega un solo "1", un solo "2", un solo "3" o un solo "4" |
Joacolopez22 | 0:c9d0c42dc7f2 | 234 | { // cada vez que se presiona un pulsador, dependiendo de cual fue. |
Joacolopez22 | 0:c9d0c42dc7f2 | 235 | switch(DETECTOR_estado) { // Si no se presiona ningún pulsador devuelve "0". |
Joacolopez22 | 0:c9d0c42dc7f2 | 236 | case NO_PRESIONADO: |
Joacolopez22 | 0:c9d0c42dc7f2 | 237 | puls=0; |
Joacolopez22 | 0:c9d0c42dc7f2 | 238 | if(antirrebote != 0) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 239 | DETECTOR_estado = APRETADO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 240 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 241 | break; |
Joacolopez22 | 0:c9d0c42dc7f2 | 242 | case APRETADO: |
Joacolopez22 | 0:c9d0c42dc7f2 | 243 | if (antirrebote == 1) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 244 | puls = 1; |
Joacolopez22 | 0:c9d0c42dc7f2 | 245 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 246 | if (antirrebote == 2) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 247 | puls = 2; |
Joacolopez22 | 0:c9d0c42dc7f2 | 248 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 249 | if (antirrebote == 3) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 250 | puls = 3; |
Joacolopez22 | 0:c9d0c42dc7f2 | 251 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 252 | if (antirrebote == 4) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 253 | puls = 4; |
Joacolopez22 | 0:c9d0c42dc7f2 | 254 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 255 | DETECTOR_estado = DEJO_APRETAR; |
Joacolopez22 | 0:c9d0c42dc7f2 | 256 | break; |
Joacolopez22 | 0:c9d0c42dc7f2 | 257 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 258 | case DEJO_APRETAR: |
Joacolopez22 | 0:c9d0c42dc7f2 | 259 | puls = 0; |
Joacolopez22 | 0:c9d0c42dc7f2 | 260 | if(antirrebote == 0) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 261 | DETECTOR_estado = NO_PRESIONADO; |
Joacolopez22 | 0:c9d0c42dc7f2 | 262 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 263 | break; |
Joacolopez22 | 0:c9d0c42dc7f2 | 264 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 265 | return puls; |
Joacolopez22 | 0:c9d0c42dc7f2 | 266 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 267 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 268 | void Set_tempe(int m) // Incrementa o decrementa el valor de la temperatura |
Joacolopez22 | 0:c9d0c42dc7f2 | 269 | { // seteada de acuerdo al valor de la variable "m" |
Joacolopez22 | 0:c9d0c42dc7f2 | 270 | if(m == 1) { // (entregada por el detector de flancos). |
Joacolopez22 | 0:c9d0c42dc7f2 | 271 | tempe_set++; |
Joacolopez22 | 0:c9d0c42dc7f2 | 272 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 273 | if(m == 2) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 274 | tempe_set--; |
Joacolopez22 | 0:c9d0c42dc7f2 | 275 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 276 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 277 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 278 | void timer (void) |
Joacolopez22 | 0:c9d0c42dc7f2 | 279 | { |
Joacolopez22 | 0:c9d0c42dc7f2 | 280 | if (timeout >0) |
Joacolopez22 | 0:c9d0c42dc7f2 | 281 | timeout--; |
Joacolopez22 | 0:c9d0c42dc7f2 | 282 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 283 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 284 | void Manejo_display(int pul) // Maneja el LCD // |
Joacolopez22 | 0:c9d0c42dc7f2 | 285 | { |
Joacolopez22 | 0:c9d0c42dc7f2 | 286 | if(pul == 4) { // Si se toca el pulsador de encendido...// |
Joacolopez22 | 0:c9d0c42dc7f2 | 287 | y++; |
Joacolopez22 | 0:c9d0c42dc7f2 | 288 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 289 | if (y == 2) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 290 | y = 0; |
Joacolopez22 | 0:c9d0c42dc7f2 | 291 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 292 | if (y == 1) { // Cuando el Aire está prendido // |
Joacolopez22 | 0:c9d0c42dc7f2 | 293 | lcd.TextLCD::locate(0, 0); |
Joacolopez22 | 0:c9d0c42dc7f2 | 294 | lcd.printf("MODO:"); |
Joacolopez22 | 0:c9d0c42dc7f2 | 295 | lcd.TextLCD::locate(0, 1); |
Joacolopez22 | 0:c9d0c42dc7f2 | 296 | lcd.printf("Temp medida: %d", tempe_medida); |
Joacolopez22 | 0:c9d0c42dc7f2 | 297 | lcd.TextLCD::locate(0, 2); |
Joacolopez22 | 0:c9d0c42dc7f2 | 298 | lcd.printf("Temp seteada: %d", tempe_set ); |
Joacolopez22 | 0:c9d0c42dc7f2 | 299 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 300 | if(y == 0) { // Cuando el Aire está apagado // |
Joacolopez22 | 0:c9d0c42dc7f2 | 301 | lcd.cls(); |
Joacolopez22 | 0:c9d0c42dc7f2 | 302 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 303 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 304 | if(pul == 1|| pul == 2) { // Si se incrementa o decrementa la |
Joacolopez22 | 0:c9d0c42dc7f2 | 305 | lcd.locate(14,2); // temperatura seteada... |
Joacolopez22 | 0:c9d0c42dc7f2 | 306 | lcd.printf("%d ",tempe_set); |
Joacolopez22 | 0:c9d0c42dc7f2 | 307 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 308 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 309 | if(modo == 1) { // Si la maquina AIRE_Control está en |
Joacolopez22 | 0:c9d0c42dc7f2 | 310 | lcd.TextLCD::locate(6, 0); // estado FRIO... |
Joacolopez22 | 0:c9d0c42dc7f2 | 311 | lcd.printf("FRIO "); |
Joacolopez22 | 0:c9d0c42dc7f2 | 312 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 313 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 314 | if(modo == 2) { |
Joacolopez22 | 0:c9d0c42dc7f2 | 315 | lcd.TextLCD::locate(6, 0); // Si la maquina AIRE_Control está en |
Joacolopez22 | 0:c9d0c42dc7f2 | 316 | lcd.printf("CALOR"); // estado CALOR... |
Joacolopez22 | 0:c9d0c42dc7f2 | 317 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 318 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 319 | if(tempe_medida_anterior != tempe_medida) { // Si cambia la temperatura medida.... |
Joacolopez22 | 0:c9d0c42dc7f2 | 320 | lcd.locate(13,1); |
Joacolopez22 | 0:c9d0c42dc7f2 | 321 | lcd.printf("%d ",tempe_medida); |
Joacolopez22 | 0:c9d0c42dc7f2 | 322 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 323 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 324 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 325 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 326 | void Medicion_tempe(void) |
Joacolopez22 | 0:c9d0c42dc7f2 | 327 | { |
Joacolopez22 | 0:c9d0c42dc7f2 | 328 | tempe_medida_anterior = tempe_medida; |
Joacolopez22 | 0:c9d0c42dc7f2 | 329 | } |
Joacolopez22 | 0:c9d0c42dc7f2 | 330 | |
Joacolopez22 | 0:c9d0c42dc7f2 | 331 |