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

Dependencies:   TextLCD mbed

Revision:
3:ef1eaeaf5c4e
Parent:
2:a3cc9101e1c3
Child:
4:96c3f113f0b0
--- a/main.cpp	Mon Nov 30 23:19:34 2015 +0000
+++ b/main.cpp	Tue Dec 01 03:40:15 2015 +0000
@@ -5,6 +5,7 @@
 Serial pc(USBTX, USBRX);
 TextLCD lcd(PTD3, PTA12, PTA4, PTA5, PTC8, PTC9, TextLCD::LCD16x2);
 
+Timer t;
 DigitalIn key1(PTE31);
 DigitalIn key2(PTE19);
 DigitalIn key3(PTE18);
@@ -25,12 +26,24 @@
 int pdig, sdig, val;
 int i = 0;
 int tipobanio = 0;
-
-int num, B1,B2,B3,B4;
+int tempauto=0;
+int hora=0, min=0, seg=0;
+int B1,B2,B3,B4,num;
+int hh1,hh0,mm0,mm1;
 
 void menu();
 void selec();
-
+void imprimehora(){
+        lcd.locate(11,1);
+        if(min < 10 && hora >= 10)
+        lcd.printf("%2i:0%i", hora, min);
+        if(hora < 10 && min >= 10)
+        lcd.printf("0%i:%2i", hora, min);
+        if(hora < 10 && min < 10)
+        lcd.printf("0%i:0%i", hora, min);
+        if(hora >= 10 && min >= 10)   
+        lcd.printf("%i:%i", hora, min);
+        }
 
 void func()
 {
@@ -54,11 +67,100 @@
             case 0:
                 pc.printf("case 0");
                 break;
-            case 1:
-                pc.printf("case 1\n\r");
+            case 1:                                 //seteo hora
+                if(i == 0) {                        //set de primer digito hora
+                    if(num > 2){
+                        lcd.locate(0,0);
+                        lcd.printf("valor invalido");
+                        wait(.7);
+                        func();
+                        }
+                    else{
+                        hh1 = num;
+                        lcd.cls();
+                        lcd.printf("%dx:xx",hh1);
+                        lcd.locate(0,1);
+                        lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
+                        wait(.7);   
+                        i++;}}else                            //fin de set 1er digito hora ok
+                    if(i == 1){
+                        pc.printf("aca ingresaria 2 dig hora\n\r"); //inicio 2do digito hora
+                        if(hh1 == 2 && num > 4){
+                            lcd.locate(0,0);
+                            lcd.printf("valor invalido");
+                            wait(.7);
+                            func();
+                        }else{
+                        hh0 = num;
+                        lcd.cls();
+                        lcd.printf("%d%d:xx",hh1,hh0);
+                        lcd.locate(0,1);
+                        lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
+                        wait(.7);   
+                        i++;}
+                        }else                                       //fin 2do digito hora creo ok
+                    if(i == 2){
+                        pc.printf("aca ingresaria 1 dig seg\n\r");  //inicio 1er digito minuto
+                            if(num > 6){
+                                lcd.locate(0,0);
+                                lcd.printf("valor invalido");
+                                wait(.7);
+                                func();
+                            }else{
+                                mm1 = num;
+                                lcd.cls();
+                                lcd.printf("%d%d:%dx",hh1,hh0,mm1);
+                                lcd.locate(0,1);
+                                lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
+                                wait(.7); 
+                                i++;}
+                        }else                                       //fin 2do digito minuto
+                    if(i == 3){
+                        pc.printf("aca ingresaria 2 dig seg\n\r");  //inicio 2do digito minuto
+                        if(mm1 == 6){
+                                mm0 = 0;
+                            }else{
+                                mm0 = num;
+                                }
+                                lcd.cls();
+                                lcd.printf("%d%d:%d%d",hh1,hh0,mm1,mm0);
+                                lcd.locate(0,1);
+                                lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
+                                i++;
+                        
+                        }                                           //fin 2do digito minuto                                                
+                        if(i == 4) {
+                            hora = (hh1 * 10) + hh0;
+                            min = (mm1 * 10) + mm0;
+                            t.start();
+                            lcd.locate(0,0);
+                            lcd.printf("reloj          ");
+                            lcd.locate(0,1);
+                            lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
+                            i = 0;}
                 break;
             case 2:
-                pc.printf("case 2\n\r");
+                 pc.printf("ingreso temperaturas de auto\n\r");
+                if(num == 0 || num == 1 || num == 2) {
+                    tempauto = num;
+                    lcd.locate(0,0);
+                    if(num == 0)
+                        lcd.printf("tipo frio    ");
+                    else if(num == 1)
+                        lcd.printf("tipo normal  ");
+                        else
+                            lcd.printf("tipo caliente");
+                    wait(1);
+                    lcd.cls();
+                    lcd.printf("temperatura");
+                    set = 0;
+                } else {
+                    lcd.locate(0,0);
+                    lcd.printf("valor invalido");
+                    wait(1);
+                    lcd.printf("tipo banio");
+                    lcd.cls();
+                }
                 break;
             case 3:
                 pc.printf("ingreso tipo banio %d\n\r",num);
@@ -66,20 +168,20 @@
                     tipobanio = num;
                     lcd.locate(0,0);
                     if(num == 0)
-                        lcd.printf("banio rapido");
+                        lcd.printf("banio rapido  ");
                     else
-                        lcd.printf("banio normal");
+                        lcd.printf("banio normal  ");
                     wait(1);
                     lcd.cls();
-                    lcd.printf("tipo banio");
+                    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();
+                    lcd.printf("tipo banio  ");
                 }
                 break;
             case 4:
