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
JOG_EIXO_Z.cpp@9:bf4124478580, 2021-05-13 (annotated)
- Committer:
- juan_ruiz
- Date:
- Thu May 13 17:39:46 2021 +0000
- Revision:
- 9:bf4124478580
- Parent:
- 8:177dae156b80
- Child:
- 10:e3e8ebb9a341
Juan
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| diogonac | 3:ce5c55c100b1 | 1 | #include "mbed.h" |
| juan_ruiz | 9:bf4124478580 | 2 | // Juan |
| diogonac | 3:ce5c55c100b1 | 3 | Serial pc (USBTX, USBRX); |
| diogonac | 3:ce5c55c100b1 | 4 | |
| diogonac | 6:c344e6b93f34 | 5 | |
| diogonac | 5:bfedd53bfd09 | 6 | AnalogIn eixo_Z(A2); |
| diogonac | 4:c3007ca446ec | 7 | InterruptIn posicao_salva(PA_8); |
| diogonac | 3:ce5c55c100b1 | 8 | |
| diogonac | 3:ce5c55c100b1 | 9 | BusOut motor_y(PA_11, PB_12, PB_11, PB_2); |
| diogonac | 4:c3007ca446ec | 10 | BusOut motor_z(PB_1, PB_15, PB_14, PB_13); |
| diogonac | 3:ce5c55c100b1 | 11 | |
| diogonac | 3:ce5c55c100b1 | 12 | double frequencia; //Hz |
| diogonac | 3:ce5c55c100b1 | 13 | double velocidade = 4; //RPM |
| diogonac | 3:ce5c55c100b1 | 14 | double tempo; //Segundos |
| diogonac | 3:ce5c55c100b1 | 15 | int i; |
| diogonac | 4:c3007ca446ec | 16 | int X, Y, Z; |
| diogonac | 4:c3007ca446ec | 17 | int pegaX, pegaY, pegaZ; |
| diogonac | 4:c3007ca446ec | 18 | int posicao_salva_estado, botao_emergencia_estado; |
| diogonac | 3:ce5c55c100b1 | 19 | |
| diogonac | 4:c3007ca446ec | 20 | void rotina_posicao_salva(void); |
| diogonac | 4:c3007ca446ec | 21 | void rotina_emergencia(void); |
| diogonac | 3:ce5c55c100b1 | 22 | |
| diogonac | 3:ce5c55c100b1 | 23 | |
| diogonac | 3:ce5c55c100b1 | 24 | |
| diogonac | 3:ce5c55c100b1 | 25 | int main() |
| diogonac | 3:ce5c55c100b1 | 26 | { |
| diogonac | 3:ce5c55c100b1 | 27 | motor_x = 0x00; |
| diogonac | 3:ce5c55c100b1 | 28 | motor_y = 0x00; |
| diogonac | 4:c3007ca446ec | 29 | motor_z = 0x00; |
| diogonac | 3:ce5c55c100b1 | 30 | pc.baud(115200); |
| diogonac | 4:c3007ca446ec | 31 | posicao_salva.rise(&rotina_posicao_salva); |
| diogonac | 4:c3007ca446ec | 32 | botao_emergencia.rise(&rotina_emergencia); |
| diogonac | 3:ce5c55c100b1 | 33 | frequencia = (2048*velocidade)/60; |
| diogonac | 3:ce5c55c100b1 | 34 | tempo = (1/frequencia); |
| diogonac | 3:ce5c55c100b1 | 35 | |
| diogonac | 3:ce5c55c100b1 | 36 | while(1) { |
| diogonac | 3:ce5c55c100b1 | 37 | |
| diogonac | 3:ce5c55c100b1 | 38 | X = eixo_X.read_u16(); |
| diogonac | 3:ce5c55c100b1 | 39 | Y = eixo_Y.read_u16(); |
| diogonac | 4:c3007ca446ec | 40 | Z = eixo_Z.read_u16(); |
| diogonac | 4:c3007ca446ec | 41 | posicao_salva_estado = posicao_salva.read(); |
| diogonac | 4:c3007ca446ec | 42 | botao_emergencia_estado = botao_emergencia.read(); |
| diogonac | 3:ce5c55c100b1 | 43 | |
| diogonac | 4:c3007ca446ec | 44 | pc.printf("X=%4d, Y=%4d, Z=%4d, PegaX=%4d, PegaY=%4d, PegaZ=%4d, Posicao_salva_estado=%d, Botao_emergencia_estado=%d \r\n", X, Y, Z, pegaX, pegaY, pegaZ, posicao_salva_estado, botao_emergencia_estado); |
| diogonac | 3:ce5c55c100b1 | 45 | |
| diogonac | 3:ce5c55c100b1 | 46 | if(31000 <= X & X <= 35000) { |
| diogonac | 3:ce5c55c100b1 | 47 | |
| diogonac | 3:ce5c55c100b1 | 48 | motor_x = 0x00; |
| diogonac | 3:ce5c55c100b1 | 49 | } else { |
| diogonac | 3:ce5c55c100b1 | 50 | if (X > 31000) { |
| diogonac | 3:ce5c55c100b1 | 51 | for(i = 0; i < 4; i++) { |
| diogonac | 3:ce5c55c100b1 | 52 | motor_x = 1 << i; |
| diogonac | 3:ce5c55c100b1 | 53 | wait(tempo); |
| diogonac | 3:ce5c55c100b1 | 54 | } |
| diogonac | 3:ce5c55c100b1 | 55 | } |
| diogonac | 3:ce5c55c100b1 | 56 | |
| diogonac | 3:ce5c55c100b1 | 57 | if(X<35000) { |
| diogonac | 3:ce5c55c100b1 | 58 | for(i = 3; i > -1; i--) { |
| diogonac | 3:ce5c55c100b1 | 59 | motor_x = 1 << i; |
| diogonac | 3:ce5c55c100b1 | 60 | wait(tempo); |
| diogonac | 3:ce5c55c100b1 | 61 | } |
| diogonac | 3:ce5c55c100b1 | 62 | } |
| diogonac | 3:ce5c55c100b1 | 63 | } |
| diogonac | 3:ce5c55c100b1 | 64 | |
| diogonac | 3:ce5c55c100b1 | 65 | if(31000 <= Y & Y <= 35000) { |
| diogonac | 3:ce5c55c100b1 | 66 | |
| diogonac | 3:ce5c55c100b1 | 67 | motor_y = 0x00; |
| diogonac | 3:ce5c55c100b1 | 68 | } |
| diogonac | 3:ce5c55c100b1 | 69 | |
| diogonac | 3:ce5c55c100b1 | 70 | else { |
| diogonac | 4:c3007ca446ec | 71 | if (Y > 31000) { |
| diogonac | 3:ce5c55c100b1 | 72 | for(i = 0; i < 4; i++) { |
| diogonac | 3:ce5c55c100b1 | 73 | motor_y = 1 << i; |
| diogonac | 3:ce5c55c100b1 | 74 | wait(tempo); |
| diogonac | 3:ce5c55c100b1 | 75 | } |
| diogonac | 3:ce5c55c100b1 | 76 | } |
| diogonac | 3:ce5c55c100b1 | 77 | |
| diogonac | 4:c3007ca446ec | 78 | if(Y < 35000) { |
| diogonac | 3:ce5c55c100b1 | 79 | for(i = 3; i > -1; i--) { |
| diogonac | 3:ce5c55c100b1 | 80 | motor_y = 1 << i; |
| diogonac | 3:ce5c55c100b1 | 81 | wait(tempo); |
| diogonac | 3:ce5c55c100b1 | 82 | } |
| diogonac | 3:ce5c55c100b1 | 83 | } |
| diogonac | 3:ce5c55c100b1 | 84 | } |
| diogonac | 4:c3007ca446ec | 85 | |
| diogonac | 4:c3007ca446ec | 86 | if(31000 <= X & X <= 35000) { |
| diogonac | 4:c3007ca446ec | 87 | |
| diogonac | 4:c3007ca446ec | 88 | motor_z = 0x00; |
| diogonac | 4:c3007ca446ec | 89 | } else { |
| diogonac | 4:c3007ca446ec | 90 | if (X > 31000) { |
| diogonac | 4:c3007ca446ec | 91 | for(i = 0; i < 4; i++) { |
| diogonac | 4:c3007ca446ec | 92 | motor_z = 1 << i; |
| diogonac | 4:c3007ca446ec | 93 | wait(tempo); |
| diogonac | 4:c3007ca446ec | 94 | } |
| diogonac | 4:c3007ca446ec | 95 | } |
| diogonac | 4:c3007ca446ec | 96 | |
| diogonac | 4:c3007ca446ec | 97 | if(X<35000) { |
| diogonac | 4:c3007ca446ec | 98 | for(i = 3; i > -1; i--) { |
| diogonac | 4:c3007ca446ec | 99 | motor_z = 1 << i; |
| diogonac | 4:c3007ca446ec | 100 | wait(tempo); |
| diogonac | 4:c3007ca446ec | 101 | } |
| diogonac | 4:c3007ca446ec | 102 | } |
| diogonac | 4:c3007ca446ec | 103 | } |
| diogonac | 4:c3007ca446ec | 104 | |
| diogonac | 3:ce5c55c100b1 | 105 | } |
| diogonac | 3:ce5c55c100b1 | 106 | } |
| diogonac | 3:ce5c55c100b1 | 107 | |
| diogonac | 3:ce5c55c100b1 | 108 | |
| diogonac | 4:c3007ca446ec | 109 | void rotina_posicao_salva() |
| diogonac | 3:ce5c55c100b1 | 110 | { |
| diogonac | 4:c3007ca446ec | 111 | if(posicao_salva_estado == 0) { |
| diogonac | 4:c3007ca446ec | 112 | |
| diogonac | 4:c3007ca446ec | 113 | pegaX = X; |
| diogonac | 4:c3007ca446ec | 114 | pegaY = Y; |
| diogonac | 4:c3007ca446ec | 115 | pegaZ = Z; |
| diogonac | 4:c3007ca446ec | 116 | |
| diogonac | 4:c3007ca446ec | 117 | } else { |
| diogonac | 4:c3007ca446ec | 118 | |
| diogonac | 4:c3007ca446ec | 119 | pegaX = 0; |
| diogonac | 4:c3007ca446ec | 120 | pegaY = 0; |
| diogonac | 4:c3007ca446ec | 121 | pegaZ = 0; |
| diogonac | 4:c3007ca446ec | 122 | |
| diogonac | 4:c3007ca446ec | 123 | } |
| diogonac | 4:c3007ca446ec | 124 | } |
| diogonac | 4:c3007ca446ec | 125 | |
| diogonac | 4:c3007ca446ec | 126 | void rotina_emergencia() |
| diogonac | 4:c3007ca446ec | 127 | { |
| diogonac | 4:c3007ca446ec | 128 | if(botao_emergencia_estado == 0) { |
| diogonac | 4:c3007ca446ec | 129 | |
| diogonac | 4:c3007ca446ec | 130 | motor_x = 0x00; |
| diogonac | 4:c3007ca446ec | 131 | motor_y = 0x00; |
| diogonac | 4:c3007ca446ec | 132 | motor_z = 0x00; |
| diogonac | 4:c3007ca446ec | 133 | |
| diogonac | 4:c3007ca446ec | 134 | } |
| diogonac | 3:ce5c55c100b1 | 135 | } |