testando

Dependencies:   mbed TextLCD2

Revision:
100:bbaf114eab93
Parent:
99:409a77673f2d
Child:
101:721038fb5c41
--- a/main_PM.cpp	Wed Jun 10 01:29:38 2020 +0000
+++ b/main_PM.cpp	Fri Jun 12 13:04:55 2020 +0000
@@ -23,6 +23,7 @@
 int est_z = 0;              //variável que indicará o estado do eixo z, pemitindo ou não que ele possa ser avançado depois de atingir o fim de curso
 float altura_solta = 50;
 string est_ihm = "novo";
+
 //pinos usados pelos botoes de fim de curso
 InterruptIn fdc_x(PC_10);
 InterruptIn fdc_y(PC_11);
@@ -80,27 +81,40 @@
         if (t_7 == 0)return('7');
         if (t_8 == 0)return('8');
         if (t_9 == 0)return('9');
-        return('k');}
+        return('k'); //caso nenhum botão seja apertado
+}
         
 //funcoes de fim de curso por interrupção
-void lim_x(){for(int i = 0; i < 4; i++){TextLCD lcd(D4, D5, D6, D7, D8, D9);
-            eixox = parado[i];wait(t_motor);
-            lcd.cls();lcd.printf("Limite de x atingido");
-            lcd.locate(0,2);lcd.printf("Pressione 0 para continuar");
-            est_x = 1;}}
+void lim_x(){
+    for(int i = 0; i < 4; i++){TextLCD lcd(D4, D5, D6, D7, D8, D9);
+        eixox = parado[i];wait(t_motor);
+        lcd.cls();lcd.printf("Limite de x atingido");
+        lcd.locate(0,2);lcd.printf("Pressione 0 para continuar");
+        est_x = 1;
+    }
+}
 
-void lim_y(){for(int i = 0; i < 4; i++){TextLCD lcd(D4, D5, D6, D7, D8, D9);
-            eixoy = parado[i];wait(t_motor);
-            lcd.cls();lcd.printf("Limite de y atingido");
-            lcd.locate(0,2);lcd.printf("Pressione 0 para continuar");
-            est_y = 1;}}
+void lim_y(){
+    for(int i = 0; i < 4; i++){TextLCD lcd(D4, D5, D6, D7, D8, D9);
+    eixoy = parado[i];wait(t_motor);
+    lcd.cls();lcd.printf("Limite de y atingido");
+    lcd.locate(0,2);lcd.printf("Pressione 0 para continuar");
+    est_y = 1;
+    }
+}
 
-void lim_z(){for(int i = 0; i < 4; i++){TextLCD lcd(D4, D5, D6, D7, D8, D9);
-            eixoz = parado[i];wait(t_motor);
-            lcd.cls();lcd.printf("Limite de z atingido");
-            lcd.locate(0,2);lcd.printf("Pressione 0 para continuar");
-            est_z = 1;}}
-void reseta_eixo(){est_x = 0;est_y = 0;est_z = 0;}
+void lim_z(){
+    for(int i = 0; i < 4; i++){TextLCD lcd(D4, D5, D6, D7, D8, D9);
+    eixoz = parado[i];wait(t_motor);
+    lcd.cls();lcd.printf("Limite de z atingido");
+    lcd.locate(0,2);lcd.printf("Pressione 0 para continuar");
+    est_z = 1;
+    }
+}
+
+void reseta_eixo(){
+    est_x = 0;est_y = 0;est_z = 0;
+}
 
 //funcao de movimentacao dos motores
 void mov_x_menos(){for(int i = 0; i < 4; i++){eixox = antihor[i];wait(t_motor);coord_x -= (5.625*5/32)/360;}}
@@ -110,97 +124,74 @@
 void mov_y_mais() {for(int i = 0; i < 4; i++){eixoy =     hor[i];wait(t_motor);coord_y += (5.625*5/32)/360;est_y = 0;}}
 void mov_z_mais() {for(int i = 0; i < 4; i++){eixoz =     hor[i];wait(t_motor);coord_z += (5.625*5/32)/360;est_z = 0;}}
 