@@ -94,6 +196,12 @@
                     pc.printf("%.1d\n\r", sdig);
                     val = (pdig * 10) + sdig;
                     pc.printf("%.1d\n\r", val);
+                    imprimehora();
+                    lcd.locate(0,0);
+                    lcd.printf("temperatura a %d",val);
+                    wait(1);
+                    lcd.locate(0,0);
+                    lcd.printf("temperatura     ");
                 }
                 i++;
                 if(i == 2) {
@@ -106,99 +214,101 @@
                     tipobanio = num;
                     lcd.locate(0,0);
                     if(num == 0)
-                        lcd.printf("banio rapido");
+                        lcd.printf("banio rapido  ");
                     else
-                        lcd.printf("banio normal");
+                        lcd.printf("banio normal  ");
                     wait(1);
                     lcd.cls();
-                    lcd.printf("tipo banio");
+                    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();
+                    lcd.printf("tipo banio  ");
                 }
                 break;
         }
         pc.printf("salgo case\n\r");
+        pc.printf("%d",i);
     }
 }
 
 void menu ()
 {
     lcd.cls();
+    imprimehora();  
     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);
+            lcd.printf("%.0fC %.0fC %c ", 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);
+            lcd.printf("%.0fC %.0fC %c ", 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);
+            lcd.printf("%.0fC %.0fC %c ", 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);
+            lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
             sel = 5;
             break;
         case 5:
             lcd.locate(0,0);
-            lcd.printf("tipo banio");
+            lcd.printf("tipo banio  ");
             lcd.locate(0,1);
-            lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
+            lcd.printf("%.0fC %.0fC %c ", 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);
+            lcd.printf("%.0fC %.0fC %c ", 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);
+            lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
             sel = 8;
             break;
         case 8:
             lcd.locate(0,0);
-            lcd.printf("tipo banio");
+            lcd.printf("tipo banio  ");
             lcd.locate(0,1);
-            lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
+            lcd.printf("%.0fC %.0fC %c ", 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);
+            lcd.printf("%.0fC %.0fC %c ", 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);
+            lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
             sel = 7;
             break;
     }
@@ -221,14 +331,16 @@
         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");
+            lcd.locate(0,0);
+            lcd.printf(" 0_F 1_N 2_C");
             set = 2;
             break;
         case 6:
             pc.printf("aca ingresaria el tipo de banio\r\n");
+            lcd.locate(0,0);
             lcd.printf(" 0_rap 1_norm");
             set = 3;
             break;
@@ -238,6 +350,8 @@
             break;
         case 8:
             pc.printf("aca ingresaria la temperatura2\r\n");
+            lcd.locate(0,0);
+            lcd.printf("ingrese temperat");
             set = 5;
             break;
         case 7:
@@ -250,6 +364,7 @@
             break;
         case 10:
             pc.printf("aca ingresaria tipo banio\r\n");
+            lcd.locate(0,0);
             lcd.printf(" 0_rap 1_norm");
             set = 6;
             break;
@@ -260,12 +375,30 @@
 
 int main()
 {
-
+    t.start();
     pc.baud(115200);
     Enable.rise(&func);
 
     int comp;
     while(1) {
+//reloj
+    seg = t.read();
+        if(seg == 60)
+        {
+            seg=0;
+            t.reset();
+            min++;   
+        }
+        if(min==60)
+        {
+            min=0;
+            hora++; 
+        }
+        if(hora==24)
+        {
+            hora=0;}
+        imprimehora();            
+        
 //convierte voltaje a temperatura
         casexterno = externo.read() * 3.3;
         texterno = (casexterno + 0.2) * 100 / 5;
@@ -273,7 +406,7 @@
         tinterno = (casinterno + 2) * 100 / 8;
 
         lcd.locate(0,1);
-        lcd.printf("%.0fC %.0fC %c ho:ra", texterno, tinterno, modo);
+        lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
         comp = tinterno;
         if(comp == temp)
             pc.printf("las temperaturas son iguales\n\r");