
Joystick controlando 3 motores
Dependencies: mbed X_NUCLEO_IHM01A1
main.cpp@32:74a4c733c11b, 2019-04-30 (annotated)
- Committer:
- Gabiuas
- Date:
- Tue Apr 30 13:11:04 2019 +0000
- Revision:
- 32:74a4c733c11b
- Parent:
- 31:3aae82e6353c
Joystick controlando 3 motores
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Davidroid | 0:e6a49a092e2a | 1 | #include "mbed.h" |
Davidroid | 0:e6a49a092e2a | 2 | #include "DevSPI.h" |
Davidroid | 29:526970c1d998 | 3 | #include "L6474.h" |
Davidroid | 0:e6a49a092e2a | 4 | |
Gabiuas | 32:74a4c733c11b | 5 | #define VRx A0 |
Gabiuas | 32:74a4c733c11b | 6 | #define VRy A1 |
Gabiuas | 32:74a4c733c11b | 7 | #define VRz A2 |
Gabiuas | 32:74a4c733c11b | 8 | #define SW D5 |
Davidroid | 0:e6a49a092e2a | 9 | |
Davidroid | 24:8cb3c4ad055f | 10 | /* Number of steps. */ |
rebecams | 31:3aae82e6353c | 11 | #define STEPS 2400 |
rebecams | 31:3aae82e6353c | 12 | |
Davidroid | 24:8cb3c4ad055f | 13 | /* Delay in milliseconds. */ |
Davidroid | 24:8cb3c4ad055f | 14 | #define DELAY_1 2000 |
Davidroid | 24:8cb3c4ad055f | 15 | #define DELAY_2 6000 |
Davidroid | 24:8cb3c4ad055f | 16 | #define DELAY_3 8000 |
Davidroid | 24:8cb3c4ad055f | 17 | |
Davidroid | 24:8cb3c4ad055f | 18 | /* Speed in pps (Pulses Per Second). |
Gabiuas | 32:74a4c733c11b | 19 | In Full Step mode: 1 pps = 1 step/s). |
Gabiuas | 32:74a4c733c11b | 20 | In 1/N Step Mode: N pps = 1 step/s). */ |
Davidroid | 24:8cb3c4ad055f | 21 | #define SPEED_1 2400 |
Davidroid | 24:8cb3c4ad055f | 22 | #define SPEED_2 1200 |
Davidroid | 24:8cb3c4ad055f | 23 | |
rebecams | 31:3aae82e6353c | 24 | /* Joystick */ |
Gabiuas | 32:74a4c733c11b | 25 | AnalogIn x_axis(VRx); // Create the analog x movement object |
Gabiuas | 32:74a4c733c11b | 26 | AnalogIn y_axis(VRy); // Create the analog y movement object |
Davidroid | 0:e6a49a092e2a | 27 | |
Davidroid | 0:e6a49a092e2a | 28 | /* Motor Control Component. */ |
Davidroid | 3:02d9ec4f88b2 | 29 | L6474 *motor1; |
Davidroid | 3:02d9ec4f88b2 | 30 | L6474 *motor2; |
Gabiuas | 32:74a4c733c11b | 31 | L6474 *motor3; |
Davidroid | 0:e6a49a092e2a | 32 | |
Gabiuas | 32:74a4c733c11b | 33 | int main(){ |
Davidroid | 0:e6a49a092e2a | 34 | /* Initializing SPI bus. */ |
Davidroid | 0:e6a49a092e2a | 35 | DevSPI dev_spi(D11, D12, D13); |
Gabiuas | 32:74a4c733c11b | 36 | |
Davidroid | 9:a9e51320aee4 | 37 | /* Initializing Motor Control Components. */ |
Davidroid | 5:a0268a435bb1 | 38 | motor1 = new L6474(D2, D8, D7, D9, D10, dev_spi); |
Davidroid | 16:810667a9f31f | 39 | motor2 = new L6474(D2, D8, D4, D3, D10, dev_spi); |
Gabiuas | 32:74a4c733c11b | 40 | motor3 = new L6474(D2, D8, D11, D5, D6, dev_spi); // Mudar Entradas |
Gabiuas | 32:74a4c733c11b | 41 | |
Davidroid | 29:526970c1d998 | 42 | if (motor1->init() != COMPONENT_OK) { |
Davidroid | 14:fcd452b03d1a | 43 | exit(EXIT_FAILURE); |
Davidroid | 28:3f17a4152bcf | 44 | } |
Davidroid | 29:526970c1d998 | 45 | if (motor2->init() != COMPONENT_OK) { |
Davidroid | 14:fcd452b03d1a | 46 | exit(EXIT_FAILURE); |
Davidroid | 28:3f17a4152bcf | 47 | } |
Gabiuas | 32:74a4c733c11b | 48 | if (motor3->init() != COMPONENT_OK) { |
Gabiuas | 32:74a4c733c11b | 49 | exit(EXIT_FAILURE); |
Gabiuas | 32:74a4c733c11b | 50 | } |
Davidroid | 0:e6a49a092e2a | 51 | |
Gabiuas | 32:74a4c733c11b | 52 | |
rebecams | 31:3aae82e6353c | 53 | while(1) |
Gabiuas | 32:74a4c733c11b | 54 | { |
rebecams | 31:3aae82e6353c | 55 | printf("\n"); |
Gabiuas | 32:74a4c733c11b | 56 | |
Gabiuas | 32:74a4c733c11b | 57 | |
Gabiuas | 32:74a4c733c11b | 58 | /*----- Movendo Eixo X -----*/ |
Gabiuas | 32:74a4c733c11b | 59 | |
Gabiuas | 32:74a4c733c11b | 60 | printf("\n X axis: %f", x_axis.read()); |
rebecams | 31:3aae82e6353c | 61 | |
rebecams | 31:3aae82e6353c | 62 | if (x_axis.read()>0.6){ |
Gabiuas | 32:74a4c733c11b | 63 | printf("--> Movendo X frente; Motor 1"); |
rebecams | 31:3aae82e6353c | 64 | motor1->run(StepperMotor::FWD); |
Gabiuas | 32:74a4c733c11b | 65 | } |
Gabiuas | 32:74a4c733c11b | 66 | else if (x_axis.read()<0.4){ |
Gabiuas | 32:74a4c733c11b | 67 | printf("--> Movendo X tras; Motor 1"); |
Gabiuas | 32:74a4c733c11b | 68 | motor1->run(StepperMotor::BWD); |
Gabiuas | 32:74a4c733c11b | 69 | } |
Gabiuas | 32:74a4c733c11b | 70 | else if (0.4<x_axis.read() and x_axis.read()<0.6){ |
Gabiuas | 32:74a4c733c11b | 71 | printf("--> Parado; motor 1"); |
Gabiuas | 32:74a4c733c11b | 72 | motor1->soft_stop(); |
Gabiuas | 32:74a4c733c11b | 73 | } |
Gabiuas | 32:74a4c733c11b | 74 | |
Gabiuas | 32:74a4c733c11b | 75 | |
Gabiuas | 32:74a4c733c11b | 76 | /*----- Movendo Eixo Y -----*/ |
Gabiuas | 32:74a4c733c11b | 77 | |
Gabiuas | 32:74a4c733c11b | 78 | printf(" Y axis: %f", y_axis.read()); |
Gabiuas | 32:74a4c733c11b | 79 | |
Gabiuas | 32:74a4c733c11b | 80 | if (y_axis.read()<0.4){ |
Gabiuas | 32:74a4c733c11b | 81 | printf("--> Movendo Y frente; Motor 2"); |
rebecams | 31:3aae82e6353c | 82 | motor2->run(StepperMotor::FWD); |
Gabiuas | 32:74a4c733c11b | 83 | } |
Gabiuas | 32:74a4c733c11b | 84 | else if (y_axis.read()>0.6){ |
Gabiuas | 32:74a4c733c11b | 85 | printf("--> Movendo Y tras; Motor 2"); |
rebecams | 31:3aae82e6353c | 86 | motor2->run(StepperMotor::BWD); |
Gabiuas | 32:74a4c733c11b | 87 | } |
Gabiuas | 32:74a4c733c11b | 88 | else if (0.4<y_axis.read() and y_axis.read()<0.6){ |
Gabiuas | 32:74a4c733c11b | 89 | printf("--> Parado; motor 2"); |
Gabiuas | 32:74a4c733c11b | 90 | motor2->soft_stop(); |
Gabiuas | 32:74a4c733c11b | 91 | } |
Gabiuas | 32:74a4c733c11b | 92 | |
Gabiuas | 32:74a4c733c11b | 93 | |
Gabiuas | 32:74a4c733c11b | 94 | /*----- Movendo Eixo Z -----*/ |
Gabiuas | 32:74a4c733c11b | 95 | |
Gabiuas | 32:74a4c733c11b | 96 | printf(" Z axis: %f", z_axis.read()); |
rebecams | 31:3aae82e6353c | 97 | |
Gabiuas | 32:74a4c733c11b | 98 | if (z_axis.read()>0.6){ |
Gabiuas | 32:74a4c733c11b | 99 | printf("--> Movendo Z frente; Motor 3"); |
Gabiuas | 32:74a4c733c11b | 100 | motor3->run(StepperMotor::FWD); |
Gabiuas | 32:74a4c733c11b | 101 | } |
Gabiuas | 32:74a4c733c11b | 102 | else if (z_axis.read()<0.4){ |
Gabiuas | 32:74a4c733c11b | 103 | printf("--> Movendo Z tras; Motor 3"); |
Gabiuas | 32:74a4c733c11b | 104 | motor3->run(StepperMotor::BWD); |
Gabiuas | 32:74a4c733c11b | 105 | } |
Gabiuas | 32:74a4c733c11b | 106 | else if (0.4<z_axis.read() and x_axis.read()<0.6){ |
Gabiuas | 32:74a4c733c11b | 107 | printf("--> Parado; motor 3"); |
Gabiuas | 32:74a4c733c11b | 108 | motor3->soft_stop(); |
Gabiuas | 32:74a4c733c11b | 109 | } |
Gabiuas | 32:74a4c733c11b | 110 | |
Gabiuas | 32:74a4c733c11b | 111 | |
Gabiuas | 32:74a4c733c11b | 112 | |
Gabiuas | 32:74a4c733c11b | 113 | if (button==0){ |
Gabiuas | 32:74a4c733c11b | 114 | break; |
Gabiuas | 32:74a4c733c11b | 115 | } |
Gabiuas | 32:74a4c733c11b | 116 | |
Davidroid | 0:e6a49a092e2a | 117 | } |
Gabiuas | 32:74a4c733c11b | 118 | } |