+//Função para mover um motor de um ponto do plano xy para outro ponto no mesmo plano
 void go_to_posicao(float posicao_x, float posicao_y){
-    while(coord_x < posicao_x){ //posicionar no local da pega salvo; - se for menor o valor da referencia, gira no sentido horário para aumentar
-            mov_x_mais();                
-         }  
-     while(coord_x > posicao_x){ //posicionar no local da pega salvo; - se for maior o valor da referencia, gira no sentido antihorário para diminuir
-        mov_x_menos();
-   }
-    while(coord_y < posicao_y){ //posicionar no local da pega salvo; - se for menor o valor da referencia, gira no sentido horário para aumentar
-        mov_y_mais();                
+    while(coord_x < posicao_x){//ccord_x representa a posicao atual de x e posicao_x é a posicao em x que se quer atingir. 
+        mov_x_mais(); //gira no sentido horário
     }  
-    while(coord_y > posicao_y){ //posicionar no local da pega salvo; - se for maior o valor da referencia, gira no sentido antihorário para diminuir
-        mov_y_menos();    
-   };
+    while(coord_x > posicao_x){ 
+        mov_x_menos(); //gira no sentido anti-horário
+    }
+    while(coord_y < posicao_y){ //ccord_y representa a posicao atual de y e posicao_y é a posicao em y que se quer atingir. 
+        mov_y_mais();  //gira no sentido horário            
+    }  
+    while(coord_y > posicao_y){ 
+        mov_y_menos();   //gira no sentido anti-horário
+    };
 }
 
-float calcula_altura(int forma_do_pega, int dimensao, float v, int contador){
+//Calcular a altura do pega com base no tipo do pega
+//a dimensão do pega pode ser o lado de um quadrado ou diâmetro de uma circunferência. O contador se refere a quantas vezes o líquido já foi retirado do pega.
+float calcula_altura(int forma_do_pega, int dimensao, float v, int contador){ 
     if(forma_do_pega==1){//quad
         return (v-contador)/(dimensao*dimensao)*0.001-4;
    }
-   else if(forma_do_pega==2){//red
+   else{//red
         return ((v-contador)/(PI*(dimensao/2)*(dimensao/2))*0.001-4);
    };
 }
 
 void go_to_z(float posicao_z){
-    while(coord_z < posicao_z){ //posicionar no local da pega salvo; - se for menor o valor da referencia, gira no sentido horário para aumentar
-                mov_z_mais();                
-             }  
-     while(coord_z > posicao_z){ //posicionar no local da pega salvo; - se for maior o valor da referencia, gira no sentido antihorário para diminuir
-        mov_z_menos();
+    while(coord_z < posicao_z){ //coord_z representa a posicao atual de z e posicao_z é a posicao em z que se quer atingir. 
+        mov_z_mais(); //gira no sentido horário         
+     }  
+     while(coord_z > posicao_z){ 
+        mov_z_menos(); //gira no sentido anti-horário 
    }
 }
 
-//Funcao de colocar;modificar volume no solta
-void modifica_solta(bool condicao, int volume,  int posicao_cursor_0, int posicao_cursor_1, int volume_do_solta){
-    TextLCD lcd(D4, D5, D6, D7, D8, D9);
-    while(condicao){ // Pega o valor imputado pelo usuário
-        tecla = pega_tecla();
-        wait(t_teclado);
-        if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
-            if(volume*10<100)
-            {
-                volume =10*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
-                lcd.printf("%c", tecla);
-            }
-            else
-            {
-                volume = 0;
-                lcd.locate(posicao_cursor_0,posicao_cursor_1);
-            }
-        }
-        else if(tecla == 'A'){
-            tecla = 'k';
-            condicao = 0;
-            volume_do_solta = volume; 
-            printf("SAIUU");
-        }
+//Funcao da rotina de execucao
+void rotina_pino(float volume_solta, int tipo_do_pega, float medida_do_pega, float volume_do_pega, int contador, float pos_pino_x, float pos_pino_y){
+    for(int i; i < volume_solta; i++){ //
+        float altura = calcula_altura(tipo_do_pega,medida_do_pega, volume_do_pega, contador);
+        go_to_z(altura); //move z até a altura para sugar o líquido
+        pipeta = 0; //aciona a pipeta pelo relé
+        wait(1);
+        pipeta = 1; //desaciona a pipeta
+        go_to_z(normal_z);//move z até a posicao normal de z (posicao de z que não vai atrapalhar o processo de pipetagem)
+        go_to_posicao(pos_pino_x,pos_pino_y); //move até o pino pelo plano de x e y
+        go_to_z(altura_solta);//Após chegar na posicao xy desejada, a pipeta desce para a altura do solta
+        pipeta = 0; //aciona a pipeta e solta o líquido no solta
+        wait(1);
+        pipeta = 1; //desaciona a pipeta
+        go_to_z(normal_z);//volta para a posicao normal de z
+        contador+=1; //contabiliza uma pipetagem
     }
 }
 
-//Funcao da torina de execucao
-void rotina_pino(float volume_solta, int tipo_do_pega, float medida_do_pega, float volume_do_pega, int contador, float pos_pino_x, float pos_pino_y){
-    printf("Entrou na funcao de exec!");
-    for(int i; i < volume_solta; i++){
-        float altura = calcula_altura(tipo_do_pega,medida_do_pega, volume_do_pega, contador);
-        go_to_z(altura);
-        pipeta = 0;
-        wait(1);
-        pipeta = 1;
-        go_to_z(normal_z);
-        go_to_posicao(pos_pino_x,pos_pino_y);
-        go_to_z(altura_solta);
-        pipeta = 0;
-        wait(1);
-        pipeta = 1;
-        go_to_z(normal_z);
-        contador+=1;
-    }
-    printf("SAIU EXECC!!");
-}
-
 //Função que troca de tela
-void troca_tela(bool cond, void telas1(), void telas2(), float valort11, float valort12, float valort21, float valort22, int argumento){
-    TextLCD lcd(D4, D5, D6, D7, D8, D9);
-    printf("Entrou funcao modifica solta!");
-    while(cond){
+void troca_tela(bool condicao, void telas1(), void telas2(), float valort11, float valort12, float valort21, float valort22, int argumento){
+    //telas1 e telas2 são as telas a serem alternadas
+    //valort11, 12, 21 e 22 são os valores que vão ser comparados para imprimir um OK no display
+    //argumento seria a quantidade de informações pedidas para o usuário
+    
+    TextLCD lcd(D4, D5, D6, D7, D8, D9); //inicializa o LCD 
+    while(condicao){
         telas1();
         if(argumento == 1){
-            if(valort11 !=0){
+            if(valort11 !=0){ //comparação do valort11
                 lcd.locate(18,1);
-                lcd.printf("OK");
+                lcd.printf("OK");//para caso o usuário tenha inputado um valort11 diferente de 0. A mesma lógica é usada para valort12, 21 e 22. 
             }
         }
         else if(argumento >= 2){
@@ -212,11 +203,14 @@
             }
         }
         wait(2);
+        
+        //Foi adicionado um refresh de tecla para que o usuário possa escolher um comando apresentado na tela
         tecla = pega_tecla();
+        //Caso tecla seja diferente de 'k', as telas param de alternar
         if(tecla!='k'){
-            printf("entrou no if");
-            cond = 0;
+            condicao = 0;
         } 
+        
         telas2();
         if(argumento == 3){
               if(valort21!=0){
@@ -232,31 +226,33 @@
             }
         }
         wait(2);
+        
         tecla = pega_tecla();
         if(tecla!='k'){
-            printf("entrou no if");
-            cond = 0;
+            condicao = 0;
         }  
     };
 }
 //Funcao que será chamada na interrupcao da queda do botao de emergencia
 void emergencia(){TextLCD lcd(D4, D5, D6, D7, D8, D9); 
-        rele2 = 0; //desligamento eletrico dos motores   
-        eixox = 0b0000; //desligamento do motor do eixo x a partir do zeramento do estado de todas as suas bobinas
-        eixoy = 0b0000; //desligamento do motor do eixo x a partir do zeramento do estado de todas as suas bobinas
-        eixoz = 0b0000; //desligamento do motor do eixo x a partir do zeramento do estado de todas as suas bobinas
-        lcd.cls();lcd.printf("EMERGENCIA ACIONADA"); //aviso da situacao de emergencia da maquina
-        lcd.locate(0,1);lcd.printf("Desarme o botao");
-        lcd.locate(0,2);lcd.printf("e pressione B para");
-        lcd.locate(0,3);lcd.printf("prosseguir");
-        wait(1);}
+    rele2 = 0; //desligamento eletrico dos motores   
+    eixox = 0b0000; //desligamento do motor do eixo x a partir do zeramento do estado de todas as suas bobinas
+    eixoy = 0b0000; //desligamento do motor do eixo x a partir do zeramento do estado de todas as suas bobinas
+    eixoz = 0b0000; //desligamento do motor do eixo x a partir do zeramento do estado de todas as suas bobinas
+    lcd.cls();lcd.printf("EMERGENCIA ACIONADA"); //aviso da situacao de emergencia da maquina
+    lcd.locate(0,1);lcd.printf("Desarme o botao");
+    lcd.locate(0,2);lcd.printf("e pressione B para");
+    lcd.locate(0,3);lcd.printf("prosseguir");
+    wait(1);
+}
 
 //Funcao de zeramento, chamada assim que a maquina liga e impede que o codigo entre no while(1) enquanto nao for 100% executada.
 //Ela aciona os motores ate que o fim de curso seja atingido e pressionado, além de zerar todas as coordenadas dos eixos quando os fins de curso são acionados.
 void zeramento(){
     while (fdc_x != 0){for(int i = 0; i < 4; i++){eixox = hor[i];wait(t_motor);est_x = 1;}}
     while (fdc_y != 0){for(int i = 0; i < 4; i++){eixoy = hor[i];wait(t_motor);est_y = 1;}}
-    while (fdc_z != 0){for(int i = 0; i < 4; i++){eixoz = hor[i];wait(t_motor);est_z = 1;}}}
+    while (fdc_z != 0){for(int i = 0; i < 4; i++){eixoz = hor[i];wait(t_motor);est_z = 1;}}
+}
 
 //Variaveis para operacao IHM
 using std::string;
@@ -266,32 +262,33 @@
 int programa = 0;    //A variável programa remete a que programa salvo o usuário deseja acessar 
 
 //Informações sobre o pega a serem armazenadas no array do programa que está sendo construido pelo usuário
-float pos_x_pega[30];
-float pos_y_pega [30];
-float medida_lado_pega[30];
-float volume_pega[30];
-int tipo_pega[30];
-int nome_programa[30];
+//O comprimento de cada array é de 6 pois podem ser "salvos" apenas 6 programas 
+float pos_x_pega[6];
+float pos_y_pega [6];
+float medida_lado_pega[6];
+float volume_pega[6];
+int tipo_pega[6];
+int nome_programa[6];
 
 //parametros que são de confirmação
-int confirmacao_vol_solta[30];
-int confirmacao_vol_pega[30];
-int confirmacao_pos_solta[30];
-int confirmacao_pos_pega[30];
+int confirmacao_vol_solta[6];
+int confirmacao_vol_pega[6];
+int confirmacao_pos_solta[6];
+int confirmacao_pos_pega[6];
 
 //Informações sobre os solta's a serem armazenadas no array do programa que está sendo construido pelo usuário
-float dimensao_solta[30];
-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[30];
-float pos_y_solta[30];
+float dimensao_solta[6];
+float volume_solta_1[6];
+float volume_solta_2[6];
+float volume_solta_3[6];
+float volume_solta_4[6];
+float volume_solta_5[6];
+float volume_solta_6[6];
+float volume_solta_7[6];
+float volume_solta_8[6];
+float volume_solta_9[6];
+float pos_x_solta[6];
+float pos_y_solta[6];
 
 //Função que coloca OK nas telas de salvo_agree1()
 void ok_agree1(){
@@ -317,32 +314,33 @@
 
 //main
 int main() {
-        interrupcao.fall(&emergencia);
-        fdc_x.fall(&lim_x);
-        fdc_y.fall(&lim_y);
-        fdc_z.fall(&lim_z);
-        fdc_x.rise(&reseta_eixo);
-        fdc_y.rise(&reseta_eixo);
+        interrupcao.fall(&emergencia); //faz a leitura de inturrupção logo depois que o botão é pressionado e executa a rotina de emergência
+        fdc_x.fall(&lim_x); //faz a leitura de inturrupção do fdc_x logo depois que o botão é pressionado e executa lim_x
+        fdc_y.fall(&lim_y); //faz a leitura de inturrupção do fdc_y logo depois que o botão é pressionado e executa lim_y
+        fdc_z.fall(&lim_z); //faz a leitura de inturrupção do fdc_z logo depois que o botão é pressionado e executa a lim_z
+        fdc_x.rise(&reseta_eixo); //faz a leitura de inturrupção do fdc_x logo depois que o botão é soltado e executa o reseta_eixo
         fdc_z.rise(&reseta_eixo);    
-        int volume; //variaveis que precisam ser construídas de modo global
+        //Variáveis de iteração (serão utilizadas como variável nos cálculos para depois, fornecer o valor para o pega e os soltas)
+        int volume; 
         int volume_solta;
         int diametro_solta;
         int diametro;
         int comprimento_quad;
-        bool continuar;
+        bool continuar; //condicao de verdade para loops que serão utilizados
         int multiplicador = 10;
         TextLCD lcd(D4, D5, D6, D7, D8, D9); //Pinos para ligar o display à NUCLEO
         
         //Tela inicial 
         lcd.printf("Bem-vindo ao Pipemax");
-        lcd.locate(3,1);
+        lcd.locate(3,1); //funcao que posiciona o texto na tela
         lcd.printf("o seu sistema");
         lcd.locate(4,2);
         lcd.printf("automatizado");
         lcd.locate(3,3);
         lcd.printf("de pipetagem");
         wait(3);
-        lcd.cls();
+        lcd.cls(); //funcao que limpa a tela
+        
         //tela de espera do zeramento do sistema, enquanto ele não for aceito, a maquina nao pode operar
         lcd.printf("Por favor, aceite");
         lcd.locate(0,1);
@@ -351,7 +349,8 @@
         lcd.printf("sistema");
         lcd.locate(0,3);
         lcd.printf("A - proximo");    
-             
+    
+    //ピペマックス
     //Loop principal
     while(1) {
         printf("\n ihm: %s",est_ihm);
@@ -366,13 +365,16 @@
         if(tecla == 'A' && status_tela == "zeramento"){
             zeramento();
             status_tela = "inicio";
-            funcao_inicio();}
+            funcao_inicio();
+        }
 
+        //Tirar essa parte???#############################################################################3
         //Caso nenhum botão esteja apertado, os motores devem permanecer parados
         if(x_mais && x_menos && y_mais && y_menos && z_mais && z_menos != 0){
             for(int i = 0; i < 4; i++){eixox = parado[i];}
             for(int i = 0; i < 4; i++){eixoy = parado[i];}
-            for(int i = 0; i < 4; i++){eixoz = parado[i];}}
+            for(int i = 0; i < 4; i++){eixoz = parado[i];}
+        }
     
         tecla = pega_tecla();//Atualiza a variável tecla
         
@@ -381,7 +383,9 @@
             est_ihm = "pega";
             continuar = 1; //Condição de funcionamento do loop abaixo
             status_tela = "novo";
-            troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa], volume_pega[programa], pos_y_pega[programa],0,3);}
+            //alternar entre as telas funcao_pega1 e funcao_pega2 (itens 2 e 3 da função) 
+            troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa], volume_pega[programa], pos_y_pega[programa],0,3);
+        }
 
         else if(tecla == '2' && status_tela == "inicio"){   //Ações para a tela inicial quando o usuário seleciona programas salvos
             continuar = 1;
@@ -413,19 +417,19 @@
             status_tela = "salvo_confirmacao";
             troca_tela(continuar, funcao_salvo_agree1, funcao_salvo_agree2, confirmacao_pos_pega[programa], confirmacao_pos_solta[programa],confirmacao_vol_pega[programa],confirmacao_vol_solta[programa],4);
             programa = 1; 
-            }
+        }
         else if(tecla =='2' && status_tela =="salvo"){
             status_tela = "salvo_confirmacao";
             continuar = 1;
             troca_tela(continuar, funcao_salvo_agree1, funcao_salvo_agree2, confirmacao_pos_pega[programa], confirmacao_pos_solta[programa],confirmacao_vol_pega[programa],confirmacao_vol_solta[programa],4);
             programa = 2;
-            }
+        }
         else if(tecla =='3' && status_tela =="salvo"){
             continuar = 1;
             status_tela = "salvo_confirmacao";
             troca_tela(continuar, funcao_salvo_agree1, funcao_salvo_agree2, confirmacao_pos_pega[programa], confirmacao_pos_solta[programa],confirmacao_vol_pega[programa],confirmacao_vol_solta[programa],4);
             programa = 3;
-            }
+        }
         else if(tecla =='4' && status_tela =="salvo"){
             continuar = 1;
             troca_tela(continuar, funcao_salvo_agree1, funcao_salvo_agree2, confirmacao_pos_pega[programa], confirmacao_pos_solta[programa],confirmacao_vol_pega[programa],confirmacao_vol_solta[programa],4);
@@ -436,18 +440,18 @@
             status_tela = "salvo_confirmacao";
             troca_tela(continuar, funcao_salvo_agree1, funcao_salvo_agree2, confirmacao_pos_pega[programa], confirmacao_pos_solta[programa],confirmacao_vol_pega[programa],confirmacao_vol_solta[programa],4);
             programa = 5;
-            }
+        }
         else if(tecla =='6' && status_tela =="salvo"){
             continuar = 1;
             status_tela = "salvo_confirmacao";
             troca_tela(continuar, funcao_salvo_agree1, funcao_salvo_agree2, confirmacao_pos_pega[programa], confirmacao_pos_solta[programa],confirmacao_vol_pega[programa],confirmacao_vol_solta[programa],4);
             programa = 6;
-            }
+        }
         else if(tecla =='B' && status_tela =="salvo"){
             status_tela = "inicio";
             continuar = 1;
             funcao_inicio();
-            }      
+        }      
         
         tecla = pega_tecla();//Atualiza a variável tecla
         
