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@1:b77c22122be8, 2021-06-01 (annotated)
- 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?
| 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 | 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 |