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
Diff: main.cpp
- 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);
+}
+