@@ -541,17 +545,17 @@
             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)
-             lcd.locate(1,0);lcd.printf("%d",volume_solta_1[programa]);
-             lcd.locate(8,0);lcd.printf("%d",volume_solta_2[programa]);
-             lcd.locate(16,0);lcd.printf("%d",volume_solta_3[programa]);
+             lcd.locate(1,0);lcd.printf("%g",volume_solta_1[programa]);
+             lcd.locate(8,0);lcd.printf("%g",volume_solta_2[programa]);
+             lcd.locate(16,0);lcd.printf("%g",volume_solta_3[programa]);
              
-             lcd.locate(1,1);lcd.printf("%d",volume_solta_4[programa]);
-             lcd.locate(8,1);lcd.printf("%d",volume_solta_5[programa]);
-             lcd.locate(16,1);lcd.printf("%d",volume_solta_6[programa]);
+             lcd.locate(1,1);lcd.printf("%g",volume_solta_4[programa]);
+             lcd.locate(8,1);lcd.printf("%g",volume_solta_5[programa]);
+             lcd.locate(16,1);lcd.printf("%g",volume_solta_6[programa]);
              
-             lcd.locate(1,2);lcd.printf("%d",volume_solta_7[programa]);
-             lcd.locate(8,2);lcd.printf("%d",volume_solta_8[programa]);
-             lcd.locate(16,2);lcd.printf("%d",volume_solta_9[programa]);                     
+             lcd.locate(1,2);lcd.printf("%g",volume_solta_7[programa]);
+             lcd.locate(8,2);lcd.printf("%g",volume_solta_8[programa]);
+             lcd.locate(16,2);lcd.printf("%g",volume_solta_9[programa]);                     
              status_tela="salvo_conf_vol_solta";}
         else if(tecla =='B' && status_tela =="salvo_confirmacao"){ 
             funcao_salvo1();
@@ -693,17 +697,17 @@
             funcao_salvo_vol_solta_modifica();
             wait(5);
             funcao_salvo_agree_solta_vol();
-             lcd.locate(2,0);lcd.printf("%d",volume_solta_1[programa]);
-             lcd.locate(9,0);lcd.printf("%d",volume_solta_2[programa]);
-             lcd.locate(17,0);lcd.printf("%d",volume_solta_3[programa]);
+             lcd.locate(2,0);lcd.printf("%g",volume_solta_1[programa]);
+             lcd.locate(9,0);lcd.printf("%g",volume_solta_2[programa]);
+             lcd.locate(17,0);lcd.printf("%g",volume_solta_3[programa]);
              
-             lcd.locate(2,1);lcd.printf("%d",volume_solta_4[programa]);
-             lcd.locate(9,1);lcd.printf("%d",volume_solta_5[programa]);
-             lcd.locate(17,1);lcd.printf("%d",volume_solta_6[programa]);
+             lcd.locate(2,1);lcd.printf("%g",volume_solta_4[programa]);
+             lcd.locate(9,1);lcd.printf("%g",volume_solta_5[programa]);
+             lcd.locate(17,1);lcd.printf("%g",volume_solta_6[programa]);
              
-             lcd.locate(2,2);lcd.printf("%d",volume_solta_7[programa]);
-             lcd.locate(9,2);lcd.printf("%d",volume_solta_8[programa]);
-             lcd.locate(17,2);lcd.printf("%d",volume_solta_9[programa]);
+             lcd.locate(2,2);lcd.printf("%g",volume_solta_7[programa]);
+             lcd.locate(9,2);lcd.printf("%g",volume_solta_8[programa]);
+             lcd.locate(17,2);lcd.printf("%g",volume_solta_9[programa]);
              bool cleber = 1;
             while(cleber){
                 tecla = pega_tecla();
@@ -714,8 +718,7 @@
                      volume = 0;
                      continuar = 1;
                      lcd.locate(2,0);
-                     modifica_solta(continuar, volume,  2, 0, volume_solta_1[programa]);
-                    while(continuar){ // Pega o valor imputado pelo usuário
+                     while(continuar){ // Pega o valor imputado pelo usuário
                         printf("\n%c",pega_tecla()); 
                         tecla = pega_tecla();
                         wait(t_teclado);
@@ -948,886 +951,778 @@
         } //fim if(est_ihm)
         
         if(est_ihm == "pega"){
-        //Ações para a tela novo
-        if(tecla =='1' && status_tela =="novo"){
-            funcao_pega_forma();
-            status_tela ="forma";}
-    
-        else if(tecla =='2' && status_tela == "novo"){
-            volume = 0;
-            printf("\n%c",pega_tecla());
-            funcao_pega_volume(); // Função que permite a entreda do valor de volume pelo usuário
-            status_tela = "volume";
-            continuar = 1;
-            lcd.locate(6,1);
-            while(continuar){
-                printf("\n%c",pega_tecla()); 
+            
+            //Ações para a tela novo
+            if(tecla =='1' && status_tela =="novo"){
+                funcao_pega_forma();
+                status_tela ="forma";
+            }
+        
+            else if(tecla =='2' && status_tela == "novo"){
+                volume = 0;
+                printf("\n%c",pega_tecla());
+                funcao_pega_volume(); // Função que permite a entreda do valor de volume pelo usuário
+                status_tela = "volume";
+                continuar = 1;
+                lcd.locate(6,1);
+                while(continuar){
+                    printf("\n%c",pega_tecla()); 
+                    tecla = pega_tecla();
+                    wait(t_teclado);
+                    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;
+                        lcd.locate(0,2);
+                        printf("Volume inputado!");
+                        continuar = 0;
+                        wait(1);
+                    }
+                    else if(tecla=='B'){
+                        funcao_pega1();
+                        if(medida_lado_pega !=0){
+                            lcd.locate(18,1);lcd.printf("OK");   
+                        }
+                        if(volume_pega !=0){
+                            lcd.locate(18,2);lcd.printf("OK");
+                        }
+                        wait(1);
+                        funcao_pega2();
+                        if(pos_y_pega[programa] !=0){
+                            lcd.locate(18,1);lcd.printf("OK");    
+                        }
+                        status_tela = "novo";
+                        continuar = 0;
+                    }
+                }   
+            }
+            else if(tecla == '3' && status_tela == "novo"){
+                funcao_pega_pos_x();
+                status_tela = "pos_x";
+                continuar = 1;
+                 while(continuar){
+                        tecla = pega_tecla();
+                     if(x_menos == 0){mov_x_menos();
+                        lcd.cls();      
+                        lcd.printf("X: %4.1f", coord_x);}
+                     else if(x_mais == 0){mov_x_mais();
+                        lcd.cls();
+                        lcd.printf("X: %4.1f", coord_x);}
+                    if(tecla=='A'){
+                        pos_x_pega[programa] = coord_x;
+                        continuar = 0;
+                        printf("Posicao de y salva!");
+                        printf("Posicao X: %4.1f", coord_x);
+                    }
+                }
+            }
+            else if(tecla == 'B' && status_tela == "novo"){
+                funcao_inicio();
+                status_tela = "inicio";
+            }
+            else if(tecla == '1' && status_tela == "salvo"){
+                funcao_salvo_agree1();
+                ok_agree1();
+                status_tela = "confirmacao";
+            }
+            else if(tecla =='2' && status_tela == "salvo"){
+                funcao_salvo_agree1();
+                ok_agree1();
+                status_tela = "confirmacao";
+            }
+            else if(tecla =='B' && status_tela == "salvo"){
+                funcao_inicio();
+                status_tela = "inicio";
+            }
+                
+            wait(t_teclado);
+            tecla = pega_tecla();    
+            
+            //Ações para a tela forma (para definir o formato do recipiente de pega)
+            if(tecla == '1' && status_tela == "forma"){
+                wait(0.5);
+                funcao_pega_forma_quad();
+                tipo_pega[programa] =1;
                 tecla = pega_tecla();
                 wait(t_teclado);
-                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;
-                    lcd.locate(0,2);
-                    printf("Volume inputado!");
-                    continuar = 0;
-                    wait(1);
-                }
-                else if(tecla=='B'){
-                    funcao_pega1();
-                    if(medida_lado_pega !=0){
-                        lcd.locate(18,1);lcd.printf("OK");   
-                    }
-                    if(volume_pega !=0){
-                        lcd.locate(18,2);lcd.printf("OK");
-                    }
-                    wait(1);
-                    funcao_pega2();
-                    if(pos_y_pega[programa] !=0){
-                        lcd.locate(18,1);lcd.printf("OK");    
-                    }
-                    status_tela = "novo";
-                    continuar = 0;
-                }
-            }   
-        }
-        else if(tecla == '3' && status_tela == "novo"){
-            funcao_pega_pos_x();
-            status_tela = "pos_x";
-            continuar = 1;
-             while(continuar){
+                status_tela ="forma_quad";
+                continuar = 1;
+                comprimento_quad = 0;
+                lcd.locate(0,2);
+                while(continuar){
+                    printf("\n%c",pega_tecla()); 
                     tecla = pega_tecla();
-                 if(x_menos == 0){mov_x_menos();
-                    lcd.cls();      
-                    lcd.printf("X: %4.1f", coord_x);}
-                 else if(x_mais == 0){mov_x_mais();
-                    lcd.cls();
-                    lcd.printf("X: %4.1f", coord_x);}
-                if(tecla=='A'){
-                    pos_x_pega[programa] = coord_x;
-                    continuar = 0;
-                    printf("Posicao de y salva!");
-                    printf("Posicao X: %4.1f", coord_x);}
-            }
+                    wait(t_teclado);
+                    if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
+                        comprimento_quad = multiplicador*comprimento_quad + ((int)tecla - 48);
+                        lcd.printf("%c",tecla);
+                    }
+                    else if(tecla == 'A'){
+                        continuar = 0;
+                        medida_lado_pega[programa] = comprimento_quad;
+                        printf("Comprimento inputado!");
+                        printf("\nComprimento: %d", comprimento_quad);
+                    }
+                    else if(tecla=='B'){
+                        funcao_pega_forma();
+                        status_tela = "forma";
+                        continuar = 0;
+                    }
+                }
             }
-        else if(tecla == 'B' && status_tela == "novo"){
-            funcao_inicio();
-            status_tela = "inicio";}
-        else if(tecla == '1' && status_tela == "salvo"){
-            funcao_salvo_agree1();
-            ok_agree1();
-            status_tela = "confirmacao";}
-        else if(tecla =='2' && status_tela == "salvo"){
-            funcao_salvo_agree1();
-            ok_agree1();
-            status_tela = "confirmacao";}
-        else if(tecla =='B' && status_tela == "salvo"){
-            funcao_inicio();
-            status_tela = "inicio";}
-            
-        wait(t_teclado);
-        tecla = pega_tecla();    
-        
-        //Ações para a tela forma (para definir o formato do recipiente de pega)
-        if(tecla == '1' && status_tela == "forma"){
-            wait(0.5);
-            funcao_pega_forma_quad();
-            tipo_pega[programa] =1;
-            tecla = pega_tecla();
-            wait(t_teclado);
-            status_tela ="forma_quad";
-            continuar = 1;
-            comprimento_quad = 0;
-            lcd.locate(0,2);
-            while(continuar){
-                printf("\n%c",pega_tecla()); 
+            else if(tecla == '2' && status_tela == "forma"){
+                funcao_pega_forma_red();
+                tipo_pega[programa] = 2;
                 tecla = pega_tecla();
                 wait(t_teclado);
-                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
-                    comprimento_quad = multiplicador*comprimento_quad + ((int)tecla - 48);
-                    lcd.printf("%c",tecla);
+                continuar = 1;
+                diametro = 0;
+                status_tela = "forma_red";
+                lcd.locate(0,2);
+                while(continuar){
+                    tecla = pega_tecla();
+                    wait(t_teclado);
+                    if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
+                        diametro = multiplicador*diametro + ((int)tecla - 48);
+                        lcd.printf("%c",tecla);
+                    }
+                    else if(tecla == 'A'){
+                        continuar = 0;
+                        medida_lado_pega[programa] = diametro;
+                        printf("Diametro inputado!");
+                        printf("Diametro: %d", diametro);
+                    }
+                    else if(tecla=='B'){
+                        funcao_pega_forma();
+                        status_tela = "forma";
+                        continuar = 0;
+                    }
                 }
-                else if(tecla == 'A'){
-                    continuar = 0;
-                    medida_lado_pega[programa] = comprimento_quad;
-                    printf("Comprimento inputado!");
-                    printf("\nComprimento: %d", comprimento_quad);
-                }
-                else if(tecla=='B'){
-                    funcao_pega_forma();
-                    status_tela = "forma";
-                    continuar = 0;}
+            }
+            else if(tecla == 'B' && status_tela == "forma"){
+                status_tela = "novo";
+                continuar = 1;
+                troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa], volume_pega[programa], pos_y_pega[programa],0,3);
+            }
+            
+            tecla = pega_tecla();
+            
+            //Ações para a tela forma_quad, para detalhes sobre o formato quadrado
+            if(tecla == 'A' && status_tela == "forma_quad"){
+                status_tela ="novo";
+                continuar = 1;
+                troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa], volume_pega[programa], pos_y_pega[programa],0,3);
+            }
+            else if(tecla == 'B' && status_tela == "forma_quad"){
+                funcao_pega_forma();
+                status_tela = "forma";
+            }
+            else if(tecla == 'A' && status_tela == "forma_red"){
+                continuar = 1;
+                status_tela ="novo";
+                troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa], volume_pega[programa], pos_y_pega[programa],0,3);
+            }
+            else if(tecla == 'B' && status_tela == "forma_red"){
+                funcao_pega_forma();
+                status_tela = "forma";
+            }
+            else if(tecla == 'A' && status_tela == "volume"){
+                volume_pega[programa] = 12;
+                status_tela ="novo";
+                continuar = 1;
+                troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa], volume_pega[programa], pos_y_pega[programa],0,3);
+            }
+            else if( tecla == 'B' && status_tela == "volume"){
+                funcao_pega_forma();
+                status_tela = "forma";
+            }
+            else if(tecla == 'A' && status_tela == "pos_x"){ //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+                funcao_pega_pos_y();  //colocar programacao que contem o posicionamento do eixo y
+                status_tela = "pos_y";
+                continuar = 1;
+                wait(1);
+                 while(continuar){
+                        tecla = pega_tecla();
+                     if(y_menos == 0){mov_y_menos();
+                        lcd.cls();      
+                        lcd.printf("Y: %4.1f", coord_y);
+                    }
+                     else if(y_mais == 0){mov_y_mais();
+                        lcd.cls();
+                        lcd.printf("Y: %4.1f", coord_y);
+                    }
+                    if(tecla=='A'){
+                        pos_y_pega[programa] = coord_y;
+                        printf("Posicao de y salva!");
+                        printf("Posicao Y: %4.1f", coord_y);
+                        continuar = 0;
+                    }
                 }
             }
