Projeto Mecatrônico / Mbed 2 deprecated ProjetoMecatronico

Dependencies:   mbed TextLCD2

Revision:
106:a35a10e8cf0d
Parent:
105:d547091e8d44
Child:
107:345b1ef490a8
--- a/main_PM.cpp	Mon Jun 22 20:16:36 2020 +0000
+++ b/main_PM.cpp	Mon Jun 22 21:41:17 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";
+int cont_pipeta;            //variavel que guarda valores de pipetagens feitas
 
 //pinos usados pelos botoes de fim de curso
 InterruptIn fdc_x(PC_10);
@@ -142,15 +143,14 @@
 
 //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){ 
+float calcula_altura(int forma_do_pega, int dimensao, float v){
     if(forma_do_pega==1){//quad
-        return (v-contador)/(dimensao*dimensao)*0.001-4;
+        return (v-cont_pipeta)/(dimensao*dimensao)*0.001-4;
    }
    else{//red
-        return ((v-contador)/(PI*(dimensao/2)*(dimensao/2))*0.001-4);
+        return ((v-cont_pipeta)/(PI*(dimensao/2)*(dimensao/2))*0.001-4);
    };
 }
-
 void go_to_z(float posicao_z){
     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         
@@ -159,15 +159,16 @@
         mov_z_menos(); //gira no sentido anti-horário 
    }
 }
-
 //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, float pos_pega_x, float pos_pega_y){
-    for(int i; i < volume_solta; i++){ //
-        float altura = calcula_altura(tipo_do_pega,medida_do_pega, volume_do_pega, contador);
+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);
         go_to_z(altura); //move z até a altura para sugar o líquido no pega
-        wait(0.5);   
+        wait(0.5);  
         pipeta = 0; //aciona a pipeta pelo relé
         wait(0.5);
         pipeta = 1; //desaciona a pipeta
@@ -181,7 +182,7 @@
         pipeta = 1; //desaciona a pipeta
         wait(0.5);
         go_to_z(normal_z);//volta para a posicao normal de z
-        contador+=1; //contabiliza uma pipetagem
+        cont_pipeta+=1; //contabiliza uma pipetagem
     }
 }
 
@@ -265,7 +266,7 @@
 string status_tela = "zeramento"; //variavel para guardar o estado atual da tela e situar o programa, juntamente aos botoes apertados, a respeito de onde ele está.
                                   //Neste sentido, ao longo de todo o programa, esta variavel sera usada seguindo a lógica de "se estou na tela x e o usuario apertou o botao
                                   //y, vou para a tela z"
-int programa = 1;    //A variável programa remete a que programa salvo o usuário deseja acessar 
+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
 //O comprimento de cada array é de 6 pois podem ser "salvos" apenas 6 programas 
@@ -488,7 +489,6 @@
             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 = 1;
             }
         else if(tecla =='2' && status_tela =="salvo_confirmacao"){
              continuar = 1;
@@ -523,9 +523,7 @@
             if(nome_programa[3] != 0){lcd.locate(2,0);lcd.printf("%d",nome_programa[3]);}
             if(nome_programa[4] != 0){lcd.locate(2,1);lcd.printf("%d",nome_programa[4]);}
             if(nome_programa[5] != 0){lcd.locate(2,2);lcd.printf("%d",nome_programa[5]);}
- 
-            programa = 1;
-            status_tela = "salvo";}     
+             status_tela = "salvo";}     
         else if(tecla =='3' && status_tela =="salvo_confirmacao"){
              funcao_salvo_agree_pega_vol();   //Função que imprime na tela do usuário que ele deve dar entreda no volume
              continuar = 1;
@@ -574,9 +572,7 @@
             if(nome_programa[3] != 0){lcd.locate(2,0);lcd.printf("%d",nome_programa[3]);}
             if(nome_programa[4] != 0){lcd.locate(2,1);lcd.printf("%d",nome_programa[4]);}
             if(nome_programa[5] != 0){lcd.locate(2,2);lcd.printf("%d",nome_programa[5]);}
- 
-            programa = 1;
-            status_tela = "salvo";}   
+             status_tela = "salvo";}   
         
         tecla = pega_tecla(); //Atualiza a variável tecla
         
