testando

Dependencies:   mbed TextLCD2

Revision:
65:5a759e3014dd
Parent:
63:32ba7c4becfc
Child:
67:ecd4feb40f94
--- a/main_PM.cpp	Mon Jun 01 20:03:17 2020 +0000
+++ b/main_PM.cpp	Tue Jun 02 12:50:43 2020 +0000
@@ -115,26 +115,26 @@
 string status_tela = "zeramento";
 int programa = 0;
 
-float pos_x_pega = 0;
-float pos_y_pega = 0;
-float medida_lado_pega=0;
-float volume_pega = 0;
-int tipo_pega=0;
+float pos_x_pega[30];
+float pos_y_pega [30];
+float medida_lado_pega[30];
+float volume_pega[30];
+int tipo_pega[30];
 
-float dimensao_solta=0;
+float dimensao_solta[30];
 
-float volume_solta_1=0;
-float volume_solta_2=0;
-float volume_solta_3=0;
-float volume_solta_4=0;
-float volume_solta_5=0;
-float volume_solta_6=0;
-float volume_solta_7=0;
-float volume_solta_8=0;
-float volume_solta_9=0;
+float volume_solta_1[30];
+float volume_solta_2[30];
+float volume_solta_3[30];
+float volume_solta_4[30];
+float volume_solta_5[30];
+float volume_solta_6[30];
+float volume_solta_7[30];
+float volume_solta_8[30];
+float volume_solta_9[30];
 
-float pos_x_solta=0;
-float pos_y_solta=0;
+float pos_x_solta[30];
+float pos_y_solta[30];
 
 //main
 
@@ -268,21 +268,61 @@
         
         tecla = pega_tecla();    
         if(tecla =='1' && status_tela =="salvo_confirmacao"){  
-            funcao_salvo_agree_pos_aviso();
+            funcao_salvo_agree_pos_aviso(); //Tela de aviso ao usuário que a pega se deslocará na posição aduequada
             wait(3);
-            //posicionar no local da pega salvo; (motor -> programa.pos_x_pega e motor -> programa.pos_y_pega)
-            funcao_salvo_agree_pos_certo();
+            if(coord_x < pos_x_pega[programa]){ //posicionar no local da pega salvo; - se for menor o valor da referencia, gira no sentido horário para aumentar
+                mov_x_mais();                
+            }  
+            if (coord_x > pos_x_pega[programa]){ //posicionar no local da pega salvo; - se for maior o valor da referencia, gira no sentido antihorário para diminuir
+                mov_x_menos();    
+            }  
+            if(coord_y < pos_y_solta[programa]){ //posicionar no local da pega salvo; - se for menor o valor da referencia, gira no sentido horário para aumentar
+                mov_y_mais();                
+            }  
+            if (coord_y > pos_y_solta[programa]){ //posicionar no local da pega salvo; - se for maior o valor da referencia, gira no sentido antihorário para diminuir
+                mov_y_menos();    
+            }      
+            funcao_salvo_agree_pos_certo(); //Tela para o usuário confirmar se é essa a posição de fato da pega 
             status_tela="salvo_pos_certo_pega" ;}
         else if(tecla =='2' && status_tela =="salvo_confirmacao"){
-             funcao_salvo_agree_solta_aviso();
+             funcao_salvo_agree_solta_aviso();   //posicionar no local de solta para confirmação; (motor -> programa.pos_x_solta e motor -> programa.pos_y_solta)
              wait(3);
-             //posicionar no local de solta para confirmação; (motor -> programa.pos_x_solta e motor -> programa.pos_y_solta)
+             if(coord_x < pos_x_solta[programa]){ //posicionar no local da pega salvo; - se for menor o valor da referencia, gira no sentido horário para aumentar
+                mov_x_mais();                
+             }  
+             if (coord_x > pos_x_solta[programa]){ //posicionar no local da pega salvo; - se for maior o valor da referencia, gira no sentido antihorário para diminuir
+                mov_x_menos();    
+             }   
+             if(coord_y < pos_y_solta[programa]){ //posicionar no local da pega salvo; - se for menor o valor da referencia, gira no sentido horário para aumentar
+                mov_y_mais();                
+             }  
+             if (coord_y > pos_y_solta[programa]){ //posicionar no local da pega salvo; - se for maior o valor da referencia, gira no sentido antihorário para diminuir
+                mov_y_menos();    
+             }     
              funcao_salvo_agree_pos_certo();
              status_tela = "salvo_pos_certo_solta";}
         else if(tecla =='3' && status_tela =="salvo_confirmacao"){
-             funcao_salvo_agree_pega_vol();
-             //programação de volume igual da de cima (programa.vol_pega)
-             status_tela="salvo_conf_vol_pega";}     
+             funcao_salvo_agree_pega_vol();   //Função que imprime na tela do usuário que ele deve dar entreda no volume
+             continuar = 1;
+             multiplicador = 10; 
+            while(continuar){ // Pega o valor imputado pelo usuário
+                printf("\n%c",pega_tecla()); 
+                tecla = pega_tecla();
+                lcd.locate(6,1);
+                wait(1);
+                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
+                    volume = multiplicador*volume + ((int)tecla-48);    
+                    lcd.printf("%c", tecla);
+                }
+                else if(tecla == 'A'){
+                    volume_pega[programa]=volume  //recebe o valor que o usuário colocou no volume.
+                    lcd.locate(0,2);
+                    printf("Volume inputado!");
+                    continuar = 0;
+                    wait(1);
+                }
+            }                                  
+            status_tela="salvo_conf_vol_pega";}     
         else if(tecla =='4' && status_tela =="salvo_confirmacao"){
              funcao_salvo_agree_solta_vol();
              //volumes configurados por cada pipeta. (programa.vol_solta_pipeta)
@@ -302,7 +342,32 @@
             funcao_salvo_agree2();
             status_tela = "salvo_confirmacao";
             }//salva essa posição como correta