-        else if(tecla == '2' && status_tela == "forma"){
-            funcao_pega_forma_red();
-            tipo_pega[programa] = 2;
+            else if(tecla == 'B' && status_tela == "pos_x"){ ///!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+                status_tela = "novo";
+                continuar = 1;
+                troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa], volume_pega[programa], pos_y_pega[programa],0,3);
+            }
+                
             tecla = pega_tecla();
-            wait(t_teclado);
-            continuar = 1;
-            diametro = 0;
-            status_tela = "forma_red";
-            lcd.locate(0,2);
-            while(continuar){
-                tecla = pega_tecla();
-                wait(t_teclado);
-                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
-                    diametro = multiplicador*diametro + ((int)tecla - 48);
-                    lcd.printf("%c",tecla);
+    //        wait(t_teclado);
+            
+            //Ações para a tela pos_y
+            if(tecla == 'A' && status_tela == "pos_y"){
+                status_tela ="novo";
+                continuar = 1;
+                troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa], volume_pega[programa], pos_y_pega[programa],0,3);
+            }
+            else if(tecla == 'B' && status_tela == "pos_y"){
+                funcao_pega_pos_x();
+                status_tela = "pos_x";
+                continuar = 1;
+                while(continuar){
+                        tecla = pega_tecla();
+                    if(x_menos == 0){mov_x_menos();
+                        lcd.cls();      
+                        lcd.printf("X: %4.1f", coord_x);
+                    }
+                    else if(x_mais == 0){mov_x_mais();
+                        lcd.cls();
+                        lcd.printf("X: %4.1f", coord_x);
+                    }
+                    if(tecla=='A'){
+                        continuar = 0;
+                        printf("Posicao de x salva!");
+                        printf("Posicao X: %4.1f", coord_x);
+                    }
                 }
-                else if(tecla == 'A'){
-                    continuar = 0;
-                    medida_lado_pega[programa] = diametro;
-                    printf("Diametro inputado!");
-                    printf("Diametro: %d", diametro);
-                }
-                else if(tecla=='B'){
-                    funcao_pega_forma();
-                    status_tela = "forma";
-                    continuar = 0;}
-            }
-        }
-        else if(tecla == 'B' && status_tela == "forma"){
-            status_tela = "novo";
-            continuar = 1;
-            troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa], volume_pega[programa], pos_y_pega[programa],0,3);
-        }
-        
-        tecla = pega_tecla();
-        
-        //Ações para a tela forma_quad, para detalhes sobre o formato quadrado
-        if(tecla == 'A' && status_tela == "forma_quad"){
-            status_tela ="novo";
-            continuar = 1;
-            troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa], volume_pega[programa], pos_y_pega[programa],0,3);
+            } 
+            if(pos_x_pega[programa]!=0 && pos_y_pega[programa]!=0 && medida_lado_pega[programa]!=0 && volume_pega[programa] !=0 && tipo_pega[programa]!=0 && status_tela == "novo"){
+                status_tela="solta";
+                est_ihm = "solta";
+                continuar = 1;
+                troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
             }
-        else if(tecla == 'B' && status_tela == "forma_quad"){
-            funcao_pega_forma();
-            status_tela = "forma";}
-        else if(tecla == 'A' && status_tela == "forma_red"){
-            continuar = 1;
-            status_tela ="novo";
-            troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa], volume_pega[programa], pos_y_pega[programa],0,3);}
-        else if(tecla == 'B' && status_tela == "forma_red"){
-            funcao_pega_forma();
-            status_tela = "forma";}
-        else if(tecla == 'A' && status_tela == "volume"){
-            volume_pega[programa] = 12;
-            status_tela ="novo";
-            continuar = 1;
-            troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa], volume_pega[programa], pos_y_pega[programa],0,3);}
-        else if( tecla == 'B' && status_tela == "volume"){
-            funcao_pega_forma();
-            status_tela = "forma";}
-        else if(tecla == 'A' && status_tela == "pos_x"){ //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-            funcao_pega_pos_y();  //colocar programacao que contem o posicionamento do eixo y
-            status_tela = "pos_y";
-            continuar = 1;
-            wait(1);
-             while(continuar){
+        }//fim if(est_ihm == "pega")
+                    
+        if(est_ihm == "solta"){
+            
+            //Ações para a tela "solta", para definir informações sobre os solta's
+            if(tecla == '1' && status_tela == "solta"){
+                funcao_solta_dimensao();
+                continuar = 1;
+                diametro_solta = 0;
+                status_tela="solta_dimensao";
+                lcd.locate(0,2);
+                while(continuar){
+                    tecla = pega_tecla();
+                    wait(t_teclado);
+                    if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
+                        diametro_solta = multiplicador*diametro_solta + ((int)tecla - 48);
+                        lcd.printf("%c",tecla);
+                    }
+                    else if(tecla == 'A'){
+                        printf("Diametro do solta inputado!");
+                        printf("Diametro do solta: %d", diametro_solta);
+                        continuar = 0;
+                    }
+                    else if(tecla=='B'){
+                        funcao_pega_forma();
+                        status_tela = "solta";
+                        continuar = 1;
+                        troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
+                    }
+                }
+            }
+    
+            else if(tecla == '2' && status_tela == "solta"){
+                 funcao_solta_vol();
+                 status_tela="solta_vol";
+            }
+            else if(tecla == '1' && status_tela == "solta_vol"){
+                funcao_solta_vol_igual();
+                status_tela = "solta_vol_igual";
+                lcd.locate(0,2);
+                continuar = 1;
+                while(continuar){
                     tecla = pega_tecla();
-                 if(y_menos == 0){mov_y_menos();
-                    lcd.cls();      
-                    lcd.printf("Y: %4.1f", coord_y);}
-                 else if(y_mais == 0){mov_y_mais();
-                    lcd.cls();
-                    lcd.printf("Y: %4.1f", coord_y);}
-                if(tecla=='A'){
-                    pos_y_pega[programa] = coord_y;
-                    printf("Posicao de y salva!");
-                    printf("Posicao Y: %4.1f", coord_y);
-                    continuar = 0;}
-            }
+                    wait(t_teclado);
+                    if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
+                        volume_solta = multiplicador*volume_solta + ((int)tecla - 48);
+                        lcd.printf("%c",tecla);
+                    }
+                    else if(tecla == 'A'){
+                        printf("Volume solta inputado!");
+                        printf("Volume: %d", volume_solta);
+                        continuar = 0;
+                        volume_solta_1[programa]=volume;
+                        volume_solta_2[programa]=volume;
+                        volume_solta_3[programa]=volume;
+                        volume_solta_4[programa]=volume;
+                        volume_solta_5[programa]=volume;
+                        volume_solta_6[programa]=volume;
+                        volume_solta_7[programa]=volume;
+                        volume_solta_8[programa]=volume;
+                        volume_solta_9[programa]=volume;
+                    }
+                    else if(tecla=='B'){
+                        funcao_solta_vol();
+                        status_tela = "solta";
+                        continuar = 0;
+                    }
+                }
             }
