menu-teclado-lcd-sensores de temperatura (y el puerto serie tambien)

Dependencies:   TextLCD mbed

Fork of programa principal by proyectotecnicas

Committer:
josedaparte
Date:
Mon Nov 30 15:54:23 2015 +0000
Revision:
0:1334d6f26f42
Child:
1:9ab0f526b7a7
program

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 0:1334d6f26f42 12 InterruptIn Enable(PTA2);
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 0:1334d6f26f42 23 char modo = 'M';
josedaparte 0:1334d6f26f42 24
josedaparte 0:1334d6f26f42 25 int num, B1,B2,B3,B4;
josedaparte 0:1334d6f26f42 26
josedaparte 0:1334d6f26f42 27 void menu();
josedaparte 0:1334d6f26f42 28 void selec();
josedaparte 0:1334d6f26f42 29
josedaparte 0:1334d6f26f42 30 void func()
josedaparte 0:1334d6f26f42 31 {
josedaparte 0:1334d6f26f42 32 pc.printf("entro a func\n\r");
josedaparte 0:1334d6f26f42 33 B1 = key1.read();
josedaparte 0:1334d6f26f42 34 B2 = key2.read();
josedaparte 0:1334d6f26f42 35 B3 = key3.read();
josedaparte 0:1334d6f26f42 36 B4 = key4.read();
josedaparte 0:1334d6f26f42 37
josedaparte 0:1334d6f26f42 38 num = 2*2*2*B1 + 2*2*B2 + 2*B3 + B4;
josedaparte 0:1334d6f26f42 39
josedaparte 0:1334d6f26f42 40 if(num == 10){
josedaparte 0:1334d6f26f42 41 menu();
josedaparte 0:1334d6f26f42 42 }else if(num == 11){
josedaparte 0:1334d6f26f42 43 selec();
josedaparte 0:1334d6f26f42 44 }}
josedaparte 0:1334d6f26f42 45
josedaparte 0:1334d6f26f42 46 void menu (){
josedaparte 0:1334d6f26f42 47 lcd.cls();
josedaparte 0:1334d6f26f42 48 switch (sel){
josedaparte 0:1334d6f26f42 49 case 1:
josedaparte 0:1334d6f26f42 50 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 51 lcd.printf("auto");
josedaparte 0:1334d6f26f42 52 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 53 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 54 sel = 2;
josedaparte 0:1334d6f26f42 55 break;
josedaparte 0:1334d6f26f42 56 case 2:
josedaparte 0:1334d6f26f42 57 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 58 lcd.printf("manual");
josedaparte 0:1334d6f26f42 59 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 60 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 61 sel = 3;
josedaparte 0:1334d6f26f42 62 break;
josedaparte 0:1334d6f26f42 63 case 3:
josedaparte 0:1334d6f26f42 64 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 65 lcd.printf("reloj");
josedaparte 0:1334d6f26f42 66 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 67 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 68 sel = 1;
josedaparte 0:1334d6f26f42 69 break;
josedaparte 0:1334d6f26f42 70 case 4:
josedaparte 0:1334d6f26f42 71 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 72 lcd.printf("temperatura");
josedaparte 0:1334d6f26f42 73 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 74 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 75 sel = 5;
josedaparte 0:1334d6f26f42 76 break;
josedaparte 0:1334d6f26f42 77 case 5:
josedaparte 0:1334d6f26f42 78 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 79 lcd.printf("tipo banio");
josedaparte 0:1334d6f26f42 80 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 81 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 82 sel = 6;
josedaparte 0:1334d6f26f42 83 break;
josedaparte 0:1334d6f26f42 84 case 6:
josedaparte 0:1334d6f26f42 85 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 86 lcd.printf("horarios");
josedaparte 0:1334d6f26f42 87 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 88 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 89 sel = 9;
josedaparte 0:1334d6f26f42 90 break;
josedaparte 0:1334d6f26f42 91 case 7:
josedaparte 0:1334d6f26f42 92 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 93 lcd.printf("temperatura");
josedaparte 0:1334d6f26f42 94 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 95 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 96 sel = 8;
josedaparte 0:1334d6f26f42 97 break;
josedaparte 0:1334d6f26f42 98 case 8:
josedaparte 0:1334d6f26f42 99 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 100 lcd.printf("tipo banio");
josedaparte 0:1334d6f26f42 101 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 102 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 103 sel = 10;
josedaparte 0:1334d6f26f42 104 break;
josedaparte 0:1334d6f26f42 105 case 9:
josedaparte 0:1334d6f26f42 106 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 107 lcd.printf("salir");
josedaparte 0:1334d6f26f42 108 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 109 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 110 sel = 4;
josedaparte 0:1334d6f26f42 111 break;
josedaparte 0:1334d6f26f42 112 case 10:
josedaparte 0:1334d6f26f42 113 lcd.locate(0,0);
josedaparte 0:1334d6f26f42 114 lcd.printf("salir");
josedaparte 0:1334d6f26f42 115 lcd.locate(0,1);
josedaparte 0:1334d6f26f42 116 lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
josedaparte 0:1334d6f26f42 117 sel = 7;
josedaparte 0:1334d6f26f42 118 break;
josedaparte 0:1334d6f26f42 119 }
josedaparte 0:1334d6f26f42 120 }
josedaparte 0:1334d6f26f42 121
josedaparte 0:1334d6f26f42 122
josedaparte 0:1334d6f26f42 123 void selec(){
josedaparte 0:1334d6f26f42 124 switch (sel){
josedaparte 0:1334d6f26f42 125 case 2:
josedaparte 0:1334d6f26f42 126 modo = 'A';
josedaparte 0:1334d6f26f42 127 sel = 4;
josedaparte 0:1334d6f26f42 128 menu();
josedaparte 0:1334d6f26f42 129 break;
josedaparte 0:1334d6f26f42 130 case 3:
josedaparte 0:1334d6f26f42 131 modo = 'M';
josedaparte 0:1334d6f26f42 132 sel = 7;
josedaparte 0:1334d6f26f42 133 menu();
josedaparte 0:1334d6f26f42 134 break;
josedaparte 0:1334d6f26f42 135 case 1:
josedaparte 0:1334d6f26f42 136 pc.printf("aca ingresaria la hora\r\n");
josedaparte 0:1334d6f26f42 137 wait(1.5);
josedaparte 0:1334d6f26f42 138 break;
josedaparte 0:1334d6f26f42 139 case 5:
josedaparte 0:1334d6f26f42 140 pc.printf("aca ingresaria la temperatura\r\n");
josedaparte 0:1334d6f26f42 141 wait(1.5);
josedaparte 0:1334d6f26f42 142 break;
josedaparte 0:1334d6f26f42 143 case 6:
josedaparte 0:1334d6f26f42 144 pc.printf("aca ingresaria el tipo de banio\r\n");
josedaparte 0:1334d6f26f42 145 wait(1.5);
josedaparte 0:1334d6f26f42 146 break;
josedaparte 0:1334d6f26f42 147 case 4:
josedaparte 0:1334d6f26f42 148 sel = 1;
josedaparte 0:1334d6f26f42 149 menu(); //salida1
josedaparte 0:1334d6f26f42 150 break;
josedaparte 0:1334d6f26f42 151 case 8:
josedaparte 0:1334d6f26f42 152 pc.printf("aca ingresaria la temperatura2\r\n");
josedaparte 0:1334d6f26f42 153 wait(1.5);
josedaparte 0:1334d6f26f42 154 break;
josedaparte 0:1334d6f26f42 155 case 7:
josedaparte 0:1334d6f26f42 156 sel = 2;
josedaparte 0:1334d6f26f42 157 menu();
josedaparte 0:1334d6f26f42 158 break;
josedaparte 0:1334d6f26f42 159 case 9:
josedaparte 0:1334d6f26f42 160 pc.printf("aca ingresaria el horario\r\n");
josedaparte 0:1334d6f26f42 161 wait(1.5);
josedaparte 0:1334d6f26f42 162 break;
josedaparte 0:1334d6f26f42 163 case 10:
josedaparte 0:1334d6f26f42 164 pc.printf("aca ingresaria tipo banio\r\n");
josedaparte 0:1334d6f26f42 165 wait(1.5);
josedaparte 0:1334d6f26f42 166 break;
josedaparte 0:1334d6f26f42 167 }
josedaparte 0:1334d6f26f42 168
josedaparte 0:1334d6f26f42 169 }
josedaparte 0:1334d6f26f42 170
josedaparte 0:1334d6f26f42 171
josedaparte 0:1334d6f26f42 172 int main() {
josedaparte 0:1334d6f26f42 173
josedaparte 0:1334d6f26f42 174 Enable.rise(&func);
josedaparte 0:1334d6f26f42 175 pc.baud(115200);
josedaparte 0:1334d6f26f42 176 int comp;
josedaparte 0:1334d6f26f42 177
josedaparte 0:1334d6f26f42 178 while(1){
josedaparte 0:1334d6f26f42 179
josedaparte 0:1334d6f26f42 180 //convierte voltaje a temperatura
josedaparte 0:1334d6f26f42 181 casexterno = externo.read() * 3.3;
josedaparte 0:1334d6f26f42 182 texterno = (casexterno + 0.2) * 100 / 5;
josedaparte 0:1334d6f26f42 183 casinterno = interno.read() * 3.3;
josedaparte 0:1334d6f26f42 184 tinterno = (casinterno + 2) * 100 / 8;
josedaparte 0:1334d6f26f42 185
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
josedaparte 0:1334d6f26f42 189 comp = tinterno;
josedaparte 0:1334d6f26f42 190 if(comp == temp)
josedaparte 0:1334d6f26f42 191 pc.printf("las temperaturas son iguales\n\r");
josedaparte 0:1334d6f26f42 192 else
josedaparte 0:1334d6f26f42 193 pc.printf("temperaturas distintas\n\r");
josedaparte 0:1334d6f26f42 194 wait(1);
josedaparte 0:1334d6f26f42 195 }
josedaparte 0:1334d6f26f42 196 }