testando

Dependencies:   mbed TextLCD2

Revision:
107:345b1ef490a8
Parent:
106:a35a10e8cf0d
Child:
108:4fe1ba9f55c3
--- a/main_PM.cpp	Mon Jun 22 21:41:17 2020 +0000
+++ b/main_PM.cpp	Mon Jun 22 22:57:11 2020 +0000
@@ -21,7 +21,7 @@
 int est_x = 0;              //variável que indicará o estado do eixo x, pemitindo ou não que ele possa ser avançado depois de atingir o fim de curso
 int est_y = 0;              //variável que indicará o estado do eixo y, pemitindo ou não que ele possa ser avançado depois de atingir o fim de curso
 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;
+float altura_solta = 5;
 string est_ihm = "novo";
 int cont_pipeta;            //variavel que guarda valores de pipetagens feitas
 
@@ -161,9 +161,7 @@
 }
 //Funcao da rotina de execucao
 void rotina_pino(float volume_solta, int tipo_do_pega, float medida_do_pega, float volume_do_pega, float pos_pino_x, float pos_pino_y, float pos_pega_x, float pos_pega_y){
-    printf("%f",volume_solta);
     for(int i = 0; i < volume_solta; i++){ //
-        printf("entrou no for");
         float altura = calcula_altura(tipo_do_pega,medida_do_pega, volume_do_pega);
         go_to_posicao(pos_pega_x, pos_pega_y); //vai para a posicao pega
         wait(0.5);
@@ -240,18 +238,6 @@
         }  
     };
 }
-//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);
-}
 
 //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.
@@ -268,6 +254,46 @@
                                   //y, vou para a tela z"
 int programa = 0;    //A variável programa remete a que programa salvo o usuário deseja acessar 
 
+//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 y a partir do zeramento do estado de todas as suas bobinas
+    eixoz = 0b0000; //desligamento do motor do eixo z 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");
+    
+    bool continuar_emergencia = 1;
+    while(continuar_emergencia){
+        tecla = pega_tecla();
+        if(tecla == 'B'){
+            continuar_emergencia = 0;
+            }
+        }
+    lcd.cls();
+    lcd.printf("Por favor, aceite");
+    lcd.locate(0,1);
+    lcd.printf("o zeramento do seu");
+    lcd.locate(0,2);
+    lcd.printf("sistema");
+    lcd.locate(0,3);
+    lcd.printf("A - proximo");
+    continuar_emergencia = 1;
+    
+    while(continuar_emergencia){
+        tecla = pega_tecla();
+        if(tecla == 'A'){
+            zeramento();
+            status_tela = "inicio";
+            funcao_inicio();
+            continuar_emergencia = 0;
+        }}
+    wait(1);
+}
+
 //Informações sobre o pega a serem armazenadas no array do programa que está sendo construido pelo usuário
 //O comprimento de cada array é de 6 pois podem ser "salvos" apenas 6 programas 
 float pos_x_pega[6];
@@ -375,13 +401,6 @@
             status_tela = "inicio";
             funcao_inicio();
         }
-
-        //Caso nenhum botão esteja apertado, os motores devem permanecer com as bobinas desligadas
-        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];}
-        }
     
         tecla = pega_tecla();//Atualiza a variável tecla
         
@@ -586,7 +605,7 @@
         else if(tecla =='2' && status_tela =="salvo_pos_certo_pega"){ //Caso o usuário queria ajustar o posicionamento
             lcd.cls();
             funcao_pega_pos_x();
-            lcd.printf("Ponha a pega em  x/y");
+            lcd.printf("Ponha a pega em  x/y ");
             lcd.locate(0,3);
             lcd.printf("      B-Voltar      ");
             continuar = 1; //Inicia o loop de posicionamento
@@ -640,7 +659,7 @@
             }  
         
         //Ações para a tela de salvo_pos_certo_solta
-        if(tecla =='1' && status_tela =="salvo_pos_certo_"){
+        if(tecla =='1' && status_tela =="salvo_pos_certo_solta"){
             confirmacao_pos_solta[programa] = 1; //Tag que indica que o usuário confirmou a posição salva
             status_tela = "salvo_confirmacao";
             continuar = 1;
@@ -649,7 +668,7 @@
         else if(tecla =='2' && status_tela =="salvo_pos_certo_solta"){
             lcd.cls();
             funcao_solta_pos_x();
-            lcd.printf("Ponha a pega em x/y");
+            lcd.printf("Ponha a pega em x/y ");
             lcd.locate(0,3);
             lcd.printf("      B-Voltar      ");
             continuar = 1; //Inicia o loop de posicionamento
@@ -949,7 +968,11 @@
         if(confirmacao_vol_solta[programa]==1 && confirmacao_vol_pega[programa]==1 && confirmacao_pos_pega[programa]==1 && confirmacao_pos_solta[programa]==1){
             funcao_acomp();
             status_tela="acompanhamento";
-            est_ihm = "exec";}
+            est_ihm = "exec";
+            confirmacao_pos_pega[programa]=0;
+            confirmacao_pos_solta[programa]=0;
+            confirmacao_vol_pega[programa]=0;
+            confirmacao_pos_solta[programa]=0;}
         } //fim if(est_ihm)
         
         if(est_ihm == "pega"){
@@ -1318,11 +1341,7 @@
                 status_tela="solta"; 
                 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=='1' && status_tela=="solta_vol"){
-                funcao_solta_vol_igual();
-                status_tela="solta_vol_igual";
-            }
+
             else if(tecla=='2' && status_tela=="solta_vol"){
                 funcao_solta_vol_cada();
                  lcd.locate(11,0);lcd.printf("%g",volume_solta_1[programa]);
@@ -1707,14 +1726,14 @@
                
                //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]};
+                float pos2[2] = {pos_x_solta[programa]+2*dimensao_solta[programa], pos_y_solta[programa]} ;
+                float pos3[2] = {pos_x_solta[programa]+4*dimensao_solta[programa], pos_y_solta[programa]} ;
+                float pos4[2] = {pos_x_solta[programa], pos_y_solta[programa]+2*dimensao_solta[programa]} ;
+                float pos5[2] = {pos_x_solta[programa]+2*dimensao_solta[programa], pos_y_solta[programa]+2*dimensao_solta[programa]} ;
+                float pos6[2] = {pos_x_solta[programa]+4*dimensao_solta[programa], pos_y_solta[programa]+2*dimensao_solta[programa]} ;
+                float pos7[2] = {pos_x_solta[programa], pos_y_solta[programa]+4*dimensao_solta[programa]} ;
+                float pos8[2] = {pos_x_solta[programa]+2*dimensao_solta[programa], pos_y_solta[programa]+4*dimensao_solta[programa]} ;
+                float pos9[2] = {pos_x_solta[programa]+4*dimensao_solta[programa], pos_y_solta[programa]+4*dimensao_solta[programa]};
                 go_to_z(normal_z);
                 //Execução da rotina em cada pino
                 rotina_pino(volume_solta_1[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], pos1[0],pos1[1], pos_x_pega[programa],pos_y_solta[programa]);