-        else if(tecla == 'B' && status_tela == "pos_x"){ ///!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-            status_tela = "novo";
-            continuar = 1;
-            troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa], volume_pega[programa], pos_y_pega[programa],0,3);}
             
-        tecla = pega_tecla();
-//        wait(t_teclado);
-        //passando direto
-        
-        //Ações para a tela pos_y
-        if(tecla == 'A' && status_tela == "pos_y"){
-            status_tela ="novo";
-            continuar = 1;
-            troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa], volume_pega[programa], pos_y_pega[programa],0,3);
+            else if(tecla == '3' && status_tela == "solta"){
+                funcao_solta_pos_x();
+                status_tela="solta_pos_x";
+                continuar = 1;
+                while(continuar){
+                        tecla = pega_tecla();
+                    if(x_menos == 0){mov_x_menos();
+                        lcd.cls();      
+                        lcd.printf("X: %4.1f", coord_x);
+                    }
+                    else if(x_mais == 0){mov_x_mais();
+                        lcd.cls();
+                        lcd.printf("X: %4.1f", coord_x);
+                    }
+                    if(tecla=='A'){
+                        pos_x_solta[programa] = coord_x;
+                        continuar = 0;
+                        printf("Posicao de x salva!");
+                        printf("Posicao X: %4.1f", coord_x);
+                    }
+                }
+            }   
+            else if(tecla == 'B' && status_tela == "solta"){
+                continuar = 1;
+                status_tela="novo";
+                troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa],volume_pega[programa], pos_y_pega[programa],0,3);
             }
             
