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
00001 #include "mbed.h" 00002 00003 // Pinos para emitir pulsos para cada motor 00004 DigitalOut sinal(PC_10); 00005 00006 float tempo = 1.5; 00007 00008 // Valores de Teste 00009 int total_pega = 40; // 40 mL na posição de pega 00010 int quant_desejada = 30; // 30 mL na posição de solta 1 00011 //int npos_pega = [1,2,3,4]; 00012 //int pos_pega_total = 4; 00013 float posZ_atual = 0; 00014 float posX_atual = 10; 00015 float posY_atual = 20; 00016 float posX0_desejada = 0; 00017 float posY0_desejada = 5; 00018 float posZ0_desejada = 10; 00019 float posX_desejada = 10; 00020 float posY_desejada = 20; 00021 float posZ_desejada = 90; 00022 00023 int atual_pega = total_pega; // "total_pega" é a quantidade inserida pelo usuário na posição de pega 00024 //int quant_desejada; // "quant desejada" é a quantidade inserida pelo usuário na posição de solta 00025 int quant_depositada = 0; 00026 int n_pulsosX; 00027 int n_pulsosY; 00028 int n_pulsosZ; 00029 int posZ_origem = 0; 00030 int deslocamentoZ_partida = posZ_origem - posZ_atual; // deslocamento do eixo Z até a posição de partida (origem) 00031 int deslocamentoX0 = posX0_desejada - posX_atual; // deslocamento do eixo X até a posição de pega desejada 00032 int deslocamentoY0 = posY0_desejada - posY_atual; // deslocamento do eixo Y até a posição de pega desejada 00033 int deslocamentoZ0 = posZ0_desejada - posZ_atual; // deslocamento do eixo Z até a posição de pega desejada 00034 int deslocamentoX = posX_desejada - posX_atual; // deslocamento do eixo X até a posição de solta desejada 00035 int deslocamentoY = posY_desejada - posY_atual; // deslocamento do eixo Y até a posição de solta desejada 00036 int deslocamentoZ = posZ_desejada - posZ_atual; // deslocamento do eixo Z até a posição de solta desejada 00037 00038 00039 void Rotina_Pega(void); 00040 void Rotina_Solta(void); 00041 00042 int main() 00043 { 00044 //while (npos_pega < pos_pega_total) // checa se existem mais posições de solta 00045 { 00046 if (valor_SELECT == 1) // o usuário não quer alterar nenhum parâmetro 00047 { 00048 00049 //Chama a rotina de pega 00050 Rotina_Pega(); 00051 00052 //Chama a rotina de solta 00053 Rotina_Solta(); 00054 00055 atual_pega = atual_pega - 1; // após a rotina de solta, a quantidade atual do substrato é reduzida por 1mL 00056 quant_depositada = quant_depositada + 1; // +1mL na quantidade depositada 00057 00058 if (atual_pega == 0) // não existe mais substrato na posição de pega 00059 { 00060 lcd.locate(2,0); 00061 lcd.printf("Coleta vazia"); 00062 } 00063 else 00064 { 00065 while (quant_depositada < quant_desejada) // "quant_desejada" definido pelo usuário na IHM 00066 { 00067 Rotina_Pega(); 00068 atual_pega = atual_pega - 1; 00069 00070 if (atual_pega == 0) 00071 { 00072 lcd.locate(2,0); 00073 lcd.printf("Coleta vazia"); 00074 } 00075 00076 else 00077 { 00078 Rotina_Solta(); 00079 quant_depositada = quant_depositada + 1; 00080 } 00081 00082 } 00083 } 00084 } 00085 } 00086 00087 void Rotina_Pega() 00088 { 00089 sinal = 0; // saída nível lógico "baixo" 00090 00091 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 00092 00093 n_pulsosX = (1/(passo_motor*passo_fuso))*360*deslocamento_X0; //movimentação do eixo X para posição de pega 00094 n_pulsosY = (1/(passo_motor*passo_fuso))*360*deslocamento_Y0; //movimentação do eixo Y para posição de pega 00095 n_pulsosZ = (1/(passo_motor*passo_fuso))*360*deslocamento_Z0; //movimentação do eixo Z para posição de pega 00096 00097 sinal = 1; // saída nível lógico "alto" 00098 lcd.locate(2,0); 00099 lcd.printf("Coletando"); 00100 wait(tempo); 00101 00102 } 00103 00104 void Rotina_Solta() 00105 { 00106 sinal = 0; // saída nível lógico "baixo" 00107 00108 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 00109 00110 n_pulsosX = (1/(passo_motor*passo_fuso))*360*deslocamento_X; //movimentação do eixo X para posição de pega 00111 n_pulsosY = (1/(passo_motor*passo_fuso))*360*deslocamento_Y; //movimentação do eixo Y para posição de pega 00112 n_pulsosZ = (1/(passo_motor*passo_fuso))*360*deslocamento_Z; //movimentação do eixo Z para posição de pega 00113 00114 sinal = 1; // saída nível lógico "alto" 00115 lcd.locate(2,0); 00116 lcd.printf("Depositando"); 00117 wait(tempo); 00118 } 00119
Generated on Thu Jul 28 2022 21:01:09 by
1.7.2