Joy_Buttons versao 2

Dependencies:   X_NUCLEO_IHM01A1 mbed

Fork of HelloWorld_IHM01A1_buttons by InsperX

Committer:
Bitelli
Date:
Wed Apr 18 20:33:33 2018 +0000
Revision:
39:8e6912132896
Parent:
38:6e846a303dec
3 motores

Who changed what in which revision?

UserRevisionLine numberNew contents of line
NathanLederman 38:6e846a303dec 1 /* Includes ------------------------------------------------------------------*/
NathanLederman 38:6e846a303dec 2
NathanLederman 38:6e846a303dec 3 /* mbed specific header files. */
NathanLederman 38:6e846a303dec 4 #include "mbed.h"
NathanLederman 38:6e846a303dec 5
NathanLederman 38:6e846a303dec 6 /* Helper header files. */
NathanLederman 38:6e846a303dec 7 #include "DevSPI.h"
NathanLederman 38:6e846a303dec 8
NathanLederman 38:6e846a303dec 9 /* Component specific header files. */
NathanLederman 38:6e846a303dec 10 #include "L6474.h"
NathanLederman 38:6e846a303dec 11
NathanLederman 38:6e846a303dec 12
NathanLederman 38:6e846a303dec 13 /* Definitions ---------------------------------------------------------------*/
NathanLederman 38:6e846a303dec 14
NathanLederman 38:6e846a303dec 15 /* Number of steps. */
Bitelli 39:8e6912132896 16 #define STEPS_1 (200 * 8) /* 1 revolution given a 200 steps motor configured at 1/8 microstep mode. */
NathanLederman 38:6e846a303dec 17
NathanLederman 38:6e846a303dec 18 /* Delay in milliseconds. */
NathanLederman 38:6e846a303dec 19 #define DELAY_1 1000
NathanLederman 38:6e846a303dec 20 #define DELAY_2 2000
NathanLederman 38:6e846a303dec 21 #define DELAY_3 6000
NathanLederman 38:6e846a303dec 22 #define DELAY_4 8000
NathanLederman 38:6e846a303dec 23
NathanLederman 38:6e846a303dec 24 /* Speed in pps (Pulses Per Second).
NathanLederman 38:6e846a303dec 25 In Full Step mode: 1 pps = 1 step/s).
NathanLederman 38:6e846a303dec 26 In 1/N Step Mode: N pps = 1 step/s). */
NathanLederman 38:6e846a303dec 27 #define SPEED_1 2400
NathanLederman 38:6e846a303dec 28 #define SPEED_2 1200
NathanLederman 38:6e846a303dec 29
NathanLederman 38:6e846a303dec 30
NathanLederman 38:6e846a303dec 31 /* Variables -----------------------------------------------------------------*/
NathanLederman 38:6e846a303dec 32
NathanLederman 38:6e846a303dec 33 /* Initialization parameters. */
NathanLederman 38:6e846a303dec 34 L6474_init_t init = {
NathanLederman 38:6e846a303dec 35 160, /* Acceleration rate in pps^2. Range: (0..+inf). */
NathanLederman 38:6e846a303dec 36 160, /* Deceleration rate in pps^2. Range: (0..+inf). */
Bitelli 39:8e6912132896 37 2600, /* Maximum speed in pps. Range: (30..10000]. */
NathanLederman 38:6e846a303dec 38 800, /* Minimum speed in pps. Range: [30..10000). */
NathanLederman 38:6e846a303dec 39 250, /* Torque regulation current in mA. Range: 31.25mA to 4000mA. */
NathanLederman 38:6e846a303dec 40 L6474_OCD_TH_750mA, /* Overcurrent threshold (OCD_TH register). */
NathanLederman 38:6e846a303dec 41 L6474_CONFIG_OC_SD_ENABLE, /* Overcurrent shutwdown (OC_SD field of CONFIG register). */
NathanLederman 38:6e846a303dec 42 L6474_CONFIG_EN_TQREG_TVAL_USED, /* Torque regulation method (EN_TQREG field of CONFIG register). */
NathanLederman 38:6e846a303dec 43 L6474_STEP_SEL_1_8, /* Step selection (STEP_SEL field of STEP_MODE register). */
NathanLederman 38:6e846a303dec 44 L6474_SYNC_SEL_1_2, /* Sync selection (SYNC_SEL field of STEP_MODE register). */
NathanLederman 38:6e846a303dec 45 L6474_FAST_STEP_12us, /* Fall time value (T_FAST field of T_FAST register). Range: 2us to 32us. */
NathanLederman 38:6e846a303dec 46 L6474_TOFF_FAST_8us, /* Maximum fast decay time (T_OFF field of T_FAST register). Range: 2us to 32us. */
NathanLederman 38:6e846a303dec 47 3, /* Minimum ON time in us (TON_MIN register). Range: 0.5us to 64us. */
NathanLederman 38:6e846a303dec 48 21, /* Minimum OFF time in us (TOFF_MIN register). Range: 0.5us to 64us. */
NathanLederman 38:6e846a303dec 49 L6474_CONFIG_TOFF_044us, /* Target Swicthing Period (field TOFF of CONFIG register). */
NathanLederman 38:6e846a303dec 50 L6474_CONFIG_SR_320V_us, /* Slew rate (POW_SR field of CONFIG register). */
NathanLederman 38:6e846a303dec 51 L6474_CONFIG_INT_16MHZ, /* Clock setting (OSC_CLK_SEL field of CONFIG register). */
NathanLederman 38:6e846a303dec 52 L6474_ALARM_EN_OVERCURRENT |
NathanLederman 38:6e846a303dec 53 L6474_ALARM_EN_THERMAL_SHUTDOWN |
NathanLederman 38:6e846a303dec 54 L6474_ALARM_EN_THERMAL_WARNING |
NathanLederman 38:6e846a303dec 55 L6474_ALARM_EN_UNDERVOLTAGE |
NathanLederman 38:6e846a303dec 56 L6474_ALARM_EN_SW_TURN_ON |
NathanLederman 38:6e846a303dec 57 L6474_ALARM_EN_WRONG_NPERF_CMD /* Alarm (ALARM_EN register). */
NathanLederman 38:6e846a303dec 58 };
NathanLederman 38:6e846a303dec 59
NathanLederman 38:6e846a303dec 60 /* Motor Control Component. */
Bitelli 39:8e6912132896 61 L6474 *motor1;
Bitelli 39:8e6912132896 62 L6474 *motor2;
Bitelli 39:8e6912132896 63 L6474 *motor3;
Bitelli 39:8e6912132896 64
NathanLederman 38:6e846a303dec 65
NathanLederman 38:6e846a303dec 66
NathanLederman 38:6e846a303dec 67 /* Functions -----------------------------------------------------------------*/
NathanLederman 38:6e846a303dec 68
NathanLederman 38:6e846a303dec 69
NathanLederman 38:6e846a303dec 70
NathanLederman 38:6e846a303dec 71
Bitelli 39:8e6912132896 72 DigitalIn botao_A(A0);
Bitelli 39:8e6912132896 73 DigitalIn botao_B(A1);
Bitelli 39:8e6912132896 74 DigitalIn botao_C(A2);
Bitelli 39:8e6912132896 75 DigitalIn botao_D(A3);
NathanLederman 38:6e846a303dec 76
NathanLederman 38:6e846a303dec 77
NathanLederman 38:6e846a303dec 78 DigitalOut myled(LED1);
NathanLederman 38:6e846a303dec 79 Serial pc(USBTX, USBRX);
NathanLederman 38:6e846a303dec 80
NathanLederman 38:6e846a303dec 81 int main() {
NathanLederman 38:6e846a303dec 82 /*----- Initialization. -----*/
NathanLederman 38:6e846a303dec 83
NathanLederman 38:6e846a303dec 84 /* Initializing SPI bus. */
NathanLederman 38:6e846a303dec 85 DevSPI dev_spi(D11, D12, D13);
NathanLederman 38:6e846a303dec 86
NathanLederman 38:6e846a303dec 87 /* Initializing Motor Control Component. */
Bitelli 39:8e6912132896 88 motor1 = new L6474(D2, D8, D7, D9, D10, dev_spi);
Bitelli 39:8e6912132896 89 motor2 = new L6474(D2, D8, D4, D3, D10, dev_spi);
Bitelli 39:8e6912132896 90 motor3 = new L6474(D2, D8, D5, D6, D10, dev_spi);
Bitelli 39:8e6912132896 91 if (motor1->init(&init) != COMPONENT_OK) {
Bitelli 39:8e6912132896 92 exit(EXIT_FAILURE);
Bitelli 39:8e6912132896 93 }
Bitelli 39:8e6912132896 94 if (motor2->init(&init) != COMPONENT_OK) {
Bitelli 39:8e6912132896 95 exit(EXIT_FAILURE);
Bitelli 39:8e6912132896 96 }
Bitelli 39:8e6912132896 97 if (motor3->init(&init) != COMPONENT_OK) {
NathanLederman 38:6e846a303dec 98 exit(EXIT_FAILURE);
NathanLederman 38:6e846a303dec 99 }
NathanLederman 38:6e846a303dec 100
Bitelli 39:8e6912132896 101
NathanLederman 38:6e846a303dec 102 int a,b,c,d;
NathanLederman 38:6e846a303dec 103 pc.baud(9600);
NathanLederman 38:6e846a303dec 104
NathanLederman 38:6e846a303dec 105
NathanLederman 38:6e846a303dec 106 a=b=c=d=0;
NathanLederman 38:6e846a303dec 107
NathanLederman 38:6e846a303dec 108 pc.printf("\f\rA=%d, B=%d, C=%d, D=%d",a,b,c,d);
NathanLederman 38:6e846a303dec 109 pc.printf("\n\rHello World!!!");
NathanLederman 38:6e846a303dec 110
NathanLederman 38:6e846a303dec 111 while(1) {
NathanLederman 38:6e846a303dec 112 if (botao_A==0) {
NathanLederman 38:6e846a303dec 113 a++;
NathanLederman 38:6e846a303dec 114 pc.printf("\n\rTecla A=%d",a);
Bitelli 39:8e6912132896 115 motor1->move(StepperMotor::FWD, 400);
Bitelli 39:8e6912132896 116 motor2->move(StepperMotor::FWD, 400);
Bitelli 39:8e6912132896 117 motor3->move(StepperMotor::FWD, 400);
NathanLederman 38:6e846a303dec 118 }
NathanLederman 38:6e846a303dec 119 if (botao_B==0) {
NathanLederman 38:6e846a303dec 120 b++;
NathanLederman 38:6e846a303dec 121 pc.printf("\n\rTecla B=%d",b);
Bitelli 39:8e6912132896 122 motor1->move(StepperMotor::BWD, 400);
Bitelli 39:8e6912132896 123 motor2->move(StepperMotor::BWD, 400);
Bitelli 39:8e6912132896 124 motor3->move(StepperMotor::BWD, 400);
NathanLederman 38:6e846a303dec 125 }
NathanLederman 38:6e846a303dec 126 if (botao_C==0) {
NathanLederman 38:6e846a303dec 127 c++;
NathanLederman 38:6e846a303dec 128 pc.printf("\n\rTecla C=%d",c);
NathanLederman 38:6e846a303dec 129 }
NathanLederman 38:6e846a303dec 130 if (botao_D==0) {
NathanLederman 38:6e846a303dec 131 d++;
NathanLederman 38:6e846a303dec 132 pc.printf("\n\rTecla D=%d",d);
NathanLederman 38:6e846a303dec 133 }
NathanLederman 38:6e846a303dec 134 wait(0.2);
NathanLederman 38:6e846a303dec 135 }
NathanLederman 38:6e846a303dec 136 }