Projeto Mecatrônico / Mbed 2 deprecated JOG_EIXO_Z

Dependencies:   mbed

Committer:
diogonac
Date:
Thu May 13 17:42:39 2021 +0000
Revision:
10:e3e8ebb9a341
Parent:
9:bf4124478580
Child:
11:25b867d1a00c
Diogo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
diogonac 3:ce5c55c100b1 1 #include "mbed.h"
diogonac 10:e3e8ebb9a341 2 // Diogo
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 }