proyectotecnicas
/
general
menu-teclado-lcd-pwm(funca todo) (y el puerto serie tambien)
main.cpp
- Committer:
- josedaparte
- Date:
- 2015-11-30
- Revision:
- 2:a3cc9101e1c3
- Parent:
- 1:9ab0f526b7a7
- Child:
- 3:ef1eaeaf5c4e
File content as of revision 2:a3cc9101e1c3:
#include "mbed.h" #include "TextLCD.h" #include "AnalogIn.h" Serial pc(USBTX, USBRX); TextLCD lcd(PTD3, PTA12, PTA4, PTA5, PTC8, PTC9, TextLCD::LCD16x2); DigitalIn key1(PTE31); DigitalIn key2(PTE19); DigitalIn key3(PTE18); DigitalIn key4(PTE17); InterruptIn Enable(PTA13); AnalogIn externo(PTC2); AnalogIn interno(PTB3); int temp = 26; char tipo; int sel = 1; float casinterno; float casexterno; float tinterno; float texterno; char modo = 'M'; int set = 0; int pdig, sdig, val; int i = 0; int tipobanio = 0; int num, B1,B2,B3,B4; void menu(); void selec(); void func() { B1 = key1.read(); B2 = key2.read(); B3 = key3.read(); B4 = key4.read(); num = 2*2*2*B1 + 2*2*B2 + 2*B3 + B4; pc.printf("llama a func\n\r"); if(num == 10) { set = 0; menu(); } else if(num == 11) { set = 0; selec(); } else if(num != 10 && num != 11) { pc.printf("antes del case\n\r"); switch(set) { case 0: pc.printf("case 0"); break; case 1: pc.printf("case 1\n\r"); break; case 2: pc.printf("case 2\n\r"); break; case 3: pc.printf("ingreso tipo banio %d\n\r",num); if(num == 0 || num == 1) { tipobanio = num; lcd.locate(0,0); if(num == 0) lcd.printf("banio rapido"); else lcd.printf("banio normal"); wait(1); lcd.cls(); lcd.printf("tipo banio"); pc.printf("%.1d\n\r", tipobanio); set = 0; } else { lcd.locate(0,0); lcd.printf("valor invalido"); wait(1); lcd.printf("tipo banio"); lcd.cls(); } break; case 4: pc.printf("case 4\n\r"); break; case 5: if(i == 0) { pdig = num; pc.printf("%.1d\n\r", pdig); } else if(i == 1) { sdig = num; pc.printf("%.1d\n\r", sdig); val = (pdig * 10) + sdig; pc.printf("%.1d\n\r", val); } i++; if(i == 2) { i = 0; } break; case 6: pc.printf("ingreso tipo banio %d\n\r",num); if(num == 0 || num == 1) { tipobanio = num; lcd.locate(0,0); if(num == 0) lcd.printf("banio rapido"); else lcd.printf("banio normal"); wait(1); lcd.cls(); lcd.printf("tipo banio"); pc.printf("%.1d\n\r", tipobanio); set = 0; } else { lcd.locate(0,0); lcd.printf("valor invalido"); wait(1); lcd.printf("tipo banio"); lcd.cls(); } break; } pc.printf("salgo case\n\r"); } } void menu () { lcd.cls(); switch (sel) { case 1: lcd.locate(0,0); lcd.printf("auto"); lcd.locate(0,1); lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo); sel = 2; break; case 2: lcd.locate(0,0); lcd.printf("manual"); lcd.locate(0,1); lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo); sel = 3; break; case 3: lcd.locate(0,0); lcd.printf("reloj"); lcd.locate(0,1); lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo); sel = 1; break; case 4: lcd.locate(0,0); lcd.printf("temperatura"); lcd.locate(0,1); lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo); sel = 5; break; case 5: lcd.locate(0,0); lcd.printf("tipo banio"); lcd.locate(0,1); lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo); sel = 6; break; case 6: lcd.locate(0,0); lcd.printf("horarios"); lcd.locate(0,1); lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo); sel = 9; break; case 7: lcd.locate(0,0); lcd.printf("temperatura"); lcd.locate(0,1); lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo); sel = 8; break; case 8: lcd.locate(0,0); lcd.printf("tipo banio"); lcd.locate(0,1); lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo); sel = 10; break; case 9: lcd.locate(0,0); lcd.printf("salir"); lcd.locate(0,1); lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo); sel = 4; break; case 10: lcd.locate(0,0); lcd.printf("salir"); lcd.locate(0,1); lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo); sel = 7; break; } } void selec() { switch (sel) { case 2: modo = 'A'; sel = 4; menu(); break; case 3: modo = 'M'; sel = 7; menu(); break; case 1: pc.printf("aca ingresaria la hora\r\n"); set = 1; wait(3); break; case 5: pc.printf("aca ingresaria la temperatura\r\n"); set = 2; break; case 6: pc.printf("aca ingresaria el tipo de banio\r\n"); lcd.printf(" 0_rap 1_norm"); set = 3; break; case 4: sel = 1; menu(); //salida1 break; case 8: pc.printf("aca ingresaria la temperatura2\r\n"); set = 5; break; case 7: sel = 2; menu(); break; case 9: pc.printf("aca ingresaria el horario\r\n"); set = 4; break; case 10: pc.printf("aca ingresaria tipo banio\r\n"); lcd.printf(" 0_rap 1_norm"); set = 6; break; } } int main() { pc.baud(115200); Enable.rise(&func); int comp; while(1) { //convierte voltaje a temperatura casexterno = externo.read() * 3.3; texterno = (casexterno + 0.2) * 100 / 5; casinterno = interno.read() * 3.3; tinterno = (casinterno + 2) * 100 / 8; lcd.locate(0,1); lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo); comp = tinterno; if(comp == temp) pc.printf("las temperaturas son iguales\n\r"); else pc.printf("temperaturas distintas\n\r"); wait(1); } }