-        else if(tecla == 'B' && status_tela == "pos_y"){
-            funcao_pega_pos_x();
-            status_tela = "pos_x";
-            continuar = 1;
-             while(continuar){
-                    tecla = pega_tecla();
-                 if(x_menos == 0){mov_x_menos();
-                    lcd.cls();      
-                    lcd.printf("X: %4.1f", coord_x);}
-                 else if(x_mais == 0){mov_x_mais();
-                    lcd.cls();
-                    lcd.printf("X: %4.1f", coord_x);}
-                if(tecla=='A'){
-                    continuar = 0;
-                    printf("Posicao de x salva!");
-                    printf("Posicao X: %4.1f", coord_x);
-                }
+            tecla=pega_tecla();
+            //Ações para a tela solta_dimensao, para definir informações sobre a dimensão do solta
+            if(tecla=='A' && status_tela=="solta_dimensao"){
+                dimensao_solta[programa] = 10;
+                continuar = 1;
+                status_tela="solta";   
+                troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
             }
+            else if(tecla=='B' && status_tela=="solta_dimensao"){
+                continuar = 1;
+                status_tela="solta"; 
+                troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);    
+            }
+            if(tecla=='1' && status_tela=="solta_vol"){
+                funcao_solta_vol_igual();
+                status_tela="solta_vol_igual";
             }
-            
-         if(pos_x_pega[programa]!=0 && pos_y_pega[programa]!=0 && medida_lado_pega[programa]!=0 && volume_pega[programa] !=0 && tipo_pega[programa]!=0 && status_tela == "novo"){
-            status_tela="solta";
-            est_ihm = "solta";
-            continuar = 1;
-            troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);}
-                    }//fim if(est_ihm == "pega")
-                    
-        if(est_ihm == "solta"){
-        //Ações para a tela "solta", para definir informações sobre os solta's
-        if(tecla == '1' && status_tela == "solta"){
-            funcao_solta_dimensao();
-            continuar = 1;
-            diametro_solta = 0;
-            status_tela="solta_dimensao";
-            lcd.locate(0,2);
-            while(continuar){
-                tecla = pega_tecla();
-                wait(t_teclado);
-                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
-                    diametro_solta = multiplicador*diametro_solta + ((int)tecla - 48);
-                    lcd.printf("%c",tecla);
-                }
-                else if(tecla == 'A'){
-                    printf("Diametro do solta inputado!");
-                    printf("Diametro do solta: %d", diametro_solta);
-                    continuar = 0;
-                }
-                else if(tecla=='B'){
-                    funcao_pega_forma();
-                    status_tela = "solta";
-                    continuar = 1;
-                    troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
+            else if(tecla=='2' && status_tela=="solta_vol"){
+                funcao_solta_vol_cada();
+                 lcd.locate(11,0);lcd.printf("%g",volume_solta_1[programa]);
+                 lcd.locate(14,0);lcd.printf("%g",volume_solta_2[programa]);
+                 lcd.locate(17,0);lcd.printf("%g",volume_solta_3[programa]);
+                 
+                 lcd.locate(11,1);lcd.printf("%g",volume_solta_4[programa]);
+                 lcd.locate(14,1);lcd.printf("%g",volume_solta_5[programa]);
+                 lcd.locate(17,1);lcd.printf("%g",volume_solta_6[programa]);
+                 
+                 lcd.locate(11,2);lcd.printf("%g",volume_solta_7[programa]);
+                 lcd.locate(14,2);lcd.printf("%g",volume_solta_8[programa]);
+                 lcd.locate(17,2);lcd.printf("%g",volume_solta_9[programa]);
+                status_tela="solta_vol_dif";
+            }
+            else if(tecla=='B' && status_tela=="solta_vol"){
+                status_tela="solta";  
+                continuar = 1;
+                troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
+            }
+            if(tecla=='A' && status_tela=="solta_pos_x"){
+                funcao_solta_pos_y();
+                status_tela="solta_pos_y";
+                continuar = 1;
+                wait(1);
+                 while(continuar){
+                        tecla = pega_tecla();
+                    if(y_menos == 0){mov_y_menos();
+                        lcd.cls();      
+                        lcd.printf("Y: %4.1f", coord_y);
                     }
-                }
-        }
-
-        else if(tecla == '2' && status_tela == "solta"){
-             funcao_solta_vol();
-             status_tela="solta_vol";
-        }
-        else if(tecla == '1' && status_tela == "solta_vol"){
-            funcao_solta_vol_igual();
-            status_tela = "solta_vol_igual";
-            lcd.locate(0,2);
-            continuar = 1;
-            while(continuar){
-                tecla = pega_tecla();
-                wait(t_teclado);
-                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
-                    volume_solta = multiplicador*volume_solta + ((int)tecla - 48);
-                    lcd.printf("%c",tecla);
-                }
-                else if(tecla == 'A'){
-                    printf("Volume solta inputado!");
-                    printf("Volume: %d", volume_solta);
-                    continuar = 0;
-                    volume_solta_1[programa]=volume;
-                    volume_solta_2[programa]=volume;
-                    volume_solta_3[programa]=volume;
-                    volume_solta_4[programa]=volume;
-                    volume_solta_5[programa]=volume;
-                    volume_solta_6[programa]=volume;
-                    volume_solta_7[programa]=volume;
-                    volume_solta_8[programa]=volume;
-                    volume_solta_9[programa]=volume;
-                }
-                else if(tecla=='B'){
-                    funcao_solta_vol();
-                    status_tela = "solta";
-                    continuar = 0;
-                }
-            }
-        }
-        
-        else if(tecla == '3' && status_tela == "solta"){
-            funcao_solta_pos_x();
-            status_tela="solta_pos_x";
-            continuar = 1;
-            while(continuar){
-                    tecla = pega_tecla();
-                 if(x_menos == 0){mov_x_menos();
-                    lcd.cls();      
-                    lcd.printf("X: %4.1f", coord_x);}
-                 else if(x_mais == 0){mov_x_mais();
-                    lcd.cls();
-                    lcd.printf("X: %4.1f", coord_x);}
-                if(tecla=='A'){
-                    pos_x_solta[programa] = coord_x;
-                    continuar = 0;
-                    printf("Posicao de x salva!");
-                    printf("Posicao X: %4.1f", coord_x);
+                    else if(y_mais == 0){mov_y_mais();
+                        lcd.cls();
+                        lcd.printf("Y: %4.1f", coord_y);
+                    }
+                    if(tecla=='A'){
+                        pos_y_solta[programa] = coord_y;
+                        printf("Posicao de y salva!");
+                        printf("Posicao Y: %4.1f", coord_y);
+                        continuar = 0;
+                    }
                 }
             }
-        }   
-        else if(tecla == 'B' && status_tela == "solta"){
-            continuar = 1;
-            status_tela="novo";
-            troca_tela(continuar, funcao_pega1, funcao_pega2, medida_lado_pega[programa],volume_pega[programa], pos_y_pega[programa],0,3);
+            
+            else if(tecla=='B' && status_tela=="solta_pos_x"){
+                status_tela="solta";  
+                continuar = 1;
+                troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
+            }  
+                
+            tecla=pega_tecla();
+            if(tecla=='A' && status_tela=="solta_vol_igual"){
+                status_tela="solta";
+                continuar = 1;
+                troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
             }
-        
-        tecla=pega_tecla();
-        //Ações para a tela solta_dimensao, para definir informações sobre a dimensão do solta
-        if(tecla=='A' && status_tela=="solta_dimensao"){
-            dimensao_solta[programa] = 10;
-            continuar = 1;
-            status_tela="solta";   
-            troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
-            }
-        else if(tecla=='B' && status_tela=="solta_dimensao"){
-            continuar = 1;
-            status_tela="solta"; 
-            troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);    
-            }
-        if(tecla=='1' && status_tela=="solta_vol"){
-            funcao_solta_vol_igual();
-            status_tela="solta_vol_igual";
+            
+            else if(tecla=='B' && status_tela=="solta_vol_igual"){
+                funcao_solta_vol();
+                status_tela="solta_vol";
             }
-        else if(tecla=='2' && status_tela=="solta_vol"){
-            funcao_solta_vol_cada();
-             lcd.locate(11,0);lcd.printf("%d",volume_solta_1[programa]);
-             lcd.locate(14,0);lcd.printf("%d",volume_solta_2[programa]);
-             lcd.locate(17,0);lcd.printf("%d",volume_solta_3[programa]);
-             
-             lcd.locate(11,1);lcd.printf("%d",volume_solta_4[programa]);
-             lcd.locate(14,1);lcd.printf("%d",volume_solta_5[programa]);
-             lcd.locate(17,1);lcd.printf("%d",volume_solta_6[programa]);
+    
+            if(tecla=='A' && status_tela=="solta_vol_dif"){
+                status_tela="solta";
+                continuar = 1;
+                troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3); 
+            }
+            else if(tecla =='B' && status_tela =="solta_vol_dif"){
+                funcao_salvo_vol_solta_modifica();
+                wait(5);
+                funcao_salvo_agree_solta_vol();
+                lcd.locate(2,0);lcd.printf("%d",volume_solta_1[programa]);
+                lcd.locate(9,0);lcd.printf("%d",volume_solta_2[programa]);
+                lcd.locate(17,0);lcd.printf("%d",volume_solta_3[programa]);
              
-             lcd.locate(11,2);lcd.printf("%d",volume_solta_7[programa]);
-             lcd.locate(14,2);lcd.printf("%d",volume_solta_8[programa]);
-             lcd.locate(17,2);lcd.printf("%d",volume_solta_9[programa]);
-            status_tela="solta_vol_dif";
-            }
-        else if(tecla=='B' && status_tela=="solta_vol"){
-            status_tela="solta";  
-            continuar = 1;
-            troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
-            }
-        if(tecla=='A' && status_tela=="solta_pos_x"){
-            funcao_solta_pos_y();
-            status_tela="solta_pos_y";
-            continuar = 1;
-            wait(1);
-             while(continuar){
+                lcd.locate(2,1);lcd.printf("%d",volume_solta_4[programa]);
+                lcd.locate(9,1);lcd.printf("%d",volume_solta_5[programa]);
+                lcd.locate(17,1);lcd.printf("%d",volume_solta_6[programa]);
+             
+                lcd.locate(2,2);lcd.printf("%d",volume_solta_7[programa]);
+                lcd.locate(9,2);lcd.printf("%d",volume_solta_8[programa]);
+                lcd.locate(17,2);lcd.printf("%d",volume_solta_9[programa]);
+                 
+                bool cleber = 1;
+                while(cleber){
                     tecla = pega_tecla();
-                 if(y_menos == 0){mov_y_menos();
-                    lcd.cls();      
-                    lcd.printf("Y: %4.1f", coord_y);}
-                 else if(y_mais == 0){mov_y_mais();
-                    lcd.cls();
-                    lcd.printf("Y: %4.1f", coord_y);}
-                if(tecla=='A'){
-                    pos_y_solta[programa] = coord_y;
-                    printf("Posicao de y salva!");
-                    printf("Posicao Y: %4.1f", coord_y);
-                    continuar = 0;}
-            }
-            }
-        else if(tecla=='B' && status_tela=="solta_pos_x"){
-            status_tela="solta";  
-            continuar = 1;
-            troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
-            }  
+                    wait(t_teclado);
+                    if(tecla != 'A'){
+                        if(tecla == '1' && status_tela=="solta_vol_dif"){
+                             printf("entrou if 1 salvo_conf");
+                             volume = 0;
+                             continuar = 1;
+                             lcd.locate(2,0);
+                             while(continuar){ // Pega o valor imputado pelo usuário
+                                printf("\n%c",pega_tecla()); 
+                                tecla = pega_tecla();
+                                wait(t_teclado);
+                                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
+                                    if(volume*10 < 100)
+                                    {
+                                        volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
+                                        lcd.printf("%c", tecla);
+                                    }
+                                    else{
+                                    volume = 0;
+                                    lcd.locate(2,0);
+                                    }
+                                }
+                                else if(tecla == 'A'){
+                                    tecla = 'k';
+                                    continuar = 0;
+                                    volume_solta_1[programa]=volume;
+                                }
+                            }
+                        }
+                        else if(tecla=='2' && status_tela=="solta_vol_dif"){
+                             volume = 0;
+                             continuar = 1;
+                             multiplicador = 10;
+                             lcd.locate(9,0); 
+                            while(continuar){ // Pega o valor imputado pelo usuário
+                                printf("\n%c",pega_tecla()); 
+                                tecla = pega_tecla();
+                                wait(t_teclado);
+                                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
+                                    if(volume*10 < 100){
+                                        volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
+                                        lcd.printf("%c", tecla);
+                                    }
+                                    else{
+                                    volume = 0;
+                                    lcd.locate(9,0);}
+                                    }
+                                else if(tecla == 'A'){
+                                    continuar = 0;
+                                    volume_solta_2[programa]=volume;
+                                }
+                            }
+                        }
+                        else if(tecla=='3' && status_tela=="solta_vol_dif"){
+                             volume = 0;
+                             continuar = 1;
+                             multiplicador = 10;
+                             lcd.locate(17,0); 
+                            while(continuar){ // Pega o valor imputado pelo usuário
+                                printf("\n%c",pega_tecla()); 
+                                tecla = pega_tecla();
+                                wait(t_teclado);
+                                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
+                                    if(volume*10 < 100){
+                                        volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
+                                        lcd.printf("%c", tecla);
+                                    }
+                                    else{
+                                    volume = 0;
+                                    lcd.locate(17,0);}
+                                    }
+                                else if(tecla == 'A'){
+                                    continuar = 0;
+                                    volume_solta_3[programa]=volume;
+                                }
+                            }
+                        }
+                        else if(tecla=='4' && status_tela=="solta_vol_dif"){
+                             volume = 0;
+                             continuar = 1;
+                             multiplicador = 10;
+                             lcd.locate(2,1); 
+                            while(continuar){ // Pega o valor imputado pelo usuário
+                                printf("\n%c",pega_tecla()); 
+                                tecla = pega_tecla();
+                                wait(t_teclado);
+                                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
+                                    if(volume*10 < 100){
+                                        volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
+                                        lcd.printf("%c", tecla);
+                                    }
+                                    else{
+                                    volume = 0;
+                                    lcd.locate(2,1);}
+                                    }
+                                else if(tecla == 'A'){
+                                    continuar = 0;
+                                    volume_solta_4[programa]=volume;
+                                }
+                            }
+                        }
+                        else if(tecla=='5' && status_tela=="solta_vol_dif"){
+                             volume = 0;
+                             continuar = 1;
+                             multiplicador = 10;
+                             lcd.locate(9,1); 
+                            while(continuar){ // Pega o valor imputado pelo usuário
+                                printf("\n%c",pega_tecla()); 
+                                tecla = pega_tecla();
+                                wait(t_teclado);
+                                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
+                                    if(volume*10 < 100){
+                                        volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
+                                        lcd.printf("%c", tecla);
+                                    }
+                                    else{
+                                    volume = 0;
+                                    lcd.locate(9,1);}
+                                    }
+                                else if(tecla == 'A'){
+                                    continuar = 0;
+                                    volume_solta_5[programa]=volume;
+                                }
+                            }
+                        }
+                        else if(tecla=='6' && status_tela=="solta_vol_dif"){
+                             volume = 0;
+                             continuar = 1;
+                             multiplicador = 10;
+                             lcd.locate(17,1); 
+                            while(continuar){ // Pega o valor imputado pelo usuário
+                                printf("\n%c",pega_tecla()); 
+                                tecla = pega_tecla();
+                                wait(t_teclado);
+                                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
+                                    if(volume*10 < 100){
+                                        volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
+                                        lcd.printf("%c", tecla);
+                                    }
+                                    else{
+                                    volume = 0;
+                                    lcd.locate(17,1);}
+                                    }
+                                else if(tecla == 'A'){
+                                     continuar = 0;
+                                     volume_solta_6[programa]=volume;
+                                    }
+                                }
+                            }
+                        else if(tecla=='7' && status_tela=="solta_vol_dif"){
+                             volume = 0;
+                             continuar = 1;
+                             multiplicador = 10;
+                             lcd.locate(2,2); 
+                            while(continuar){ // Pega o valor imputado pelo usuário
+                                printf("\n%c",pega_tecla()); 
+                                tecla = pega_tecla();
+                                wait(t_teclado);
+                                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
+                                    if(volume*10 < 100){
+                                        volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
+                                        lcd.printf("%c", tecla);
+                                    }
+                                    else{
+                                    volume = 0;
+                                    lcd.locate(2,2);}
+                                    }
+                                else if(tecla == 'A'){
+                                    continuar = 0;
+                                    volume_solta_7[programa]=volume;
+                                }
+                            }
+                        }
+                        else if(tecla=='8' && status_tela=="solta_vol_dif"){
+                             volume = 0;
+                             continuar = 1;
+                             multiplicador = 10;
+                             lcd.locate(9,2); 
+                            while(continuar){ // Pega o valor imputado pelo usuário
+                                printf("\n%c",pega_tecla()); 
+                                tecla = pega_tecla();
+                                wait(t_teclado);
+                                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
+                                    if(volume*10 < 100){
+                                        volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
+                                        lcd.printf("%c", tecla);
+                                    }
+                                    else{
+                                    volume = 0;
+                                    lcd.locate(9,2);}
+                                    }
+                                else if(tecla == 'A'){
+                                    continuar = 0;
+                                    volume_solta_8[programa]=volume;
+                                }
+                            }
+                        }
+                        else if(tecla=='9' && status_tela=="solta_vol_dif"){
+                             volume = 0;
+                             continuar = 1;
+                             multiplicador = 10;
+                             lcd.locate(17,2); 
+                            while(continuar){ // Pega o valor imputado pelo usuário
+                                printf("\n%c",pega_tecla()); 
+                                tecla = pega_tecla();
+                                wait(t_teclado);
+                                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
+                                    if(volume*10 < 100){
+                                        volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
+                                        lcd.printf("%c", tecla);
+                                    }
+                                    else{
+                                    volume = 0;
+                                    lcd.locate(17,2);}
+                                    }
+                                else if(tecla == 'A'){
+                                    continuar = 0;
+                                    volume_solta_9[programa]=volume;
+                                }
+                            }
+                        }
+                        else if(tecla == 'B' && status_tela == "solta_vol_dif"){
+                            funcao_solta_vol();
+                            status_tela = "solta_vol";
+                            cleber = 0;
+                        }
+                    }//fim do if (tecla !=A)
+                
+                    else if(tecla == 'A'){
+                        printf("\nfalou clebao");
+                        cleber = 0;
+                    }
+                }//fim do while(cleber)
+                confirmacao_vol_solta[programa]=1;
+            }//fim do else if(tecla =='B' && status_tela =="salvo_conf_vol_solta")
             
