el menu chanta! se maneja con los dos switch

Dependencies:   TextLCD mbed

main.cpp

Committer:
josedaparte
Date:
2015-11-30
Revision:
0:32e8c042c7e5

File content as of revision 0:32e8c042c7e5:

#include "mbed.h"
#include "AnalogIn.h"
#include "TextLCD.h"

Serial pc(USBTX, USBRX);
AnalogIn externo(PTC2);
AnalogIn interno(PTB3);
InterruptIn sw1(SW1);
InterruptIn sw3(SW3);
DigitalIn llave(PTA1);

 
TextLCD lcd(PTD3, PTA12, PTA4, PTA5, PTC8, PTC9, TextLCD::LCD16x2);

int temp = 26;
char tipo;
int sel = 1;
float casinterno;
float casexterno;
float tinterno;
float texterno;
char modo = 'M';  

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");
            wait(1.5);
            break;
        case 5:
            pc.printf("aca ingresaria la temperatura\r\n");
            wait(1.5);
            break;
        case 6:
            pc.printf("aca ingresaria el tipo de banio\r\n");
            wait(1.5);
            break;
        case 4:
            sel = 1;
            menu();                    //salida1
            break;
        case 8:
            pc.printf("aca ingresaria la temperatura2\r\n");
            wait(1.5);
            break;
        case 7:
            sel = 2;
            menu();
            break;
        case 9:
            pc.printf("aca ingresaria el horario\r\n");
            wait(1.5);
            break;
        case 10:
            pc.printf("aca ingresaria tipo banio\r\n");
            wait(1.5);
            break;
            }
    
    }

int main() {

    pc.baud(115200);

    int comp;

    while(1){
        
        sw1.fall(&menu);
        sw3.fall(&selec);
//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);
    }
}