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

Dependencies:   TextLCD mbed

Committer:
josedaparte
Date:
Mon Nov 30 16:47:32 2015 +0000
Revision:
1:9ab0f526b7a7
Parent:
0:1334d6f26f42
Child:
2:a3cc9101e1c3
fdsa;

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