@@ -1242,10 +1238,11 @@
             }
     
             else if(tecla == '2' && status_tela == "solta"){
+                 status_tela="solta_vol";
                  funcao_solta_vol();
-                 status_tela="solta_vol";
             }
-            else if(tecla == '1' && status_tela == "solta_vol"){
+            tecla = pega_tecla();
+            if(tecla == '1' && status_tela == "solta_vol"){
                 funcao_solta_vol_igual();
                 status_tela = "solta_vol_igual";
                 lcd.locate(0,2);
@@ -1302,6 +1299,7 @@
                 }
             }   
             else if(tecla == 'B' && status_tela == "solta"){
+                est_ihm = "pega";
                 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);
@@ -1320,6 +1318,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";
@@ -1704,7 +1703,7 @@
         //ここまで来たよな!頑張りましたね!あと少しだよ!
         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;
+                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
@@ -1718,15 +1717,15 @@
                 float pos9[2] = {pos_x_solta[programa]+4*medida_lado_pega[programa], pos_y_solta[programa]+4*medida_lado_pega[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], cont_pipeta, pos1[0],pos1[1], pos_x_pega[programa],pos_y_solta[programa]);
-                rotina_pino(volume_solta_2[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos2[0],pos2[1], pos_x_pega[programa],pos_y_solta[programa]);
-                rotina_pino(volume_solta_3[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos3[0],pos3[1], pos_x_pega[programa],pos_y_solta[programa]);
-                rotina_pino(volume_solta_4[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos4[0],pos4[1], pos_x_pega[programa],pos_y_solta[programa]);
-                rotina_pino(volume_solta_5[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos5[0],pos5[1], pos_x_pega[programa],pos_y_solta[programa]);
-                rotina_pino(volume_solta_6[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos6[0],pos6[1], pos_x_pega[programa],pos_y_solta[programa]);
-                rotina_pino(volume_solta_7[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos7[0],pos7[1], pos_x_pega[programa],pos_y_solta[programa]);
-                rotina_pino(volume_solta_8[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos8[0],pos8[1], pos_x_pega[programa],pos_y_solta[programa]);
-                rotina_pino(volume_solta_9[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], cont_pipeta, pos9[0],pos9[1], pos_x_pega[programa],pos_y_solta[programa]);
+                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]);
+                rotina_pino(volume_solta_2[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], pos2[0],pos2[1], pos_x_pega[programa],pos_y_solta[programa]);
+                rotina_pino(volume_solta_3[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], pos3[0],pos3[1], pos_x_pega[programa],pos_y_solta[programa]);
+                rotina_pino(volume_solta_4[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], pos4[0],pos4[1], pos_x_pega[programa],pos_y_solta[programa]);
+                rotina_pino(volume_solta_5[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], pos5[0],pos5[1], pos_x_pega[programa],pos_y_solta[programa]);
+                rotina_pino(volume_solta_6[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], pos6[0],pos6[1], pos_x_pega[programa],pos_y_solta[programa]);
+                rotina_pino(volume_solta_7[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], pos7[0],pos7[1], pos_x_pega[programa],pos_y_solta[programa]);
+                rotina_pino(volume_solta_8[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], pos8[0],pos8[1], pos_x_pega[programa],pos_y_solta[programa]);
+                rotina_pino(volume_solta_9[programa], tipo_pega[programa], medida_lado_pega[programa], volume_pega[programa], pos9[0],pos9[1], pos_x_pega[programa],pos_y_solta[programa]);
                 programa+=1;
                 printf("CABÔ HEIN");
                 lcd.cls();