-        tecla=pega_tecla();
-        if(tecla=='A' && status_tela=="solta_vol_igual"){
-            status_tela="solta";
-            continuar = 1;
-            troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
-            }
-        else if(tecla=='B' && status_tela=="solta_vol_igual"){
-            funcao_solta_vol();
-            status_tela="solta_vol";
+            if(tecla=='A' && status_tela=="solta_pos_y"){
+                status_tela="solta"; 
+                continuar = 1;
+                troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
             }
-
-        if(tecla=='A' && status_tela=="solta_vol_dif"){
-            status_tela="solta";
-            continuar = 1;
-            troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3); 
+            else if(tecla=='B' && status_tela=="solta_pos_y"){
+                status_tela="solta";
+                continuar = 1;
+                troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
             }
-        else if(tecla =='B' && status_tela =="solta_vol_dif"){
-            funcao_salvo_vol_solta_modifica();
-            wait(5);
-            funcao_salvo_agree_solta_vol();
-             lcd.locate(2,0);lcd.printf("%d",volume_solta_1[programa]);
-             lcd.locate(9,0);lcd.printf("%d",volume_solta_2[programa]);
-             lcd.locate(17,0);lcd.printf("%d",volume_solta_3[programa]);
-             
-             lcd.locate(2,1);lcd.printf("%d",volume_solta_4[programa]);
-             lcd.locate(9,1);lcd.printf("%d",volume_solta_5[programa]);
-             lcd.locate(17,1);lcd.printf("%d",volume_solta_6[programa]);
-             
-             lcd.locate(2,2);lcd.printf("%d",volume_solta_7[programa]);
-             lcd.locate(9,2);lcd.printf("%d",volume_solta_8[programa]);
-             lcd.locate(17,2);lcd.printf("%d",volume_solta_9[programa]);
-             bool cleber = 1;
-            while(cleber){
-                tecla = pega_tecla();
-                wait(t_teclado);
-                if(tecla != 'A'){
-                if(tecla == '1' && status_tela=="solta_vol_dif"){
-                     printf("entrou if 1 salvo_conf");
-                     volume = 0;
-                     continuar = 1;
-                     lcd.locate(2,0);
-                    while(continuar){ // Pega o valor imputado pelo usuário
-                        printf("\n%c",pega_tecla()); 
+            
+            //Ações para a tela acompanhamento (execução do programa)
+            //Matriz 3x3 (6x6cm)
+            int nome;
+            if(pos_x_solta[programa]!=0 && pos_y_solta[programa]!=0 && volume_solta_9[programa]!=0 && dimensao_solta[programa]!=0 && status_tela == "solta"){
+                printf("rotina exec");
+                funcao_nome_prog();
+                wait(1);
+                status_tela="nome_programa";}
+                if(tecla=='B' && status_tela=="nome_programa"){                
+                    status_tela="solta";
+                    continuar = 1;
+                    troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
+                } 
+                else if(tecla=='A' && status_tela=="nome_programa"){
+                     //!!!!!!!!!!!!!! colocar o códgio de pegar o valor do usuário
+                    nome=1;
+                    continuar=1;
+                    while(continuar){
                         tecla = pega_tecla();
                         wait(t_teclado);
                         if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
-                            if(volume*10 < 100)
-                            {
-                                volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
-                                lcd.printf("%c", tecla);
-                            }
-                            else{
-                            volume = 0;
-                            lcd.locate(2,0);}
+                            nome = multiplicador*nome + ((int)tecla - 48);
+                            lcd.cls();
+                            lcd.printf("%d",nome);
+                            lcd.locate(0,3);
+                            lcd.printf("A-Confirmar B-Volta");
                         }
                         else if(tecla == 'A'){
-                            tecla = 'k';
-                            continuar = 0;
-                            volume_solta_1[programa]=volume;
-                        }
-                    }
-                }
-                else if(tecla=='2' && status_tela=="solta_vol_dif"){
-                     volume = 0;
-                     continuar = 1;
-                     multiplicador = 10;
-                     lcd.locate(9,0); 
-                    while(continuar){ // Pega o valor imputado pelo usuário
-                        printf("\n%c",pega_tecla()); 
-                        tecla = pega_tecla();
-                        wait(t_teclado);
-                        if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
-                            if(volume*10 < 100){
-                                volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
-                                lcd.printf("%c", tecla);
-                            }
-                            else{
-                            volume = 0;
-                            lcd.locate(9,0);}
-                            }
-                        else if(tecla == 'A'){
-                            continuar = 0;
-                            volume_solta_2[programa]=volume;
-                        }
-                    }
-                }
-                else if(tecla=='3' && status_tela=="solta_vol_dif"){
-                     volume = 0;
-                     continuar = 1;
-                     multiplicador = 10;
-                     lcd.locate(17,0); 
-                    while(continuar){ // Pega o valor imputado pelo usuário
-                        printf("\n%c",pega_tecla()); 
-                        tecla = pega_tecla();
-                        wait(t_teclado);
-                        if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
-                            if(volume*10 < 100){
-                                volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
-                                lcd.printf("%c", tecla);
-                            }
-                            else{
-                            volume = 0;
-                            lcd.locate(17,0);}
-                            }
-                        else if(tecla == 'A'){
+                            printf("nome inserido");
+                            printf("nome: %d", nome);
+                            funcao_acomp();
+                            est_ihm = "exec";
+                            status_tela="acompanhamento";
                             continuar = 0;
-                            volume_solta_3[programa]=volume;
-                        }
-                    }
-                }
-                else if(tecla=='4' && status_tela=="solta_vol_dif"){
-                     volume = 0;
-                     continuar = 1;
-                     multiplicador = 10;
-                     lcd.locate(2,1); 
-                    while(continuar){ // Pega o valor imputado pelo usuário
-                        printf("\n%c",pega_tecla()); 
-                        tecla = pega_tecla();
-                        wait(t_teclado);
-                        if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
-                            if(volume*10 < 100){
-                                volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
-                                lcd.printf("%c", tecla);
-                            }
-                            else{
-                            volume = 0;
-                            lcd.locate(2,1);}
-                            }
-                        else if(tecla == 'A'){
-                            continuar = 0;
-                            volume_solta_4[programa]=volume;
+                            nome_programa[programa]=nome;
+                            confirmacao_pos_pega[programa]=0;
+                            confirmacao_pos_solta[programa]=0;
+                            confirmacao_vol_pega[programa]=0;
+                            confirmacao_pos_solta[programa]=0;
                         }
-                    }
-                }
-                else if(tecla=='5' && status_tela=="solta_vol_dif"){
-                     volume = 0;
-                     continuar = 1;
-                     multiplicador = 10;
-                     lcd.locate(9,1); 
-                    while(continuar){ // Pega o valor imputado pelo usuário
-                        printf("\n%c",pega_tecla()); 
-                        tecla = pega_tecla();
-                        wait(t_teclado);
-                        if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
-                            if(volume*10 < 100){
-                                volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
-                                lcd.printf("%c", tecla);
-                            }
-                            else{
-                            volume = 0;
-                            lcd.locate(9,1);}
-                            }
-                        else if(tecla == 'A'){
-                            continuar = 0;
-                            volume_solta_5[programa]=volume;
-                        }
-                    }
+                    }   
                 }
