Joystick controlando 3 motores

Dependencies:   mbed X_NUCLEO_IHM01A1

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?

UserRevisionLine numberNew 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 }