Código para o menu no LCD

Dependencies:   mbed SDFileSystemSD TextLCD

Fork of TextLCD_HelloWorld2 by Wim Huiskamp

Revision:
6:24cbbdf2dac2
Parent:
5:30f5ffe0ea0b
Child:
7:e2c1b0338286
--- a/main.cpp	Wed May 09 20:27:39 2018 +0000
+++ b/main.cpp	Thu May 10 18:40:36 2018 +0000
@@ -105,11 +105,14 @@
 int bot_enter;
 int bot_cima;
 int bot_baixo;
+int penter = 0;
+int pcima = 0;
+int pbaixo = 0;
 
 //variáveis float
-float cx = 123;
-float cy = 456;
-float cz = 789;
+float cx = 12;
+float cy = 45;
+float cz = 78;
 
 //funções interrupt
 void botenter_press(void);
@@ -128,32 +131,48 @@
     int coluna;
     int func;
     
-    void movercursor(int min, int max){ //função para mover cursor de seleção
-        coluna = 0;
+    void movercursor(int min, int max, int col){ //função para mover cursor de seleção
         linha = min;
-        while (bot_enter==0){
+        while (bot_enter==penter){
             if (bot_cima==1){
                 if (linha==min){
+                    lcd.locate(col,min);
+                    lcd.printf(" ");
                     linha=max;
+                    lcd.locate(col, linha);
+                    lcd.printf("%c", 0x3E);
                     } 
                 else {
+                    lcd.locate(col,linha);
+                    lcd.printf(" ");
                     linha--;
+                    lcd.locate(col, linha);
+                    lcd.printf("%c", 0x3E);
                     }  
-
+                bot_cima = 0;
                 }
             if (bot_baixo==1){
                 if (linha==max){
+                    lcd.locate(col,max);
+                    lcd.printf(" ");
                     linha=min;
+                    lcd.locate(col, linha);
+                    lcd.printf("%c", 0x3E);
                     }
                 else {
+                    lcd.locate(col,linha);
+                    lcd.printf(" ");
                     linha++;
+                    lcd.locate(col, linha);
+                    lcd.printf("%c", 0x3E);
                     }
+                bot_baixo = 0;
                 }
-            lcd.locate(coluna, linha);
-            lcd.printf("%c", 0x3E);
-            printf("%d \n\r",linha);
+            //lcd.locate(col, linha);
+            //lcd.printf("%c", 0x3E);
+            //printf("%d \n\r",linha);
             printf("%d %d %d \n\r", bot_enter, bot_cima, bot_baixo);
-            wait(2);
+            wait_ms(500);
             }
             //printf("%d \n\r",linha);            
         }
@@ -179,8 +198,8 @@
         lcd.printf("Modo Automatico");
         lcd.locate(1,2);
         lcd.printf("Config");
-        movercursor(0,2);
-        if (bot_enter==1){
+        movercursor(0,2,0);
+        if (bot_enter!=penter){
             if (linha==0){
                 func = 2;
                 }
@@ -192,6 +211,35 @@
                 }
             }
         } 
+        
+        
+    //func 2    
+    void jog(){ //função tela jog
+        lcd.cls();
+        lcd.locate(0,0);
+        lcd.printf("X:%.1f Y:%.1f Z:%.1f", cx, cy, cz);
+        lcd.locate(11,1);
+        lcd.printf("Salvar");
+        lcd.locate(11,2);
+        lcd.printf("Concluir");
+        lcd.locate(11,3);
+        lcd.printf("Cancelar");
+        movercursor(1,3,11);
+        if (bot_enter!=penter){
+            if (linha==1){
+                func = 5;
+                }
+            else if (linha==2) {
+                func = 6;
+                }
+            else if (linha==3) {
+                func = 7;
+                }
+            }
+        
+        }
+        
+        
         Menu();
 };
 
@@ -206,21 +254,21 @@
     lcd.setCursor(TextLCD::CurOff_BlkOff);
     
     botao_enter.rise(&botenter_press);
-    botao_enter.fall(&botenter_solto);
+    //botao_enter.fall(&botenter_solto);
     
     botao_cima.rise(&botcima_press);
-    botao_cima.fall(&botcima_solto);
+    //botao_cima.fall(&botcima_solto);
     
     botao_baixo.rise(&botbaixo_press);
-    botao_baixo.fall(&botbaixo_solto);
-    
+    //botao_baixo.fall(&botbaixo_solto);
+       
         
     while(1){    
         //printf("%d %d %d \n\r", bot_enter, bot_cima, bot_baixo);
         switch(menu.func){
             case 0: menu.inicializar(); break;
             case 1: menu.menuprincipal(); break;
-            //case 2: menu.notReferenced(); break;
+            case 2: menu.jog(); break;
             //case 3: menu.notReferenced(2); break;
             //case 4: menu.notReferenced(3); break;
             //case 5: menu.referencing(); break;
@@ -243,34 +291,40 @@
 //função interrupt botão enter
         
 void botenter_press(void){
-          bot_enter = 1;
+          penter = bot_enter;
+          bot_enter = !bot_enter;
           printf("enter high");
           }
-void botenter_solto(void) {
-          bot_enter = 0;
+/*void botenter_solto(void) {
+          penter = bot_enter;
+          bot_enter = !bot_enter;
           printf("enter low");
-          }
+          }*/
           
 //função interrupt botão cima
           
 void botcima_press(void){
-          bot_cima = 1;
+          pcima = bot_cima;
+          bot_cima = !bot_cima;
           printf("cima high");
           }
-void botcima_solto(void) {
-          bot_cima = 0;
+/*void botcima_solto(void) {
+          pcima = bot_cima;
+          bot_cima = !bot_cima;
           printf("cima low");
-          }
+          }*/
 
 //função interrupt botão baixo          
           
 void botbaixo_press(void){
-          bot_baixo = 1;
+          pbaixo = bot_baixo;
+          bot_baixo = !bot_baixo;
           printf("baixo high");
           }
-void botbaixo_solto(void) {
-          bot_baixo = 0;
+/*void botbaixo_solto(void) {
+          pbaixo = bot_baixo;
+          bot_baixo = !bot_baixo;
           printf("baixo low");
-          }
+          }*/
         
                
\ No newline at end of file