-                else if(tecla=='6' && status_tela=="solta_vol_dif"){
-                     volume = 0;
-                     continuar = 1;
-                     multiplicador = 10;
-                     lcd.locate(17,1); 
-                    while(continuar){ // Pega o valor imputado pelo usuário
-                        printf("\n%c",pega_tecla()); 
-                        tecla = pega_tecla();
-                        wait(t_teclado);
-                        if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
-                            if(volume*10 < 100){
-                                volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
-                                lcd.printf("%c", tecla);
-                            }
-                            else{
-                            volume = 0;
-                            lcd.locate(17,1);}
-                            }
-                        else if(tecla == 'A'){
-                             continuar = 0;
-                             volume_solta_6[programa]=volume;
-                            }
-                        }
-                    }
-                else if(tecla=='7' && status_tela=="solta_vol_dif"){
-                     volume = 0;
-                     continuar = 1;
-                     multiplicador = 10;
-                     lcd.locate(2,2); 
-                    while(continuar){ // Pega o valor imputado pelo usuário
-                        printf("\n%c",pega_tecla()); 
-                        tecla = pega_tecla();
-                        wait(t_teclado);
-                        if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
-                            if(volume*10 < 100){
-                                volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
-                                lcd.printf("%c", tecla);
-                            }
-                            else{
-                            volume = 0;
-                            lcd.locate(2,2);}
-                            }
-                        else if(tecla == 'A'){
-                            continuar = 0;
-                            volume_solta_7[programa]=volume;
-                        }
-                    }
-                }
-                else if(tecla=='8' && status_tela=="solta_vol_dif"){
-                     volume = 0;
-                     continuar = 1;
-                     multiplicador = 10;
-                     lcd.locate(9,2); 
-                    while(continuar){ // Pega o valor imputado pelo usuário
-                        printf("\n%c",pega_tecla()); 
-                        tecla = pega_tecla();
-                        wait(t_teclado);
-                        if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
-                            if(volume*10 < 100){
-                                volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
-                                lcd.printf("%c", tecla);
-                            }
-                            else{
-                            volume = 0;
-                            lcd.locate(9,2);}
-                            }
-                        else if(tecla == 'A'){
-                            continuar = 0;
-                            volume_solta_8[programa]=volume;
-                        }
-                    }
-                }
-                else if(tecla=='9' && status_tela=="solta_vol_dif"){
-                     volume = 0;
-                     continuar = 1;
-                     multiplicador = 10;
-                     lcd.locate(17,2); 
-                    while(continuar){ // Pega o valor imputado pelo usuário
-                        printf("\n%c",pega_tecla()); 
-                        tecla = pega_tecla();
-                        wait(t_teclado);
-                        if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
-                            if(volume*10 < 100){
-                                volume = multiplicador*volume + ((int)tecla-48);//((int)tecla-48) é o valor real da tecla pressionada em inteiro    
-                                lcd.printf("%c", tecla);
-                            }
-                            else{
-                            volume = 0;
-                            lcd.locate(17,2);}
-                            }
-                        else if(tecla == 'A'){
-                            continuar = 0;
-                            volume_solta_9[programa]=volume;
-                        }
-                    }
-                }
-                else if(tecla == 'B' && status_tela == "solta_vol_dif"){
-                    funcao_solta_vol();
-                    status_tela = "solta_vol";
-                    cleber = 0;}
-                }//fim do if (tecla !=A)
-                else if(tecla == 'A'){
-                    printf("\nfalou clebao");
-                    cleber = 0;}
-                }//fim do while(cleber)
-                confirmacao_vol_solta[programa]=1;}//fim do else if(tecla =='B' && status_tela =="salvo_conf_vol_solta")
-        
-        if(tecla=='A' && status_tela=="solta_pos_y"){
-            status_tela="solta"; 
-            continuar = 1;
-            troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
+        }//fim if(est_ihm == "solta")
+            
+        //ここまで来たよな!頑張りましたね!あと少しだよ!
+        if(est_ihm == "exec"){         
+            if(confirmacao_pos_pega[programa]==0 && confirmacao_pos_solta[programa]==0 && confirmacao_vol_pega[programa]==0 && confirmacao_pos_solta[programa]==0 && status_tela == "acompanhamento"){           
+                int cont_pipeta = 0;
+               
+               //Aqui definimos a posição de cada solta a partir de um pinos. 
+                float pos1[2] = {pos_x_solta[programa], pos_y_solta[programa]} ; //Pino referência
+                float pos2[2] = {pos_x_solta[programa]+2*medida_lado_pega[programa], pos_y_solta[programa]} ;
+                float pos3[2] = {pos_x_solta[programa]+4*medida_lado_pega[programa], pos_y_solta[programa]} ;
+                float pos4[2] = {pos_x_solta[programa], pos_y_solta[programa]+2*medida_lado_pega[programa]} ;
+                float pos5[2] = {pos_x_solta[programa]+2*medida_lado_pega[programa], pos_y_solta[programa]+2*medida_lado_pega[programa]} ;
+                float pos6[2] = {pos_x_solta[programa]+4*medida_lado_pega[programa], pos_y_solta[programa]+2*medida_lado_pega[programa]} ;
+                float pos7[2] = {pos_x_solta[programa], pos_y_solta[programa]+4*medida_lado_pega[programa]} ;
+                float pos8[2] = {pos_x_solta[programa]+2*medida_lado_pega[programa], pos_y_solta[programa]+4*medida_lado_pega[programa]} ;
+                float pos9[2] = {pos_x_solta[programa]+4*medida_lado_pega[programa], pos_y_solta[programa]+4*medida_lado_pega[programa]};
+                
+                //Execução da rotina em cada pino
+                rotina_pino(volume_solta_1[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos1[0],pos1[1]);
+                rotina_pino(volume_solta_2[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos2[0],pos2[1]);
+                rotina_pino(volume_solta_3[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos3[0],pos3[1]);
+                rotina_pino(volume_solta_4[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos4[0],pos4[1]);
+                rotina_pino(volume_solta_5[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos5[0],pos5[1]);
+                rotina_pino(volume_solta_6[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos6[0],pos6[1]);
+                rotina_pino(volume_solta_7[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos7[0],pos7[1]);
+                rotina_pino(volume_solta_8[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos8[0],pos8[1]);
+                rotina_pino(volume_solta_9[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos9[0],pos9[1]);
             }
-         else if(tecla=='B' && status_tela=="solta_pos_y"){
-            status_tela="solta";
-            continuar = 1;
-            troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
-            }
-        //Ações para a tela acompanhamento (execução do programa)
-        //MAtriz 3x3 (6x6cm)
-        int nome;
-        if(pos_x_solta[programa]!=0 && pos_y_solta[programa]!=0 && volume_solta_9[programa]!=0 && dimensao_solta[programa]!=0 && status_tela == "solta"){
-           printf("rotina exec");
-           funcao_nome_prog();
-           wait(1);
-           status_tela="nome_programa";}
-            if(tecla=='B' && status_tela=="nome_programa"){                
-                status_tela="solta";
-                continuar = 1;
-                troca_tela(continuar, funcao_solta1, funcao_solta2, dimensao_solta[programa],volume_solta_9[programa], pos_y_solta[programa],0,3);
-               } 
-           else if(tecla=='A' && status_tela=="nome_programa"){
-                 //!!!!!!!!!!!!!! colocar o códgio de pegar o valor do usuário
-                nome=1;
-                continuar=1;
-                while(continuar){
-                tecla = pega_tecla();
-                wait(t_teclado);
-                if(tecla!= 'A' && tecla!='B' && tecla!= 'k'){
-                    nome = multiplicador*nome + ((int)tecla - 48);
-                    lcd.cls();
-                    lcd.printf("%d",nome);
-                    lcd.locate(0,3);
-                    lcd.printf("A-Confirmar B-Volta");
-                }
-            else if(tecla == 'A'){
-                printf("nome inserido");
-                printf("nome: %d", nome);
-                funcao_acomp();
-                est_ihm = "exec";
-                status_tela="acompanhamento";
-                continuar = 0;
-                nome_programa[programa]=nome;
-                confirmacao_pos_pega[programa]=0;
-                confirmacao_pos_solta[programa]=0;
-                confirmacao_vol_pega[programa]=0;
-                confirmacao_pos_solta[programa]=0;
-            }
-            }}
-            }//fim if(est_ihm == "solta")
-            
-        if(est_ihm == "exec"){            
-            if(confirmacao_pos_pega[programa]==0 && confirmacao_pos_solta[programa]==0 && confirmacao_vol_pega[programa]==0 && confirmacao_pos_solta[programa]==0 && status_tela == "acompanhamento"){           
-            printf("Entrou em execucao");
-            int cont_pipeta = 0;
-            float altura;
-           
-            float pos1[2] = {pos_x_solta[programa], pos_y_solta[programa]} ;
-            float pos2[2] = {pos_x_solta[programa]+2, pos_y_solta[programa]} ;
-            float pos3[2] = {pos_x_solta[programa]+4, pos_y_solta[programa]} ;
-            float pos4[2] = {pos_x_solta[programa], pos_y_solta[programa]+2} ;
-            float pos5[2] = {pos_x_solta[programa]+2, pos_y_solta[programa]+2} ;
-            float pos6[2] = {pos_x_solta[programa]+4, pos_y_solta[programa]+2} ;
-            float pos7[2] = {pos_x_solta[programa], pos_y_solta[programa]+4} ;
-            float pos8[2] = {pos_x_solta[programa]+2, pos_y_solta[programa]+4} ;
-            float pos9[2] = {pos_x_solta[programa]+4, pos_y_solta[programa]+4};
 
-            
-
-          //Calcular a altura do pega com base no tipo do pega
-           rotina_pino(volume_solta_1[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos1[0],pos1[1]);
-            for(int i; i<volume_solta_2[programa];i++){
-                altura = calcula_altura(tipo_pega[programa],medida_lado_pega[programa], volume_pega[programa], cont_pipeta);
-                go_to_posicao(pos_x_pega[programa], pos_y_pega[programa]);
-                wait(1);
-                go_to_z(altura);
-                wait(1);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                wait(1);
-                go_to_z(normal_z);
-                wait(1);
-                go_to_posicao(pos2[0],pos2[1]);
-                wait(1);
-                go_to_z(altura_solta);
-                wait(1);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                wait(1);
-                go_to_z(normal_z);
-                wait(1);
-                cont_pipeta+=1;
-           }
-            for(int i; i<volume_solta_3[programa];i++){
-                altura = calcula_altura(tipo_pega[programa],medida_lado_pega[programa], volume_pega[programa], cont_pipeta);
-                go_to_posicao(pos_x_pega[programa], pos_y_pega[programa]);
-                wait(1);
-                go_to_z(altura);
-                wait(1);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                wait(1);
-                go_to_z(normal_z);
-                wait(1);
-                go_to_posicao(pos3[0],pos3[1]);
-                wait(1);
-                go_to_z(altura_solta);
-                wait(1);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                wait(1);
-                go_to_z(normal_z);
-                wait(1);
-                cont_pipeta+=1;
-            
-           }
-            for(int i; i<volume_solta_4[programa];i++){
-                altura = calcula_altura(tipo_pega[programa],medida_lado_pega[programa], volume_pega[programa], cont_pipeta);
-                go_to_posicao(pos_x_pega[programa], pos_y_pega[programa]);
-                go_to_z(altura);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                go_to_z(normal_z);
-                go_to_posicao(pos4[0],pos4[1]);
-                go_to_z(altura_solta);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                go_to_z(normal_z);
-                cont_pipeta+=1;
-           }
-            for(int i; i<volume_solta_5[programa];i++){
-                altura = calcula_altura(tipo_pega[programa],medida_lado_pega[programa], volume_pega[programa], cont_pipeta);
-                go_to_posicao(pos_x_pega[programa], pos_y_pega[programa]);
-                go_to_z(altura);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                go_to_z(normal_z);
-                go_to_posicao(pos5[0],pos5[1]);
-                go_to_z(altura_solta);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                go_to_z(normal_z);
-                cont_pipeta+=1;
-            
-           }
-            for(int i; i<volume_solta_6[programa];i++){
-                altura = calcula_altura(tipo_pega[programa],medida_lado_pega[programa], volume_pega[programa], cont_pipeta);
-                go_to_posicao(pos_x_pega[programa], pos_y_pega[programa]);
-                go_to_z(altura);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                go_to_z(normal_z);
-                go_to_posicao(pos6[0],pos6[1]);
-                go_to_z(altura_solta);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                go_to_z(normal_z);
-                cont_pipeta+=1;
-            
-           }
-            for(int i; i<volume_solta_7[programa];i++){
-                altura = calcula_altura(tipo_pega[programa],medida_lado_pega[programa], volume_pega[programa], cont_pipeta);
-                go_to_posicao(pos_x_pega[programa], pos_y_pega[programa]);
-                go_to_z(altura);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                go_to_z(normal_z);
-                go_to_posicao(pos7[0],pos7[1]);
-                go_to_z(altura_solta);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                go_to_z(normal_z);
-                cont_pipeta+=1;
-            
-           }
-            for(int i; i<volume_solta_8[programa];i++){
-                altura = calcula_altura(tipo_pega[programa],medida_lado_pega[programa], volume_pega[programa], cont_pipeta);
-                go_to_posicao(pos_x_pega[programa], pos_y_pega[programa]);
-                go_to_z(altura);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                go_to_z(normal_z);
-                go_to_posicao(pos8[0],pos8[1]);
-                go_to_z(altura_solta);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                go_to_z(normal_z);
-                cont_pipeta+=1;
-           }
-            for(int i; i<volume_solta_9[programa];i++){
-                altura = calcula_altura(tipo_pega[programa],medida_lado_pega[programa], volume_pega[programa], cont_pipeta);
-                go_to_posicao(pos_x_pega[programa], pos_y_pega[programa]);
-                go_to_z(altura);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                go_to_z(normal_z);
-                go_to_posicao(pos9[0],pos9[1]);
-                go_to_z(altura_solta);
-                pipeta = 0;
-                wait(1);
-                pipeta = 1;
-                go_to_z(normal_z);
-                cont_pipeta+=1;
-           }}
-
-        }//fim do else if do meio do codigo
         }//fim do if(est_ihm == "exec")
-      }//fim do while(1)
-  //fim do int main
\ No newline at end of file
+    }//fim do while(1)
+}//fim do int main
\ No newline at end of file