Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp
- Committer:
- juan_ruiz
- Date:
- 2021-06-01
- Revision:
- 0:acba0720dcfd
- Child:
- 1:b77c22122be8
File content as of revision 0:acba0720dcfd:
#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);
}