Projeto Mecatrônico / Mbed 2 deprecated Acionamento_Pipeta

Dependencies:   mbed

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