Projeto Mecatrônico / Mbed 2 deprecated Acionamento_Pipeta

Dependencies:   mbed

Revision:
0:acba0720dcfd
Child:
1:b77c22122be8
diff -r 000000000000 -r acba0720dcfd main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Jun 01 15:46:45 2021 +0000
@@ -0,0 +1,100 @@
+#include "mbed.h"
+
+// Pinos para emitir pulsos para cada motor
+DigitalOut sinal(PC_10);
+
+float tempo = 1.5;
+
+int atual_pega = total_pega; // "total_pega" é a quantidade inserida pelo usuário na posição de pega
+int quant_desejada; // "quant desejada" é a quantidade inserida pelo usuário na posição de solta
+int quant_depositada = 0;
+int n_pulsosX;
+int n_pulsosY;
+int n_pulsosZ;
+int deslocamentoZ_partida = posZ0_origem - posZ0_atual; //deslocamento do eixo Z até a posição de partida (origem)
+int deslocamentoX0 = posX0atual - posX0_desejada; // deslocamento do eixo X até a posição de pega desejada
+int deslocamentoY0 = posY0atual - posY0_desejada; // deslocamento do eixo Y até a posição de pega desejada
+int deslocamentoZ0 = posZ0atual - posZ0_desejada; // deslocamento do eixo Z até a posição de pega desejada
+
+void Rotina_Pega(void);
+void Rotina_Solta(void);
+
+int main()
+{
+    while (npos_pega < pos_pega_total) // checa se existem mais posições de solta
+    {
+        if (valor_SELECT == 1) // o usuário não quer alterar nenhum parâmetro
+        {
+            contador_SELECT = 1;
+        
+            //Chama a rotina de pega
+            Rotina_Pega();
+                    
+            //Chama a rotina de solta
+            Rotina_Solta();
+            
+            atual_pega = atual_pega - 1; // após a rotina de solta, a quantidade atual do substrato é reduzida por 1mL
+            quant_depositada = quant_depositada + 1; //  +1mL na quantidade depositada
+            
+            if (atual_pega == 0) // não existe mais substrato na posição de pega
+            {
+                lcd.locate(2,0);
+                lcd.printf("Coleta vazia");
+            }
+            else
+            {
+                while (quant _depositada < quant_desejada) // "quant_desejada" definido pelo usuário na IHM
+                {
+                    Rotina_Pega();
+                    atual_pega = atual_pega - 1;
+                
+                    if (mL_atual == 0)
+                    {
+                        lcd.locate(2,0);
+                        lcd.printf("Coleta vazia");
+                    }
+                
+                    else
+                    {
+                        Rotina_Solta();
+                        quant_depositada = quant_depositada + 1;
+                    }   
+                
+                }
+            }
+        }
+}
+
+void Rotina_Pega()
+{
+    sinal = 0; // saída nível lógico "baixo"
+    
+    n_pulsosZ = (1/(passo_motor*passo_fuso))*360*deslocamentoZ_partida; // desloca a pipeta no eixo Z para sua posição de partida para evitar colisão
+    
+    n_pulsosX = (1/(passo_motor*passo_fuso))*360*deslocamento_X0; //movimentação do eixo X para posição de pega
+    n_pulsosY = (1/(passo_motor*passo_fuso))*360*deslocamento_Y0; //movimentação do eixo Y para posição de pega
+    n_pulsosZ = (1/(passo_motor*passo_fuso))*360*deslocamento_Z0; //movimentação do eixo Y para posição de pega
+    
+    sinal = 1; // saída nível lógico "alto"
+    lcd.locate(2,0);
+    lcd.printf("Coletando");
+    wait(tempo);
+            
+}
+
+void Rotina_Solta()
+{
+   sinal = 0; // saída nível lógico "baixo"
+    
+    n_pulsosZ = (1/(passo_motor*passo_fuso))*360*deslocamentoZ_partida; // desloca a pipeta no eixo Z para sua posição de partida para evitar colisão
+    
+    n_pulsosX = (1/(passo_motor*passo_fuso))*360*deslocamento_X0; //movimentação do eixo X para posição de pega
+    n_pulsosY = (1/(passo_motor*passo_fuso))*360*deslocamento_Y0; //movimentação do eixo Y para posição de pega
+    n_pulsosZ = (1/(passo_motor*passo_fuso))*360*deslocamento_Z0; //movimentação do eixo Y para posição de pega
+    
+    sinal = 1; // saída nível lógico "alto"
+    lcd.locate(2,0);
+    lcd.printf("Depositando");
+    wait(tempo); 
+}
+