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