Projeto Mecatrônico / Mbed 2 deprecated Acionamento_Pipeta

Dependencies:   mbed

Committer:
juan_ruiz
Date:
Tue Jun 01 15:46:45 2021 +0000
Revision:
0:acba0720dcfd
Child:
1:b77c22122be8
Juan

Who changed what in which revision?

UserRevisionLine numberNew contents of line
juan_ruiz 0:acba0720dcfd 1 #include "mbed.h"
juan_ruiz 0:acba0720dcfd 2
juan_ruiz 0:acba0720dcfd 3 // Pinos para emitir pulsos para cada motor
juan_ruiz 0:acba0720dcfd 4 DigitalOut sinal(PC_10);
juan_ruiz 0:acba0720dcfd 5
juan_ruiz 0:acba0720dcfd 6 float tempo = 1.5;
juan_ruiz 0:acba0720dcfd 7
juan_ruiz 0:acba0720dcfd 8 int atual_pega = total_pega; // "total_pega" é a quantidade inserida pelo usuário na posição de pega
juan_ruiz 0:acba0720dcfd 9 int quant_desejada; // "quant desejada" é a quantidade inserida pelo usuário na posição de solta
juan_ruiz 0:acba0720dcfd 10 int quant_depositada = 0;
juan_ruiz 0:acba0720dcfd 11 int n_pulsosX;
juan_ruiz 0:acba0720dcfd 12 int n_pulsosY;
juan_ruiz 0:acba0720dcfd 13 int n_pulsosZ;
juan_ruiz 0:acba0720dcfd 14 int deslocamentoZ_partida = posZ0_origem - posZ0_atual; //deslocamento do eixo Z até a posição de partida (origem)
juan_ruiz 0:acba0720dcfd 15 int deslocamentoX0 = posX0atual - posX0_desejada; // deslocamento do eixo X até a posição de pega desejada
juan_ruiz 0:acba0720dcfd 16 int deslocamentoY0 = posY0atual - posY0_desejada; // deslocamento do eixo Y até a posição de pega desejada
juan_ruiz 0:acba0720dcfd 17 int deslocamentoZ0 = posZ0atual - posZ0_desejada; // deslocamento do eixo Z até a posição de pega desejada
juan_ruiz 0:acba0720dcfd 18
juan_ruiz 0:acba0720dcfd 19 void Rotina_Pega(void);
juan_ruiz 0:acba0720dcfd 20 void Rotina_Solta(void);
juan_ruiz 0:acba0720dcfd 21
juan_ruiz 0:acba0720dcfd 22 int main()
juan_ruiz 0:acba0720dcfd 23 {
juan_ruiz 0:acba0720dcfd 24 while (npos_pega < pos_pega_total) // checa se existem mais posições de solta
juan_ruiz 0:acba0720dcfd 25 {
juan_ruiz 0:acba0720dcfd 26 if (valor_SELECT == 1) // o usuário não quer alterar nenhum parâmetro
juan_ruiz 0:acba0720dcfd 27 {
juan_ruiz 0:acba0720dcfd 28 contador_SELECT = 1;
juan_ruiz 0:acba0720dcfd 29
juan_ruiz 0:acba0720dcfd 30 //Chama a rotina de pega
juan_ruiz 0:acba0720dcfd 31 Rotina_Pega();
juan_ruiz 0:acba0720dcfd 32
juan_ruiz 0:acba0720dcfd 33 //Chama a rotina de solta
juan_ruiz 0:acba0720dcfd 34 Rotina_Solta();
juan_ruiz 0:acba0720dcfd 35
juan_ruiz 0:acba0720dcfd 36 atual_pega = atual_pega - 1; // após a rotina de solta, a quantidade atual do substrato é reduzida por 1mL
juan_ruiz 0:acba0720dcfd 37 quant_depositada = quant_depositada + 1; // +1mL na quantidade depositada
juan_ruiz 0:acba0720dcfd 38
juan_ruiz 0:acba0720dcfd 39 if (atual_pega == 0) // não existe mais substrato na posição de pega
juan_ruiz 0:acba0720dcfd 40 {
juan_ruiz 0:acba0720dcfd 41 lcd.locate(2,0);
juan_ruiz 0:acba0720dcfd 42 lcd.printf("Coleta vazia");
juan_ruiz 0:acba0720dcfd 43 }
juan_ruiz 0:acba0720dcfd 44 else
juan_ruiz 0:acba0720dcfd 45 {
juan_ruiz 0:acba0720dcfd 46 while (quant _depositada < quant_desejada) // "quant_desejada" definido pelo usuário na IHM
juan_ruiz 0:acba0720dcfd 47 {
juan_ruiz 0:acba0720dcfd 48 Rotina_Pega();
juan_ruiz 0:acba0720dcfd 49 atual_pega = atual_pega - 1;
juan_ruiz 0:acba0720dcfd 50
juan_ruiz 0:acba0720dcfd 51 if (mL_atual == 0)
juan_ruiz 0:acba0720dcfd 52 {
juan_ruiz 0:acba0720dcfd 53 lcd.locate(2,0);
juan_ruiz 0:acba0720dcfd 54 lcd.printf("Coleta vazia");
juan_ruiz 0:acba0720dcfd 55 }
juan_ruiz 0:acba0720dcfd 56
juan_ruiz 0:acba0720dcfd 57 else
juan_ruiz 0:acba0720dcfd 58 {
juan_ruiz 0:acba0720dcfd 59 Rotina_Solta();
juan_ruiz 0:acba0720dcfd 60 quant_depositada = quant_depositada + 1;
juan_ruiz 0:acba0720dcfd 61 }
juan_ruiz 0:acba0720dcfd 62
juan_ruiz 0:acba0720dcfd 63 }
juan_ruiz 0:acba0720dcfd 64 }
juan_ruiz 0:acba0720dcfd 65 }
juan_ruiz 0:acba0720dcfd 66 }
juan_ruiz 0:acba0720dcfd 67
juan_ruiz 0:acba0720dcfd 68 void Rotina_Pega()
juan_ruiz 0:acba0720dcfd 69 {
juan_ruiz 0:acba0720dcfd 70 sinal = 0; // saída nível lógico "baixo"
juan_ruiz 0:acba0720dcfd 71
juan_ruiz 0:acba0720dcfd 72 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
juan_ruiz 0:acba0720dcfd 73
juan_ruiz 0:acba0720dcfd 74 n_pulsosX = (1/(passo_motor*passo_fuso))*360*deslocamento_X0; //movimentação do eixo X para posição de pega
juan_ruiz 0:acba0720dcfd 75 n_pulsosY = (1/(passo_motor*passo_fuso))*360*deslocamento_Y0; //movimentação do eixo Y para posição de pega
juan_ruiz 0:acba0720dcfd 76 n_pulsosZ = (1/(passo_motor*passo_fuso))*360*deslocamento_Z0; //movimentação do eixo Y para posição de pega
juan_ruiz 0:acba0720dcfd 77
juan_ruiz 0:acba0720dcfd 78 sinal = 1; // saída nível lógico "alto"
juan_ruiz 0:acba0720dcfd 79 lcd.locate(2,0);
juan_ruiz 0:acba0720dcfd 80 lcd.printf("Coletando");
juan_ruiz 0:acba0720dcfd 81 wait(tempo);
juan_ruiz 0:acba0720dcfd 82
juan_ruiz 0:acba0720dcfd 83 }
juan_ruiz 0:acba0720dcfd 84
juan_ruiz 0:acba0720dcfd 85 void Rotina_Solta()
juan_ruiz 0:acba0720dcfd 86 {
juan_ruiz 0:acba0720dcfd 87 sinal = 0; // saída nível lógico "baixo"
juan_ruiz 0:acba0720dcfd 88
juan_ruiz 0:acba0720dcfd 89 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
juan_ruiz 0:acba0720dcfd 90
juan_ruiz 0:acba0720dcfd 91 n_pulsosX = (1/(passo_motor*passo_fuso))*360*deslocamento_X0; //movimentação do eixo X para posição de pega
juan_ruiz 0:acba0720dcfd 92 n_pulsosY = (1/(passo_motor*passo_fuso))*360*deslocamento_Y0; //movimentação do eixo Y para posição de pega
juan_ruiz 0:acba0720dcfd 93 n_pulsosZ = (1/(passo_motor*passo_fuso))*360*deslocamento_Z0; //movimentação do eixo Y para posição de pega
juan_ruiz 0:acba0720dcfd 94
juan_ruiz 0:acba0720dcfd 95 sinal = 1; // saída nível lógico "alto"
juan_ruiz 0:acba0720dcfd 96 lcd.locate(2,0);
juan_ruiz 0:acba0720dcfd 97 lcd.printf("Depositando");
juan_ruiz 0:acba0720dcfd 98 wait(tempo);
juan_ruiz 0:acba0720dcfd 99 }
juan_ruiz 0:acba0720dcfd 100