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@0:acba0720dcfd, 2021-06-01 (annotated)
- 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?
| User | Revision | Line number | New 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 |