-        else if(tecla =='2' && status_tela =="salvo_pos_certo_pega"){}
+        else if(tecla =='2' && status_tela =="salvo_pos_certo_pega"){ //Caso o usuário queria ajustar o posicionamento
+            continuar = 1; //Inicia o loop de posicionamento
+            while(continuar){
+                 tecla = pega_tecla(); // pegla a tecla apertada pelo usuário para sair do loop
+                 if(x_menos == 0){mov_x_menos(); // Movimenta o eixo conforme o botão selecionado
+                    lcd.cls();      
+                    lcd.printf("X: %4.1f", coord_x);}  //Printa para o usuário isso
+                 else if(x_mais == 0){mov_x_mais();   // Movimenta o eixo conforme o botão selecionado
+                    lcd.cls();
+                    lcd.printf("X: %4.1f", coord_x);}  //Printa para o usuário isso
+                else if(y_menos == 0){mov_y_menos();  //Movimenta o eixo conforme o botão selecionado
+                    lcd.cls();      
+                    lcd.printf("Y: %4.1f", coord_y);} //Printa para o usuário isso
+                else if(y_mais == 0){mov_y_mais(); // Movimenta o eixo conforme o botão selecionado
+                    lcd.cls();      
+                    lcd.printf("Y: %4.1f", coord_y);} //Printa para o usuário isso
+                if(tecla=='A'){
+                    continuar = 0;
+                    pos_x_pega[programa] = coord_x;
+                    pos_y_pega[programa] = coord_y;
+                    lcd.printf("Posicao de x e y salva!");
+                    printf("Posicao X: %4.1f", coord_x);
+                    printf("Posicao Y: %4.1f", coord_y);
+                }
+            }
+        }
         else if(tecla =='B' && status_tela =="salvo_pos_certo_pega"){             
             funcao_salvo_agree1();
             wait(1);
@@ -329,7 +394,32 @@
             funcao_salvo_agree2();
             status_tela = "salvo_confirmacao";
             }//salva essa posição como correta
-        else if(tecla =='2' && status_tela =="salvo_pos_certo_solta"){}
+        else if(tecla =='2' && status_tela =="salvo_pos_certo_solta"){
+            continuar = 1; //Inicia o loop de posicionamento
+            while(continuar){
+                 tecla = pega_tecla(); // pegla a tecla apertada pelo usuário para sair do loop
+                 if(x_menos == 0){mov_x_menos(); // Movimenta o eixo conforme o botão selecionado
+                    lcd.cls();      
+                    lcd.printf("X: %4.1f", coord_x);}  //Printa para o usuário isso
+                 else if(x_mais == 0){mov_x_mais();   // Movimenta o eixo conforme o botão selecionado
+                    lcd.cls();
+                    lcd.printf("X: %4.1f", coord_x);}  //Printa para o usuário isso
+                else if(y_menos == 0){mov_y_menos();  //Movimenta o eixo conforme o botão selecionado
+                    lcd.cls();      
+                    lcd.printf("Y: %4.1f", coord_y);} //Printa para o usuário isso
+                else if(y_mais == 0){mov_y_mais(); // Movimenta o eixo conforme o botão selecionado
+                    lcd.cls();      
+                    lcd.printf("Y: %4.1f", coord_y);} //Printa para o usuário isso
+                if(tecla=='A'){
+                    continuar = 0;
+                    pos_x_pega[programa] = coord_x;
+                    pos_y_pega[programa] = coord_y;
+                    lcd.printf("Posicao de x e y salva!");
+                    printf("Posicao X: %4.1f", coord_x);
+                    printf("Posicao Y: %4.1f", coord_y);
+                }
+            }    
+        }
         else if(tecla =='B' && status_tela =="salvo_pos_certo_solta"){             
             funcao_salvo_agree1();
             wait(1);
@@ -358,7 +448,7 @@
         else if(tecla =='2' && status_tela == "novo"){
             volume = 0;
             printf("\n%c",pega_tecla());
-            funcao_pega_volume(); //!!!!!!!!!!!!!!!!!!!!!!!!!!!WTFFFFF
+            funcao_pega_volume(); // Função que permite a entreda do valor de volume pelo usuário
             status_tela = "volume";
             continuar = 1;
             multiplicador = 10;
@@ -372,6 +462,7 @@
                     lcd.printf("%c", tecla);
                 }
                 else if(tecla == 'A'){
+                    volume_pega[programa]=volume;
                     lcd.locate(0,2);
                     printf("Volume inputado!");
                     continuar = 0;
@@ -388,7 +479,6 @@
         }
         else if(tecla == '3' && status_tela == "novo"){
             funcao_pega_pos_x();
-            pos_x_pega = coord_x;
             continuar = 1;
             while(continuar){
                  tecla = pega_tecla();
@@ -400,6 +490,7 @@
                     lcd.printf("X: %4.1f", coord_x);}
                 if(tecla=='A'){
                     continuar = 0;
+                    pos_x_pega[programa] = coord_x;
                     lcd.printf("Posicao de x salva!");
                     printf("Posicao X: %4.1f", coord_x);
                 }