final

Dependencies:   TextLCD mbed

Fork of general by proyectotecnicas

Committer:
josedaparte
Date:
Mon Dec 14 15:53:14 2015 +0000
Revision:
8:5cfa4b38ddf1
Parent:
7:e27232481540
Child:
9:364316a55827
pwm;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
josedaparte 0:1334d6f26f42 1 #include "mbed.h"
josedaparte 0:1334d6f26f42 2 #include "TextLCD.h"
josedaparte 0:1334d6f26f42 3 #include "AnalogIn.h"
josedaparte 8:5cfa4b38ddf1 4 #include "Serial.h"
josedaparte 0:1334d6f26f42 5
josedaparte 5:c047b49f74e7 6 //clases
josedaparte 5:c047b49f74e7 7 Timer t;
josedaparte 0:1334d6f26f42 8 Serial pc(USBTX, USBRX);
josedaparte 0:1334d6f26f42 9 TextLCD lcd(PTD3, PTA12, PTA4, PTA5, PTC8, PTC9, TextLCD::LCD16x2);
josedaparte 0:1334d6f26f42 10
josedaparte 5:c047b49f74e7 11 //entradas
josedaparte 5:c047b49f74e7 12 DigitalIn key1(PTE31), key4(PTE17), key2(PTE19), key3(PTE18);
josedaparte 1:9ab0f526b7a7 13 InterruptIn Enable(PTA13);
josedaparte 8:5cfa4b38ddf1 14 AnalogIn externo(PTC2),interno(PTB3), presionin(PTB2), pident(PTB1);
josedaparte 8:5cfa4b38ddf1 15 AnalogOut vref(PTE30);
josedaparte 5:c047b49f74e7 16 PwmOut pwmsal(PTD2);
josedaparte 0:1334d6f26f42 17
josedaparte 5:c047b49f74e7 18 //declaracion de variables
josedaparte 5:c047b49f74e7 19 char tipo, modo = 'M';
josedaparte 8:5cfa4b38ddf1 20 float tinterno, texterno, presion, casexterno, casinterno, caspresion, valorpwm, valorpid, vrefe = 1;
josedaparte 8:5cfa4b38ddf1 21 float Tres=0, optimo=0;
josedaparte 5:c047b49f74e7 22 int i = 0, j = 0, sel = 1, hora=0, min=0, seg=0, horain = 8, minin = 0, horafin = 22, minfin = 0, temp = 26;
josedaparte 5:c047b49f74e7 23 int hh1, hh0, mm0, mm1, B1, B2, B3, B4, num, tempauto = 0, tipobanio = 0, pdig, sdig, tempmanual = 40, set = 0;
josedaparte 0:1334d6f26f42 24 void menu();
josedaparte 0:1334d6f26f42 25 void selec();
josedaparte 4:96c3f113f0b0 26 void func();
josedaparte 8:5cfa4b38ddf1 27 //recibe tension de referencia cambiar por que reciba la de el teclado o del externo
josedaparte 8:5cfa4b38ddf1 28 void modotemp()
josedaparte 8:5cfa4b38ddf1 29 {
josedaparte 8:5cfa4b38ddf1 30 if (modo == 'A') {
josedaparte 8:5cfa4b38ddf1 31 switch (tempauto) {
josedaparte 8:5cfa4b38ddf1 32
josedaparte 8:5cfa4b38ddf1 33 case 0:
josedaparte 8:5cfa4b38ddf1 34 if ((hora > horain||(hora == horain && min >= minin)) && ( hora < horafin ||(hora == horafin && min <= minfin))) {
josedaparte 8:5cfa4b38ddf1 35 optimo= -(11/10*texterno)+50;
josedaparte 8:5cfa4b38ddf1 36 if (optimo > 25 && optimo < 65) {
josedaparte 8:5cfa4b38ddf1 37 Tres = optimo;
josedaparte 8:5cfa4b38ddf1 38 } else {
josedaparte 8:5cfa4b38ddf1 39 Tres = tinterno;
josedaparte 8:5cfa4b38ddf1 40 }
josedaparte 8:5cfa4b38ddf1 41 } else {
josedaparte 8:5cfa4b38ddf1 42 Tres = tinterno;
josedaparte 8:5cfa4b38ddf1 43 }
josedaparte 8:5cfa4b38ddf1 44 break;
josedaparte 8:5cfa4b38ddf1 45 case 1:
josedaparte 8:5cfa4b38ddf1 46 if ((hora > horain||(hora == horain && min >= minin)) && ( hora < horafin ||(hora == horafin && min <= minfin))) {
josedaparte 8:5cfa4b38ddf1 47 optimo= -(11/10*texterno)+55;
josedaparte 8:5cfa4b38ddf1 48 if (optimo > 25 && optimo < 65) {
josedaparte 8:5cfa4b38ddf1 49 Tres = optimo;
josedaparte 8:5cfa4b38ddf1 50 } else {
josedaparte 8:5cfa4b38ddf1 51 Tres = tinterno;
josedaparte 8:5cfa4b38ddf1 52 }
josedaparte 8:5cfa4b38ddf1 53 } else {
josedaparte 8:5cfa4b38ddf1 54 Tres = tinterno;
josedaparte 8:5cfa4b38ddf1 55 }
josedaparte 8:5cfa4b38ddf1 56 break;
josedaparte 8:5cfa4b38ddf1 57 case 2:
josedaparte 8:5cfa4b38ddf1 58 if ((hora > horain||(hora == horain && min >= minin)) && ( hora < horafin ||(hora == horafin && min <= minfin))) {
josedaparte 8:5cfa4b38ddf1 59 optimo= -(11/10*texterno)+65;
josedaparte 8:5cfa4b38ddf1 60 if (optimo > 25 && optimo < 65 ) {
josedaparte 8:5cfa4b38ddf1 61 Tres = optimo;
josedaparte 8:5cfa4b38ddf1 62
josedaparte 8:5cfa4b38ddf1 63 } else {
josedaparte 8:5cfa4b38ddf1 64 Tres = tinterno;
josedaparte 8:5cfa4b38ddf1 65 }
josedaparte 8:5cfa4b38ddf1 66 } else {
josedaparte 8:5cfa4b38ddf1 67 Tres = tinterno;
josedaparte 8:5cfa4b38ddf1 68 }
josedaparte 8:5cfa4b38ddf1 69 break;
josedaparte 8:5cfa4b38ddf1 70 }
josedaparte 8:5cfa4b38ddf1 71 }
josedaparte 8:5cfa4b38ddf1 72 if (modo == 'M') {
josedaparte 8:5cfa4b38ddf1 73 Tres = tempmanual;
josedaparte 8:5cfa4b38ddf1 74 }
josedaparte 8:5cfa4b38ddf1 75 vrefe = ((Tres * 8 / 100) - 2) / 3.3;
josedaparte 8:5cfa4b38ddf1 76 }
josedaparte 8:5cfa4b38ddf1 77 //funcion del pwm
josedaparte 8:5cfa4b38ddf1 78
josedaparte 8:5cfa4b38ddf1 79 void pwm()
josedaparte 8:5cfa4b38ddf1 80 {
josedaparte 8:5cfa4b38ddf1 81 if(vrefe <= 1 && vrefe >= 0) {
josedaparte 8:5cfa4b38ddf1 82 vref.write(vrefe);
josedaparte 8:5cfa4b38ddf1 83 }
josedaparte 8:5cfa4b38ddf1 84 valorpid = pident.read() * 3.3;
josedaparte 8:5cfa4b38ddf1 85 if(valorpid >1)
josedaparte 8:5cfa4b38ddf1 86 pwmsal.write(1);
josedaparte 8:5cfa4b38ddf1 87 else if(valorpid <= 1 && valorpid >= 0.6) {
josedaparte 8:5cfa4b38ddf1 88 valorpwm = 2.5 * valorpid - 1.5;
josedaparte 8:5cfa4b38ddf1 89 pwmsal.write(valorpwm);
josedaparte 8:5cfa4b38ddf1 90 } else
josedaparte 8:5cfa4b38ddf1 91 pwmsal.write(0);
josedaparte 8:5cfa4b38ddf1 92 }
josedaparte 4:96c3f113f0b0 93
josedaparte 5:c047b49f74e7 94 //funcion de set de hora
josedaparte 5:c047b49f74e7 95 void sethora()
josedaparte 5:c047b49f74e7 96 {
josedaparte 5:c047b49f74e7 97 if(i == 0) { //set de primer digito hora
josedaparte 5:c047b49f74e7 98 if(num > 2) {
josedaparte 5:c047b49f74e7 99 lcd.locate(0,0);
josedaparte 5:c047b49f74e7 100 lcd.printf("valor invalido");
josedaparte 5:c047b49f74e7 101 wait(.7);
josedaparte 5:c047b49f74e7 102 func();
josedaparte 5:c047b49f74e7 103 } else {
josedaparte 5:c047b49f74e7 104 hh1 = num;
josedaparte 5:c047b49f74e7 105 lcd.cls();
josedaparte 5:c047b49f74e7 106 lcd.printf("%dx:xx",hh1);
josedaparte 5:c047b49f74e7 107 lcd.locate(0,1);
josedaparte 5:c047b49f74e7 108 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 5:c047b49f74e7 109 wait(.7);
josedaparte 5:c047b49f74e7 110 i++;
josedaparte 5:c047b49f74e7 111 }
josedaparte 5:c047b49f74e7 112 } else //fin de set 1er digito hora ok
josedaparte 5:c047b49f74e7 113 if(i == 1) {
josedaparte 5:c047b49f74e7 114 pc.printf("aca ingresaria 2 dig hora\n\r"); //inicio 2do digito hora
josedaparte 5:c047b49f74e7 115 if(hh1 == 2 && num > 4) {
josedaparte 5:c047b49f74e7 116 lcd.locate(0,0);
josedaparte 5:c047b49f74e7 117 lcd.printf("valor invalido");
josedaparte 5:c047b49f74e7 118 wait(.7);
josedaparte 5:c047b49f74e7 119 func();
josedaparte 5:c047b49f74e7 120 } else {
josedaparte 5:c047b49f74e7 121 hh0 = num;
josedaparte 5:c047b49f74e7 122 lcd.cls();
josedaparte 5:c047b49f74e7 123 lcd.printf("%d%d:xx",hh1,hh0);
josedaparte 5:c047b49f74e7 124 lcd.locate(0,1);
josedaparte 5:c047b49f74e7 125 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 5:c047b49f74e7 126 wait(.7);
josedaparte 5:c047b49f74e7 127 i++;
josedaparte 5:c047b49f74e7 128 }
josedaparte 5:c047b49f74e7 129 } else //fin 2do digito hora
josedaparte 5:c047b49f74e7 130 if(i == 2) {
josedaparte 5:c047b49f74e7 131 pc.printf("aca ingresaria 1 dig seg\n\r"); //inicio 1er digito minuto
josedaparte 5:c047b49f74e7 132 if(num > 6) {
josedaparte 5:c047b49f74e7 133 lcd.locate(0,0);
josedaparte 5:c047b49f74e7 134 lcd.printf("valor invalido");
josedaparte 5:c047b49f74e7 135 wait(.7);
josedaparte 5:c047b49f74e7 136 func();
josedaparte 5:c047b49f74e7 137 } else {
josedaparte 5:c047b49f74e7 138 mm1 = num;
josedaparte 5:c047b49f74e7 139 lcd.cls();
josedaparte 5:c047b49f74e7 140 lcd.printf("%d%d:%dx",hh1,hh0,mm1);
josedaparte 5:c047b49f74e7 141 lcd.locate(0,1);
josedaparte 5:c047b49f74e7 142 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 5:c047b49f74e7 143 wait(.7);
josedaparte 5:c047b49f74e7 144 i++;
josedaparte 5:c047b49f74e7 145 }
josedaparte 5:c047b49f74e7 146 } else //fin 2do digito minuto
josedaparte 5:c047b49f74e7 147 if(i == 3) {
josedaparte 5:c047b49f74e7 148 pc.printf("aca ingresaria 2 dig seg\n\r"); //inicio 2do digito minuto
josedaparte 5:c047b49f74e7 149 if(mm1 == 6) {
josedaparte 5:c047b49f74e7 150 mm0 = 0;
josedaparte 5:c047b49f74e7 151 } else {
josedaparte 5:c047b49f74e7 152 mm0 = num;
josedaparte 5:c047b49f74e7 153 }
josedaparte 5:c047b49f74e7 154 lcd.cls();
josedaparte 5:c047b49f74e7 155 lcd.printf("%d%d:%d%d",hh1,hh0,mm1,mm0);
josedaparte 5:c047b49f74e7 156 lcd.locate(0,1);
josedaparte 5:c047b49f74e7 157 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 5:c047b49f74e7 158 i++;
josedaparte 5:c047b49f74e7 159 } //fin 2do digito minuto
josedaparte 5:c047b49f74e7 160 }
josedaparte 5:c047b49f74e7 161 // fin funcion set de hora
josedaparte 5:c047b49f74e7 162
josedaparte 5:c047b49f74e7 163 //funcion que imprime la hora
josedaparte 5:c047b49f74e7 164 void imprimehora()
josedaparte 5:c047b49f74e7 165 {
josedaparte 5:c047b49f74e7 166 lcd.locate(11,1);
josedaparte 5:c047b49f74e7 167 if(min < 10 && hora >= 10)
josedaparte 3:ef1eaeaf5c4e 168 lcd.printf("%2i:0%i", hora, min);
josedaparte 5:c047b49f74e7 169 if(hora < 10 && min >= 10)
josedaparte 3:ef1eaeaf5c4e 170 lcd.printf("0%i:%2i", hora, min);
josedaparte 5:c047b49f74e7 171 if(hora < 10 && min < 10)
josedaparte 3:ef1eaeaf5c4e 172 lcd.printf("0%i:0%i", hora, min);
josedaparte 5:c047b49f74e7 173 if(hora >= 10 && min >= 10)
josedaparte 3:ef1eaeaf5c4e 174 lcd.printf("%i:%i", hora, min);
josedaparte 5:c047b49f74e7 175 }
josedaparte 0:1334d6f26f42 176
josedaparte 5:c047b49f74e7 177 //lectura de teclado y navegacion por menu
josedaparte 0:1334d6f26f42 178 void func()
josedaparte 0:1334d6f26f42 179 {
josedaparte 0:1334d6f26f42 180 B1 = key1.read();
josedaparte 0:1334d6f26f42 181 B2 = key2.read();
josedaparte 0:1334d6f26f42 182 B3 = key3.read();
josedaparte 0:1334d6f26f42 183 B4 = key4.read();
josedaparte 0:1334d6f26f42 184 num = 2*2*2*B1 + 2*2*B2 + 2*B3 + B4;
josedaparte 2:a3cc9101e1c3 185 pc.printf("llama a func\n\r");
josedaparte 2:a3cc9101e1c3 186 if(num == 10) {
josedaparte 2:a3cc9101e1c3 187 set = 0;
josedaparte 0:1334d6f26f42 188 menu();
josedaparte 2:a3cc9101e1c3 189 } else if(num == 11) {
josedaparte 2:a3cc9101e1c3 190 set = 0;
josedaparte 2:a3cc9101e1c3 191 selec();
josedaparte 2:a3cc9101e1c3 192 } else if(num != 10 && num != 11) {
josedaparte 0:1334d6f26f42 193
josedaparte 2:a3cc9101e1c3 194 pc.printf("antes del case\n\r");
josedaparte 2:a3cc9101e1c3 195 switch(set) {
josedaparte 2:a3cc9101e1c3 196 case 0:
josedaparte 2:a3cc9101e1c3 197 pc.printf("case 0");
josedaparte 2:a3cc9101e1c3 198 break;
josedaparte 5:c047b49f74e7 199 case 1: //seteo hora
josedaparte 5:c047b49f74e7 200 sethora();
josedaparte 5:c047b49f74e7 201 if(i == 4) { //pasa la hora al reloj
josedaparte 5:c047b49f74e7 202 hora = (hh1 * 10) + hh0;
josedaparte 5:c047b49f74e7 203 min = (mm1 * 10) + mm0;
josedaparte 5:c047b49f74e7 204 hh0 = hh1 = mm1 = mm0 = 0;
josedaparte 5:c047b49f74e7 205 t.start();
josedaparte 5:c047b49f74e7 206 lcd.locate(0,0);
josedaparte 5:c047b49f74e7 207 lcd.printf("reloj ");
josedaparte 5:c047b49f74e7 208 lcd.locate(0,1);
josedaparte 5:c047b49f74e7 209 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 5:c047b49f74e7 210 i = 0;
josedaparte 5:c047b49f74e7 211 }
josedaparte 5:c047b49f74e7 212 break; //fin pasa hora al reloj
josedaparte 2:a3cc9101e1c3 213 case 2:
josedaparte 5:c047b49f74e7 214 pc.printf("ingreso temperaturas de auto\n\r"); //set temperaturas auto
josedaparte 3:ef1eaeaf5c4e 215 if(num == 0 || num == 1 || num == 2) {
josedaparte 3:ef1eaeaf5c4e 216 tempauto = num;
josedaparte 3:ef1eaeaf5c4e 217 lcd.locate(0,0);
josedaparte 3:ef1eaeaf5c4e 218 if(num == 0)
josedaparte 3:ef1eaeaf5c4e 219 lcd.printf("tipo frio ");
josedaparte 3:ef1eaeaf5c4e 220 else if(num == 1)
josedaparte 3:ef1eaeaf5c4e 221 lcd.printf("tipo normal ");
josedaparte 5:c047b49f74e7 222 else
josedaparte 5:c047b49f74e7 223 lcd.printf("tipo caliente");
josedaparte 3:ef1eaeaf5c4e 224 wait(1);
josedaparte 3:ef1eaeaf5c4e 225 lcd.cls();
josedaparte 3:ef1eaeaf5c4e 226 lcd.printf("temperatura");
josedaparte 3:ef1eaeaf5c4e 227 set = 0;
josedaparte 3:ef1eaeaf5c4e 228 } else {
josedaparte 3:ef1eaeaf5c4e 229 lcd.locate(0,0);
josedaparte 3:ef1eaeaf5c4e 230 lcd.printf("valor invalido");
josedaparte 3:ef1eaeaf5c4e 231 wait(1);
josedaparte 3:ef1eaeaf5c4e 232 lcd.printf("tipo banio");
josedaparte 3:ef1eaeaf5c4e 233 lcd.cls();
josedaparte 3:ef1eaeaf5c4e 234 }
josedaparte 2:a3cc9101e1c3 235 break;
josedaparte 5:c047b49f74e7 236 case 3: //tipo de baño
josedaparte 2:a3cc9101e1c3 237 pc.printf("ingreso tipo banio %d\n\r",num);
josedaparte 2:a3cc9101e1c3 238 if(num == 0 || num == 1) {
josedaparte 2:a3cc9101e1c3 239 tipobanio = num;
josedaparte 2:a3cc9101e1c3 240 lcd.locate(0,0);
josedaparte 2:a3cc9101e1c3 241 if(num == 0)
josedaparte 3:ef1eaeaf5c4e 242 lcd.printf("banio rapido ");
josedaparte 2:a3cc9101e1c3 243 else
josedaparte 3:ef1eaeaf5c4e 244 lcd.printf("banio normal ");
josedaparte 2:a3cc9101e1c3 245 wait(1);
josedaparte 2:a3cc9101e1c3 246 lcd.cls();
josedaparte 3:ef1eaeaf5c4e 247 lcd.printf("tipo banio ");
josedaparte 2:a3cc9101e1c3 248 pc.printf("%.1d\n\r", tipobanio);
josedaparte 2:a3cc9101e1c3 249 set = 0;
josedaparte 2:a3cc9101e1c3 250 } else {
josedaparte 2:a3cc9101e1c3 251 lcd.locate(0,0);
josedaparte 2:a3cc9101e1c3 252 lcd.printf("valor invalido");
josedaparte 2:a3cc9101e1c3 253 wait(1);
josedaparte 2:a3cc9101e1c3 254 lcd.cls();
josedaparte 3:ef1eaeaf5c4e 255 lcd.printf("tipo banio ");
josedaparte 2:a3cc9101e1c3 256 }
josedaparte 2:a3cc9101e1c3 257 break;
josedaparte 5:c047b49f74e7 258 case 4: //set de horarios
josedaparte 2:a3cc9101e1c3 259 pc.printf("case 4\n\r");
josedaparte 5:c047b49f74e7 260 sethora();
josedaparte 5:c047b49f74e7 261 if(i == 4 && j == 0) { //pasa la hora al reloj
josedaparte 5:c047b49f74e7 262 horain = (hh1 * 10) + hh0;
josedaparte 5:c047b49f74e7 263 minin = (mm1 * 10) + mm0;
josedaparte 5:c047b49f74e7 264 hh0 = hh1 = mm1 = mm0 = 0;
josedaparte 5:c047b49f74e7 265 lcd.locate(0,0);
josedaparte 5:c047b49f74e7 266 lcd.printf("horario ");
josedaparte 5:c047b49f74e7 267 lcd.locate(0,1);
josedaparte 5:c047b49f74e7 268 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 5:c047b49f74e7 269 pc.printf("hora de inicio %d:%d\n\r",horain,minin);
josedaparte 5:c047b49f74e7 270 pc.printf("hora de fin %d:%d\n\r",horafin,minfin);
josedaparte 5:c047b49f74e7 271 i = 0;
josedaparte 5:c047b49f74e7 272 j = 1;
josedaparte 5:c047b49f74e7 273 }
josedaparte 5:c047b49f74e7 274 if(i == 4 && j == 1) { //pasa la hora al reloj
josedaparte 5:c047b49f74e7 275 horafin = (hh1 * 10) + hh0;
josedaparte 5:c047b49f74e7 276 minfin = (mm1 * 10) + mm0;
josedaparte 5:c047b49f74e7 277 hh0 = hh1 = mm1 = mm0 = 0;
josedaparte 5:c047b49f74e7 278 lcd.locate(0,0);
josedaparte 5:c047b49f74e7 279 lcd.printf("horario ");
josedaparte 5:c047b49f74e7 280 lcd.locate(0,1);
josedaparte 5:c047b49f74e7 281 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 5:c047b49f74e7 282 pc.printf("hora de inicio %d:%d\n\r",horain,minin);
josedaparte 5:c047b49f74e7 283 pc.printf("hora de fin %d:%d\n\r",horafin,minfin);
josedaparte 5:c047b49f74e7 284 i = 0;
josedaparte 5:c047b49f74e7 285 j = 0;
josedaparte 5:c047b49f74e7 286 }
josedaparte 2:a3cc9101e1c3 287 break;
josedaparte 4:96c3f113f0b0 288 case 5: //set temperatura manual
josedaparte 2:a3cc9101e1c3 289 if(i == 0) {
josedaparte 2:a3cc9101e1c3 290 pdig = num;
josedaparte 2:a3cc9101e1c3 291 pc.printf("%.1d\n\r", pdig);
josedaparte 2:a3cc9101e1c3 292 } else if(i == 1) {
josedaparte 2:a3cc9101e1c3 293 sdig = num;
josedaparte 2:a3cc9101e1c3 294 pc.printf("%.1d\n\r", sdig);
josedaparte 5:c047b49f74e7 295 tempmanual = (pdig * 10) + sdig;
josedaparte 8:5cfa4b38ddf1 296 if(tempmanual >= 65) {
josedaparte 7:e27232481540 297 tempmanual = 65;}
josedaparte 8:5cfa4b38ddf1 298 if(tempmanual <= 25){
josedaparte 8:5cfa4b38ddf1 299 tempmanual = 25;}
josedaparte 5:c047b49f74e7 300 pc.printf("%.1d\n\r", tempmanual);
josedaparte 3:ef1eaeaf5c4e 301 imprimehora();
josedaparte 3:ef1eaeaf5c4e 302 lcd.locate(0,0);
josedaparte 5:c047b49f74e7 303 lcd.printf("temperatura a %d",tempmanual);
josedaparte 3:ef1eaeaf5c4e 304 wait(1);
josedaparte 3:ef1eaeaf5c4e 305 lcd.locate(0,0);
josedaparte 3:ef1eaeaf5c4e 306 lcd.printf("temperatura ");
josedaparte 2:a3cc9101e1c3 307 }
josedaparte 2:a3cc9101e1c3 308 i++;
josedaparte 2:a3cc9101e1c3 309 if(i == 2) {
josedaparte 2:a3cc9101e1c3 310 i = 0;
josedaparte 2:a3cc9101e1c3 311 }
josedaparte 2:a3cc9101e1c3 312 break;
josedaparte 4:96c3f113f0b0 313 case 6: //tipo de banio manual
josedaparte 2:a3cc9101e1c3 314 pc.printf("ingreso tipo banio %d\n\r",num);
josedaparte 2:a3cc9101e1c3 315 if(num == 0 || num == 1) {
josedaparte 2:a3cc9101e1c3 316 tipobanio = num;
josedaparte 2:a3cc9101e1c3 317 lcd.locate(0,0);
josedaparte 2:a3cc9101e1c3 318 if(num == 0)
josedaparte 3:ef1eaeaf5c4e 319 lcd.printf("banio rapido ");
josedaparte 2:a3cc9101e1c3 320 else
josedaparte 3:ef1eaeaf5c4e 321 lcd.printf("banio normal ");
josedaparte 2:a3cc9101e1c3 322 wait(1);
josedaparte 2:a3cc9101e1c3 323 lcd.cls();
josedaparte 3:ef1eaeaf5c4e 324 lcd.printf("tipo banio ");
josedaparte 2:a3cc9101e1c3 325 pc.printf("%.1d\n\r", tipobanio);
josedaparte 2:a3cc9101e1c3 326 set = 0;
josedaparte 2:a3cc9101e1c3 327 } else {
josedaparte 2:a3cc9101e1c3 328 lcd.locate(0,0);
josedaparte 2:a3cc9101e1c3 329 lcd.printf("valor invalido");
josedaparte 2:a3cc9101e1c3 330 wait(1);
josedaparte 2:a3cc9101e1c3 331 lcd.cls();
josedaparte 3:ef1eaeaf5c4e 332 lcd.printf("tipo banio ");
josedaparte 2:a3cc9101e1c3 333 }
josedaparte 2:a3cc9101e1c3 334 break;
josedaparte 2:a3cc9101e1c3 335 }
josedaparte 2:a3cc9101e1c3 336 pc.printf("salgo case\n\r");
josedaparte 3:ef1eaeaf5c4e 337 pc.printf("%d",i);
josedaparte 2:a3cc9101e1c3 338 }
josedaparte 2:a3cc9101e1c3 339 }
josedaparte 2:a3cc9101e1c3 340
josedaparte 5:c047b49f74e7 341 //impresion de menu
josedaparte 2:a3cc9101e1c3 342 void menu ()
josedaparte 2:a3cc9101e1c3 343 {
josedaparte 0:1334d6f26f42 344 lcd.cls();
josedaparte 5:c047b49f74e7 345 imprimehora();
josedaparte 2:a3cc9101e1c3 346 switch (sel) {
josedaparte 2:a3cc9101e1c3 347 case 1:
josedaparte 0:1334d6f26f42 348 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 349 lcd.printf("auto");
josedaparte 0:1334d6f26f42 350 lcd.locate(0,1);
josedaparte 3:ef1eaeaf5c4e 351 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 352 sel = 2;
josedaparte 0:1334d6f26f42 353 break;
josedaparte 0:1334d6f26f42 354 case 2:
josedaparte 0:1334d6f26f42 355 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 356 lcd.printf("manual");
josedaparte 0:1334d6f26f42 357 lcd.locate(0,1);
josedaparte 3:ef1eaeaf5c4e 358 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 359 sel = 3;
josedaparte 0:1334d6f26f42 360 break;
josedaparte 2:a3cc9101e1c3 361 case 3:
josedaparte 0:1334d6f26f42 362 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 363 lcd.printf("reloj");
josedaparte 0:1334d6f26f42 364 lcd.locate(0,1);
josedaparte 3:ef1eaeaf5c4e 365 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 366 sel = 1;
josedaparte 0:1334d6f26f42 367 break;
josedaparte 2:a3cc9101e1c3 368 case 4:
josedaparte 0:1334d6f26f42 369 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 370 lcd.printf("temperatura");
josedaparte 0:1334d6f26f42 371 lcd.locate(0,1);
josedaparte 3:ef1eaeaf5c4e 372 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 373 sel = 5;
josedaparte 0:1334d6f26f42 374 break;
josedaparte 0:1334d6f26f42 375 case 5:
josedaparte 0:1334d6f26f42 376 lcd.locate(0,0);
josedaparte 3:ef1eaeaf5c4e 377 lcd.printf("tipo banio ");
josedaparte 0:1334d6f26f42 378 lcd.locate(0,1);
josedaparte 3:ef1eaeaf5c4e 379 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 380 sel = 6;
josedaparte 0:1334d6f26f42 381 break;
josedaparte 2:a3cc9101e1c3 382 case 6:
josedaparte 0:1334d6f26f42 383 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 384 lcd.printf("horarios");
josedaparte 0:1334d6f26f42 385 lcd.locate(0,1);
josedaparte 3:ef1eaeaf5c4e 386 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 387 sel = 9;
josedaparte 0:1334d6f26f42 388 break;
josedaparte 2:a3cc9101e1c3 389 case 7:
josedaparte 0:1334d6f26f42 390 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 391 lcd.printf("temperatura");
josedaparte 0:1334d6f26f42 392 lcd.locate(0,1);
josedaparte 3:ef1eaeaf5c4e 393 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 394 sel = 8;
josedaparte 0:1334d6f26f42 395 break;
josedaparte 2:a3cc9101e1c3 396 case 8:
josedaparte 0:1334d6f26f42 397 lcd.locate(0,0);
josedaparte 3:ef1eaeaf5c4e 398 lcd.printf("tipo banio ");
josedaparte 0:1334d6f26f42 399 lcd.locate(0,1);
josedaparte 3:ef1eaeaf5c4e 400 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 401 sel = 10;
josedaparte 0:1334d6f26f42 402 break;
josedaparte 2:a3cc9101e1c3 403 case 9:
josedaparte 0:1334d6f26f42 404 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 405 lcd.printf("salir");
josedaparte 0:1334d6f26f42 406 lcd.locate(0,1);
josedaparte 3:ef1eaeaf5c4e 407 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 408 sel = 4;
josedaparte 0:1334d6f26f42 409 break;
josedaparte 0:1334d6f26f42 410 case 10:
josedaparte 0:1334d6f26f42 411 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 412 lcd.printf("salir");
josedaparte 0:1334d6f26f42 413 lcd.locate(0,1);
josedaparte 3:ef1eaeaf5c4e 414 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 415 sel = 7;
josedaparte 2:a3cc9101e1c3 416 break;
josedaparte 2:a3cc9101e1c3 417 }
josedaparte 0:1334d6f26f42 418 }
josedaparte 0:1334d6f26f42 419
josedaparte 2:a3cc9101e1c3 420 void selec()
josedaparte 2:a3cc9101e1c3 421 {
josedaparte 2:a3cc9101e1c3 422 switch (sel) {
josedaparte 0:1334d6f26f42 423 case 2:
josedaparte 2:a3cc9101e1c3 424 modo = 'A';
josedaparte 0:1334d6f26f42 425 sel = 4;
josedaparte 0:1334d6f26f42 426 menu();
josedaparte 0:1334d6f26f42 427 break;
josedaparte 0:1334d6f26f42 428 case 3:
josedaparte 0:1334d6f26f42 429 modo = 'M';
josedaparte 0:1334d6f26f42 430 sel = 7;
josedaparte 0:1334d6f26f42 431 menu();
josedaparte 0:1334d6f26f42 432 break;
josedaparte 0:1334d6f26f42 433 case 1:
josedaparte 0:1334d6f26f42 434 pc.printf("aca ingresaria la hora\r\n");
josedaparte 2:a3cc9101e1c3 435 set = 1;
josedaparte 0:1334d6f26f42 436 break;
josedaparte 0:1334d6f26f42 437 case 5:
josedaparte 0:1334d6f26f42 438 pc.printf("aca ingresaria la temperatura\r\n");
josedaparte 3:ef1eaeaf5c4e 439 lcd.locate(0,0);
josedaparte 3:ef1eaeaf5c4e 440 lcd.printf(" 0_F 1_N 2_C");
josedaparte 2:a3cc9101e1c3 441 set = 2;
josedaparte 0:1334d6f26f42 442 break;
josedaparte 0:1334d6f26f42 443 case 6:
josedaparte 0:1334d6f26f42 444 pc.printf("aca ingresaria el tipo de banio\r\n");
josedaparte 3:ef1eaeaf5c4e 445 lcd.locate(0,0);
josedaparte 2:a3cc9101e1c3 446 lcd.printf(" 0_rap 1_norm");
josedaparte 2:a3cc9101e1c3 447 set = 3;
josedaparte 0:1334d6f26f42 448 break;
josedaparte 0:1334d6f26f42 449 case 4:
josedaparte 0:1334d6f26f42 450 sel = 1;
josedaparte 5:c047b49f74e7 451 menu(); //salida1
josedaparte 0:1334d6f26f42 452 break;
josedaparte 0:1334d6f26f42 453 case 8:
josedaparte 0:1334d6f26f42 454 pc.printf("aca ingresaria la temperatura2\r\n");
josedaparte 3:ef1eaeaf5c4e 455 lcd.locate(0,0);
josedaparte 3:ef1eaeaf5c4e 456 lcd.printf("ingrese temperat");
josedaparte 2:a3cc9101e1c3 457 set = 5;
josedaparte 0:1334d6f26f42 458 break;
josedaparte 0:1334d6f26f42 459 case 7:
josedaparte 0:1334d6f26f42 460 sel = 2;
josedaparte 0:1334d6f26f42 461 menu();
josedaparte 0:1334d6f26f42 462 break;
josedaparte 0:1334d6f26f42 463 case 9:
josedaparte 0:1334d6f26f42 464 pc.printf("aca ingresaria el horario\r\n");
josedaparte 2:a3cc9101e1c3 465 set = 4;
josedaparte 0:1334d6f26f42 466 break;
josedaparte 0:1334d6f26f42 467 case 10:
josedaparte 0:1334d6f26f42 468 pc.printf("aca ingresaria tipo banio\r\n");
josedaparte 3:ef1eaeaf5c4e 469 lcd.locate(0,0);
josedaparte 2:a3cc9101e1c3 470 lcd.printf(" 0_rap 1_norm");
josedaparte 2:a3cc9101e1c3 471 set = 6;
josedaparte 0:1334d6f26f42 472 break;
josedaparte 0:1334d6f26f42 473 }
josedaparte 2:a3cc9101e1c3 474 }
josedaparte 2:a3cc9101e1c3 475
josedaparte 5:c047b49f74e7 476 //programa principal
josedaparte 2:a3cc9101e1c3 477 int main()
josedaparte 2:a3cc9101e1c3 478 {
josedaparte 3:ef1eaeaf5c4e 479 t.start();
josedaparte 0:1334d6f26f42 480 pc.baud(115200);
josedaparte 1:9ab0f526b7a7 481 Enable.rise(&func);
josedaparte 6:eb50c82e7d93 482
josedaparte 2:a3cc9101e1c3 483 while(1) {
josedaparte 8:5cfa4b38ddf1 484 modotemp();
josedaparte 3:ef1eaeaf5c4e 485 //reloj
josedaparte 5:c047b49f74e7 486 seg = t.read();
josedaparte 5:c047b49f74e7 487 if(seg == 60) {
josedaparte 3:ef1eaeaf5c4e 488 seg=0;
josedaparte 3:ef1eaeaf5c4e 489 t.reset();
josedaparte 5:c047b49f74e7 490 min++;
josedaparte 3:ef1eaeaf5c4e 491 }
josedaparte 5:c047b49f74e7 492 if(min==60) {
josedaparte 3:ef1eaeaf5c4e 493 min=0;
josedaparte 5:c047b49f74e7 494 hora++;
josedaparte 5:c047b49f74e7 495 }
josedaparte 5:c047b49f74e7 496 if(hora==24) {
josedaparte 5:c047b49f74e7 497 hora=0;
josedaparte 3:ef1eaeaf5c4e 498 }
josedaparte 5:c047b49f74e7 499 imprimehora();
josedaparte 8:5cfa4b38ddf1 500
josedaparte 2:a3cc9101e1c3 501 //convierte voltaje a temperatura
josedaparte 0:1334d6f26f42 502 casexterno = externo.read() * 3.3;
josedaparte 2:a3cc9101e1c3 503 texterno = (casexterno + 0.2) * 100 / 5;
josedaparte 0:1334d6f26f42 504 casinterno = interno.read() * 3.3;
josedaparte 0:1334d6f26f42 505 tinterno = (casinterno + 2) * 100 / 8;
josedaparte 5:c047b49f74e7 506 //sensor de presion
josedaparte 5:c047b49f74e7 507 caspresion = presionin.read() * 3.3;
josedaparte 6:eb50c82e7d93 508 if(caspresion >= 2.34) {
josedaparte 6:eb50c82e7d93 509
josedaparte 6:eb50c82e7d93 510 }
josedaparte 6:eb50c82e7d93 511 if(caspresion >= 1.68 && caspresion <= 1.85) {
josedaparte 6:eb50c82e7d93 512
josedaparte 6:eb50c82e7d93 513 }
josedaparte 6:eb50c82e7d93 514 if(caspresion <= 1.03) {
josedaparte 6:eb50c82e7d93 515
josedaparte 6:eb50c82e7d93 516 }
josedaparte 2:a3cc9101e1c3 517
josedaparte 0:1334d6f26f42 518 lcd.locate(0,1);
josedaparte 3:ef1eaeaf5c4e 519 lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
josedaparte 8:5cfa4b38ddf1 520 pwm();
josedaparte 2:a3cc9101e1c3 521 wait(1);
josedaparte 8:5cfa4b38ddf1 522 } //fin wile
josedaparte 0:1334d6f26f42 523 }