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

Dependencies:   TextLCD mbed

Revision:
4:96c3f113f0b0
Parent:
3:ef1eaeaf5c4e
Child:
5:c047b49f74e7
--- a/main.cpp	Tue Dec 01 03:40:15 2015 +0000
+++ b/main.cpp	Tue Dec 01 15:56:26 2015 +0000
@@ -27,12 +27,77 @@
 int i = 0;
 int tipobanio = 0;
 int tempauto=0;
-int hora=0, min=0, seg=0;
+int hora=0, min=0, seg=0, horain = 8, minin = 0, horafin = 22, minfin = 0, j = 0;
 int B1,B2,B3,B4,num;
 int hh1,hh0,mm0,mm1;
 
 void menu();
 void selec();
+void func();
+
+void sethora(){
+    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 
+                    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 
+    }
 void imprimehora(){
         lcd.locate(11,1);
         if(min < 10 && hora >= 10)
@@ -68,79 +133,20 @@
                 pc.printf("case 0");
                 break;
             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) {
+                        sethora();                           
+                        if(i == 4) {                                        //pasa la hora al reloj
                             hora = (hh1 * 10) + hh0;
                             min = (mm1 * 10) + mm0;
+                            hh0 = hh1 = mm1 = mm0 = 0;
                             t.start();
                             lcd.locate(0,0);
                             lcd.printf("reloj          ");
                             lcd.locate(0,1);
                             lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
                             i = 0;}
-                break;
+                break;                                                          //fin pasa hora al reloj
             case 2:
-                 pc.printf("ingreso temperaturas de auto\n\r");
+                 pc.printf("ingreso temperaturas de auto\n\r");                    //set temperaturas auto                
                 if(num == 0 || num == 1 || num == 2) {
                     tempauto = num;
                     lcd.locate(0,0);
@@ -162,7 +168,7 @@
                     lcd.cls();
                 }
                 break;
-            case 3:
+            case 3:                                                         //tipo de baño
                 pc.printf("ingreso tipo banio %d\n\r",num);
                 if(num == 0 || num == 1) {
                     tipobanio = num;
@@ -184,10 +190,35 @@
                     lcd.printf("tipo banio  ");
                 }
                 break;
-            case 4:
+            case 4:                                                 //set de horarios                                            
                 pc.printf("case 4\n\r");
+                sethora();                           
+                        if(i == 4 && j == 0) {                                        //pasa la hora al reloj
+                            horain = (hh1 * 10) + hh0;
+                            minin = (mm1 * 10) + mm0;
+                            hh0 = hh1 = mm1 = mm0 = 0;
+                            lcd.locate(0,0);
+                            lcd.printf("horario         ");
+                            lcd.locate(0,1);
+                            lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
+                            pc.printf("hora de inicio %d:%d\n\r",horain,minin);
+                            pc.printf("hora de fin %d:%d\n\r",horafin,minfin);
+                            i = 0;
+                            j = 1;}
+                        if(i == 4 && j == 1) {                                        //pasa la hora al reloj
+                            horafin = (hh1 * 10) + hh0;
+                            minfin = (mm1 * 10) + mm0;
+                            hh0 = hh1 = mm1 = mm0 = 0;
+                            lcd.locate(0,0);
+                            lcd.printf("horario         ");
+                            lcd.locate(0,1);
+                            lcd.printf("%.0fC %.0fC %c ", texterno, tinterno, modo);
+                            pc.printf("hora de inicio %d:%d\n\r",horain,minin);
+                            pc.printf("hora de fin %d:%d\n\r",horafin,minfin);
+                            i = 0;
+                            j = 0;}
                 break;
-            case 5:
+            case 5:                                                 //set temperatura manual
                 if(i == 0) {
                     pdig = num;
                     pc.printf("%.1d\n\r", pdig);
@@ -208,7 +239,7 @@
                     i = 0;
                 }
                 break;
-            case 6:
+            case 6:                                                     //tipo de banio manual
                 pc.printf("ingreso tipo banio %d\n\r",num);
                 if(num == 0 || num == 1) {
                     tipobanio = num;