menu-teclado-lcd-pwm(funca todo) (y el puerto serie tambien)

Dependencies:   TextLCD mbed

Committer:
josedaparte
Date:
Mon Nov 30 23:19:34 2015 +0000
Revision:
2:a3cc9101e1c3
Parent:
1:9ab0f526b7a7
Child:
3:ef1eaeaf5c4e
das

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 0:1334d6f26f42 4
josedaparte 0:1334d6f26f42 5 Serial pc(USBTX, USBRX);
josedaparte 0:1334d6f26f42 6 TextLCD lcd(PTD3, PTA12, PTA4, PTA5, PTC8, PTC9, TextLCD::LCD16x2);
josedaparte 0:1334d6f26f42 7
josedaparte 0:1334d6f26f42 8 DigitalIn key1(PTE31);
josedaparte 0:1334d6f26f42 9 DigitalIn key2(PTE19);
josedaparte 0:1334d6f26f42 10 DigitalIn key3(PTE18);
josedaparte 0:1334d6f26f42 11 DigitalIn key4(PTE17);
josedaparte 1:9ab0f526b7a7 12 InterruptIn Enable(PTA13);
josedaparte 0:1334d6f26f42 13 AnalogIn externo(PTC2);
josedaparte 0:1334d6f26f42 14 AnalogIn interno(PTB3);
josedaparte 0:1334d6f26f42 15
josedaparte 0:1334d6f26f42 16 int temp = 26;
josedaparte 0:1334d6f26f42 17 char tipo;
josedaparte 0:1334d6f26f42 18 int sel = 1;
josedaparte 0:1334d6f26f42 19 float casinterno;
josedaparte 0:1334d6f26f42 20 float casexterno;
josedaparte 0:1334d6f26f42 21 float tinterno;
josedaparte 0:1334d6f26f42 22 float texterno;
josedaparte 2:a3cc9101e1c3 23 char modo = 'M';
josedaparte 2:a3cc9101e1c3 24 int set = 0;
josedaparte 2:a3cc9101e1c3 25 int pdig, sdig, val;
josedaparte 2:a3cc9101e1c3 26 int i = 0;
josedaparte 2:a3cc9101e1c3 27 int tipobanio = 0;
josedaparte 0:1334d6f26f42 28
josedaparte 0:1334d6f26f42 29 int num, B1,B2,B3,B4;
josedaparte 0:1334d6f26f42 30
josedaparte 0:1334d6f26f42 31 void menu();
josedaparte 0:1334d6f26f42 32 void selec();
josedaparte 1:9ab0f526b7a7 33
josedaparte 0:1334d6f26f42 34
josedaparte 0:1334d6f26f42 35 void func()
josedaparte 0:1334d6f26f42 36 {
josedaparte 0:1334d6f26f42 37 B1 = key1.read();
josedaparte 0:1334d6f26f42 38 B2 = key2.read();
josedaparte 0:1334d6f26f42 39 B3 = key3.read();
josedaparte 0:1334d6f26f42 40 B4 = key4.read();
josedaparte 2:a3cc9101e1c3 41
josedaparte 0:1334d6f26f42 42 num = 2*2*2*B1 + 2*2*B2 + 2*B3 + B4;
josedaparte 2:a3cc9101e1c3 43 pc.printf("llama a func\n\r");
josedaparte 2:a3cc9101e1c3 44 if(num == 10) {
josedaparte 2:a3cc9101e1c3 45 set = 0;
josedaparte 0:1334d6f26f42 46 menu();
josedaparte 2:a3cc9101e1c3 47 } else if(num == 11) {
josedaparte 2:a3cc9101e1c3 48 set = 0;
josedaparte 2:a3cc9101e1c3 49 selec();
josedaparte 2:a3cc9101e1c3 50 } else if(num != 10 && num != 11) {
josedaparte 0:1334d6f26f42 51
josedaparte 2:a3cc9101e1c3 52 pc.printf("antes del case\n\r");
josedaparte 2:a3cc9101e1c3 53 switch(set) {
josedaparte 2:a3cc9101e1c3 54 case 0:
josedaparte 2:a3cc9101e1c3 55 pc.printf("case 0");
josedaparte 2:a3cc9101e1c3 56 break;
josedaparte 2:a3cc9101e1c3 57 case 1:
josedaparte 2:a3cc9101e1c3 58 pc.printf("case 1\n\r");
josedaparte 2:a3cc9101e1c3 59 break;
josedaparte 2:a3cc9101e1c3 60 case 2:
josedaparte 2:a3cc9101e1c3 61 pc.printf("case 2\n\r");
josedaparte 2:a3cc9101e1c3 62 break;
josedaparte 2:a3cc9101e1c3 63 case 3:
josedaparte 2:a3cc9101e1c3 64 pc.printf("ingreso tipo banio %d\n\r",num);
josedaparte 2:a3cc9101e1c3 65 if(num == 0 || num == 1) {
josedaparte 2:a3cc9101e1c3 66 tipobanio = num;
josedaparte 2:a3cc9101e1c3 67 lcd.locate(0,0);
josedaparte 2:a3cc9101e1c3 68 if(num == 0)
josedaparte 2:a3cc9101e1c3 69 lcd.printf("banio rapido");
josedaparte 2:a3cc9101e1c3 70 else
josedaparte 2:a3cc9101e1c3 71 lcd.printf("banio normal");
josedaparte 2:a3cc9101e1c3 72 wait(1);
josedaparte 2:a3cc9101e1c3 73 lcd.cls();
josedaparte 2:a3cc9101e1c3 74 lcd.printf("tipo banio");
josedaparte 2:a3cc9101e1c3 75 pc.printf("%.1d\n\r", tipobanio);
josedaparte 2:a3cc9101e1c3 76 set = 0;
josedaparte 2:a3cc9101e1c3 77 } else {
josedaparte 2:a3cc9101e1c3 78 lcd.locate(0,0);
josedaparte 2:a3cc9101e1c3 79 lcd.printf("valor invalido");
josedaparte 2:a3cc9101e1c3 80 wait(1);
josedaparte 2:a3cc9101e1c3 81 lcd.printf("tipo banio");
josedaparte 2:a3cc9101e1c3 82 lcd.cls();
josedaparte 2:a3cc9101e1c3 83 }
josedaparte 2:a3cc9101e1c3 84 break;
josedaparte 2:a3cc9101e1c3 85 case 4:
josedaparte 2:a3cc9101e1c3 86 pc.printf("case 4\n\r");
josedaparte 2:a3cc9101e1c3 87 break;
josedaparte 2:a3cc9101e1c3 88 case 5:
josedaparte 2:a3cc9101e1c3 89 if(i == 0) {
josedaparte 2:a3cc9101e1c3 90 pdig = num;
josedaparte 2:a3cc9101e1c3 91 pc.printf("%.1d\n\r", pdig);
josedaparte 2:a3cc9101e1c3 92 } else if(i == 1) {
josedaparte 2:a3cc9101e1c3 93 sdig = num;
josedaparte 2:a3cc9101e1c3 94 pc.printf("%.1d\n\r", sdig);
josedaparte 2:a3cc9101e1c3 95 val = (pdig * 10) + sdig;
josedaparte 2:a3cc9101e1c3 96 pc.printf("%.1d\n\r", val);
josedaparte 2:a3cc9101e1c3 97 }
josedaparte 2:a3cc9101e1c3 98 i++;
josedaparte 2:a3cc9101e1c3 99 if(i == 2) {
josedaparte 2:a3cc9101e1c3 100 i = 0;
josedaparte 2:a3cc9101e1c3 101 }
josedaparte 2:a3cc9101e1c3 102 break;
josedaparte 2:a3cc9101e1c3 103 case 6:
josedaparte 2:a3cc9101e1c3 104 pc.printf("ingreso tipo banio %d\n\r",num);
josedaparte 2:a3cc9101e1c3 105 if(num == 0 || num == 1) {
josedaparte 2:a3cc9101e1c3 106 tipobanio = num;
josedaparte 2:a3cc9101e1c3 107 lcd.locate(0,0);
josedaparte 2:a3cc9101e1c3 108 if(num == 0)
josedaparte 2:a3cc9101e1c3 109 lcd.printf("banio rapido");
josedaparte 2:a3cc9101e1c3 110 else
josedaparte 2:a3cc9101e1c3 111 lcd.printf("banio normal");
josedaparte 2:a3cc9101e1c3 112 wait(1);
josedaparte 2:a3cc9101e1c3 113 lcd.cls();
josedaparte 2:a3cc9101e1c3 114 lcd.printf("tipo banio");
josedaparte 2:a3cc9101e1c3 115 pc.printf("%.1d\n\r", tipobanio);
josedaparte 2:a3cc9101e1c3 116 set = 0;
josedaparte 2:a3cc9101e1c3 117 } else {
josedaparte 2:a3cc9101e1c3 118 lcd.locate(0,0);
josedaparte 2:a3cc9101e1c3 119 lcd.printf("valor invalido");
josedaparte 2:a3cc9101e1c3 120 wait(1);
josedaparte 2:a3cc9101e1c3 121 lcd.printf("tipo banio");
josedaparte 2:a3cc9101e1c3 122 lcd.cls();
josedaparte 2:a3cc9101e1c3 123 }
josedaparte 2:a3cc9101e1c3 124 break;
josedaparte 2:a3cc9101e1c3 125 }
josedaparte 2:a3cc9101e1c3 126 pc.printf("salgo case\n\r");
josedaparte 2:a3cc9101e1c3 127 }
josedaparte 2:a3cc9101e1c3 128 }
josedaparte 2:a3cc9101e1c3 129
josedaparte 2:a3cc9101e1c3 130 void menu ()
josedaparte 2:a3cc9101e1c3 131 {
josedaparte 0:1334d6f26f42 132 lcd.cls();
josedaparte 2:a3cc9101e1c3 133 switch (sel) {
josedaparte 2:a3cc9101e1c3 134 case 1:
josedaparte 0:1334d6f26f42 135 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 136 lcd.printf("auto");
josedaparte 0:1334d6f26f42 137 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 138 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 139 sel = 2;
josedaparte 0:1334d6f26f42 140 break;
josedaparte 0:1334d6f26f42 141 case 2:
josedaparte 0:1334d6f26f42 142 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 143 lcd.printf("manual");
josedaparte 0:1334d6f26f42 144 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 145 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 146 sel = 3;
josedaparte 0:1334d6f26f42 147 break;
josedaparte 2:a3cc9101e1c3 148 case 3:
josedaparte 0:1334d6f26f42 149 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 150 lcd.printf("reloj");
josedaparte 0:1334d6f26f42 151 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 152 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 153 sel = 1;
josedaparte 0:1334d6f26f42 154 break;
josedaparte 2:a3cc9101e1c3 155 case 4:
josedaparte 0:1334d6f26f42 156 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 157 lcd.printf("temperatura");
josedaparte 0:1334d6f26f42 158 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 159 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 160 sel = 5;
josedaparte 0:1334d6f26f42 161 break;
josedaparte 0:1334d6f26f42 162 case 5:
josedaparte 0:1334d6f26f42 163 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 164 lcd.printf("tipo banio");
josedaparte 0:1334d6f26f42 165 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 166 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 167 sel = 6;
josedaparte 0:1334d6f26f42 168 break;
josedaparte 2:a3cc9101e1c3 169 case 6:
josedaparte 0:1334d6f26f42 170 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 171 lcd.printf("horarios");
josedaparte 0:1334d6f26f42 172 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 173 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 174 sel = 9;
josedaparte 0:1334d6f26f42 175 break;
josedaparte 2:a3cc9101e1c3 176 case 7:
josedaparte 0:1334d6f26f42 177 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 178 lcd.printf("temperatura");
josedaparte 0:1334d6f26f42 179 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 180 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 181 sel = 8;
josedaparte 0:1334d6f26f42 182 break;
josedaparte 2:a3cc9101e1c3 183 case 8:
josedaparte 0:1334d6f26f42 184 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 185 lcd.printf("tipo banio");
josedaparte 0:1334d6f26f42 186 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 187 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 188 sel = 10;
josedaparte 0:1334d6f26f42 189 break;
josedaparte 2:a3cc9101e1c3 190 case 9:
josedaparte 0:1334d6f26f42 191 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 192 lcd.printf("salir");
josedaparte 0:1334d6f26f42 193 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 194 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 195 sel = 4;
josedaparte 0:1334d6f26f42 196 break;
josedaparte 0:1334d6f26f42 197 case 10:
josedaparte 0:1334d6f26f42 198 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 199 lcd.printf("salir");
josedaparte 0:1334d6f26f42 200 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 201 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 202 sel = 7;
josedaparte 2:a3cc9101e1c3 203 break;
josedaparte 2:a3cc9101e1c3 204 }
josedaparte 0:1334d6f26f42 205 }
josedaparte 0:1334d6f26f42 206
josedaparte 0:1334d6f26f42 207
josedaparte 2:a3cc9101e1c3 208 void selec()
josedaparte 2:a3cc9101e1c3 209 {
josedaparte 2:a3cc9101e1c3 210 switch (sel) {
josedaparte 0:1334d6f26f42 211 case 2:
josedaparte 2:a3cc9101e1c3 212 modo = 'A';
josedaparte 0:1334d6f26f42 213 sel = 4;
josedaparte 0:1334d6f26f42 214 menu();
josedaparte 0:1334d6f26f42 215 break;
josedaparte 0:1334d6f26f42 216 case 3:
josedaparte 0:1334d6f26f42 217 modo = 'M';
josedaparte 0:1334d6f26f42 218 sel = 7;
josedaparte 0:1334d6f26f42 219 menu();
josedaparte 0:1334d6f26f42 220 break;
josedaparte 0:1334d6f26f42 221 case 1:
josedaparte 0:1334d6f26f42 222 pc.printf("aca ingresaria la hora\r\n");
josedaparte 2:a3cc9101e1c3 223 set = 1;
josedaparte 2:a3cc9101e1c3 224 wait(3);
josedaparte 0:1334d6f26f42 225 break;
josedaparte 0:1334d6f26f42 226 case 5:
josedaparte 0:1334d6f26f42 227 pc.printf("aca ingresaria la temperatura\r\n");
josedaparte 2:a3cc9101e1c3 228 set = 2;
josedaparte 0:1334d6f26f42 229 break;
josedaparte 0:1334d6f26f42 230 case 6:
josedaparte 0:1334d6f26f42 231 pc.printf("aca ingresaria el tipo de banio\r\n");
josedaparte 2:a3cc9101e1c3 232 lcd.printf(" 0_rap 1_norm");
josedaparte 2:a3cc9101e1c3 233 set = 3;
josedaparte 0:1334d6f26f42 234 break;
josedaparte 0:1334d6f26f42 235 case 4:
josedaparte 0:1334d6f26f42 236 sel = 1;
josedaparte 0:1334d6f26f42 237 menu(); //salida1
josedaparte 0:1334d6f26f42 238 break;
josedaparte 0:1334d6f26f42 239 case 8:
josedaparte 0:1334d6f26f42 240 pc.printf("aca ingresaria la temperatura2\r\n");
josedaparte 2:a3cc9101e1c3 241 set = 5;
josedaparte 0:1334d6f26f42 242 break;
josedaparte 0:1334d6f26f42 243 case 7:
josedaparte 0:1334d6f26f42 244 sel = 2;
josedaparte 0:1334d6f26f42 245 menu();
josedaparte 0:1334d6f26f42 246 break;
josedaparte 0:1334d6f26f42 247 case 9:
josedaparte 0:1334d6f26f42 248 pc.printf("aca ingresaria el horario\r\n");
josedaparte 2:a3cc9101e1c3 249 set = 4;
josedaparte 0:1334d6f26f42 250 break;
josedaparte 0:1334d6f26f42 251 case 10:
josedaparte 0:1334d6f26f42 252 pc.printf("aca ingresaria tipo banio\r\n");
josedaparte 2:a3cc9101e1c3 253 lcd.printf(" 0_rap 1_norm");
josedaparte 2:a3cc9101e1c3 254 set = 6;
josedaparte 0:1334d6f26f42 255 break;
josedaparte 0:1334d6f26f42 256 }
josedaparte 2:a3cc9101e1c3 257
josedaparte 2:a3cc9101e1c3 258 }
josedaparte 2:a3cc9101e1c3 259
josedaparte 2:a3cc9101e1c3 260
josedaparte 2:a3cc9101e1c3 261 int main()
josedaparte 2:a3cc9101e1c3 262 {
josedaparte 2:a3cc9101e1c3 263
josedaparte 0:1334d6f26f42 264 pc.baud(115200);
josedaparte 1:9ab0f526b7a7 265 Enable.rise(&func);
josedaparte 2:a3cc9101e1c3 266
josedaparte 0:1334d6f26f42 267 int comp;
josedaparte 2:a3cc9101e1c3 268 while(1) {
josedaparte 2:a3cc9101e1c3 269 //convierte voltaje a temperatura
josedaparte 0:1334d6f26f42 270 casexterno = externo.read() * 3.3;
josedaparte 2:a3cc9101e1c3 271 texterno = (casexterno + 0.2) * 100 / 5;
josedaparte 0:1334d6f26f42 272 casinterno = interno.read() * 3.3;
josedaparte 0:1334d6f26f42 273 tinterno = (casinterno + 2) * 100 / 8;
josedaparte 2:a3cc9101e1c3 274
josedaparte 0:1334d6f26f42 275 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 276 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 277 comp = tinterno;
josedaparte 0:1334d6f26f42 278 if(comp == temp)
josedaparte 0:1334d6f26f42 279 pc.printf("las temperaturas son iguales\n\r");
josedaparte 0:1334d6f26f42 280 else
josedaparte 0:1334d6f26f42 281 pc.printf("temperaturas distintas\n\r");
josedaparte 2:a3cc9101e1c3 282 wait(1);
josedaparte 0:1334d6f26f42 283 }
josedaparte 0:1334d6f26f42 284 }