Projeto Mecatrônico / Mbed 2 deprecated ProjetoMecatronico

Dependencies:   mbed TextLCD2

Revision:
104:35d857d681ac
Parent:
103:1192b279c051
Child:
105:d547091e8d44
--- a/main_PM.cpp	Fri Jun 12 19:48:20 2020 +0000
+++ b/main_PM.cpp	Fri Jun 12 21:08:00 2020 +0000
@@ -17,7 +17,7 @@
 float coord_x = 0;          //variável que guardará a posição linear do eixo x, ela é incrementada com a conta do deslocamento linear dado um deslocamento angular sempre que o eixo é movimentado depois do referencimaneto
 float coord_y = 0;          //variável que guardará a posição linear do eixo y, ela é incrementada com a conta do deslocamento linear dado um deslocamento angular sempre que o eixo é movimentado depois do referencimaneto
 float coord_z = 0; 
-float normal_z = 10;         //variável que guardará a posição linear do eixo z, ela é incrementada com a conta do deslocamento linear dado um deslocamento angular sempre que o eixo é movimentado depois do referencimaneto
+float normal_z = 5;         //variável que guardará a posição linear do eixo z, ela é incrementada com a conta do deslocamento linear dado um deslocamento angular sempre que o eixo é movimentado depois do referencimaneto
 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
@@ -161,19 +161,25 @@
 }
 
 //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){
+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);
-        go_to_z(altura); //move z até a altura para sugar o líquido
+        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);   
         pipeta = 0; //aciona a pipeta pelo relé
-        wait(1);
+        wait(0.5);
         pipeta = 1; //desaciona a pipeta
+        wait(0.5);
         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
+        wait(0.5);
         pipeta = 0; //aciona a pipeta e solta o líquido no solta
-        wait(1);
+        wait(0.5);
         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
     }
@@ -319,7 +325,8 @@
         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);    
+        fdc_y.rise(&reseta_eixo); //faz a leitura de inturrupção do fdc_y logo depois que o botão é soltado e executa o reseta_eixo
+        fdc_z.rise(&reseta_eixo); //faz a leitura de inturrupção do fdc_z logo depois que o botão é soltado e executa o reseta_eixo   
         //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;
@@ -329,7 +336,7 @@
         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
-        
+        lcd.cls();
         //Tela inicial 
         lcd.printf("Bem-vindo ao Pipemax");
         lcd.locate(3,1); //funcao que posiciona o texto na tela
@@ -544,17 +551,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("%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(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(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(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(1,2);lcd.printf("%g",volume_solta_7[programa]);
+             lcd.locate(2,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]);                     
+             lcd.locate(17,2);lcd.printf("%g",volume_solta_9[programa]);                     
              status_tela="salvo_conf_vol_solta";}
         else if(tecla =='B' && status_tela =="salvo_confirmacao"){ 
             funcao_salvo1();
@@ -1709,17 +1716,17 @@
                 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]};
-                
+                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]);
-                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]);
+                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]);
                 programa+=1;
                 printf("CABÔ HEIN");
                 lcd.cls();
@@ -1730,6 +1737,7 @@
                 lcd.locate(2,0);
                 lcd.printf("    a tela inicial...");
                 wait(3);
+                status_tela = "inicio";
                 if (programa==6){
                     lcd.cls();
                     lcd.printf("Limite de programas");