Joy_Buttons versao 2

Dependencies:   X_NUCLEO_IHM01A1 mbed

Fork of HelloWorld_IHM01A1_buttons by InsperX

botoesnh.cpp

Committer:
Bitelli
Date:
2018-04-18
Revision:
39:8e6912132896
Parent:
38:6e846a303dec

File content as of revision 39:8e6912132896:

/* Includes ------------------------------------------------------------------*/

/* mbed specific header files. */
#include "mbed.h"

/* Helper header files. */
#include "DevSPI.h"

/* Component specific header files. */
#include "L6474.h"


/* Definitions ---------------------------------------------------------------*/

/* Number of steps. */
#define STEPS_1 (200 * 8)   /* 1 revolution given a 200 steps motor configured at 1/8 microstep mode. */

/* Delay in milliseconds. */
#define DELAY_1 1000
#define DELAY_2 2000
#define DELAY_3 6000
#define DELAY_4 8000

/* Speed in pps (Pulses Per Second).
   In Full Step mode: 1 pps = 1 step/s).
   In 1/N Step Mode:  N pps = 1 step/s). */
#define SPEED_1 2400
#define SPEED_2 1200


/* Variables -----------------------------------------------------------------*/

/* Initialization parameters. */
L6474_init_t init = {
    160,                              /* Acceleration rate in pps^2. Range: (0..+inf). */
    160,                              /* Deceleration rate in pps^2. Range: (0..+inf). */
    2600,                             /* Maximum speed in pps. Range: (30..10000]. */
    800,                              /* Minimum speed in pps. Range: [30..10000). */
    250,                              /* Torque regulation current in mA. Range: 31.25mA to 4000mA. */
    L6474_OCD_TH_750mA,               /* Overcurrent threshold (OCD_TH register). */
    L6474_CONFIG_OC_SD_ENABLE,        /* Overcurrent shutwdown (OC_SD field of CONFIG register). */
    L6474_CONFIG_EN_TQREG_TVAL_USED,  /* Torque regulation method (EN_TQREG field of CONFIG register). */
    L6474_STEP_SEL_1_8,               /* Step selection (STEP_SEL field of STEP_MODE register). */
    L6474_SYNC_SEL_1_2,               /* Sync selection (SYNC_SEL field of STEP_MODE register). */
    L6474_FAST_STEP_12us,             /* Fall time value (T_FAST field of T_FAST register). Range: 2us to 32us. */
    L6474_TOFF_FAST_8us,              /* Maximum fast decay time (T_OFF field of T_FAST register). Range: 2us to 32us. */
    3,                                /* Minimum ON time in us (TON_MIN register). Range: 0.5us to 64us. */
    21,                               /* Minimum OFF time in us (TOFF_MIN register). Range: 0.5us to 64us. */
    L6474_CONFIG_TOFF_044us,          /* Target Swicthing Period (field TOFF of CONFIG register). */
    L6474_CONFIG_SR_320V_us,          /* Slew rate (POW_SR field of CONFIG register). */
    L6474_CONFIG_INT_16MHZ,           /* Clock setting (OSC_CLK_SEL field of CONFIG register). */
    L6474_ALARM_EN_OVERCURRENT |
    L6474_ALARM_EN_THERMAL_SHUTDOWN |
    L6474_ALARM_EN_THERMAL_WARNING |
    L6474_ALARM_EN_UNDERVOLTAGE |
    L6474_ALARM_EN_SW_TURN_ON |
    L6474_ALARM_EN_WRONG_NPERF_CMD    /* Alarm (ALARM_EN register). */
};

/* Motor Control Component. */
L6474 *motor1;
L6474 *motor2;
L6474 *motor3;



/* Functions -----------------------------------------------------------------*/




DigitalIn botao_A(A0);
DigitalIn botao_B(A1);
DigitalIn botao_C(A2);
DigitalIn botao_D(A3);


DigitalOut myled(LED1);
Serial pc(USBTX, USBRX);

int main() {
    /*----- Initialization. -----*/

    /* Initializing SPI bus. */
    DevSPI dev_spi(D11, D12, D13);

    /* Initializing Motor Control Component. */
    motor1 = new L6474(D2, D8, D7, D9, D10, dev_spi);
    motor2 = new L6474(D2, D8, D4, D3, D10, dev_spi);
    motor3 = new L6474(D2, D8, D5, D6, D10, dev_spi);
    if (motor1->init(&init) != COMPONENT_OK) {
        exit(EXIT_FAILURE);
    }
    if (motor2->init(&init) != COMPONENT_OK) {
        exit(EXIT_FAILURE);
    }
    if (motor3->init(&init) != COMPONENT_OK) {
        exit(EXIT_FAILURE);
    }

   
int a,b,c,d;
pc.baud(9600);


a=b=c=d=0;

pc.printf("\f\rA=%d, B=%d, C=%d, D=%d",a,b,c,d);
pc.printf("\n\rHello World!!!");

    while(1) {
        if (botao_A==0) {
          a++;
          pc.printf("\n\rTecla A=%d",a);
          motor1->move(StepperMotor::FWD, 400);
          motor2->move(StepperMotor::FWD, 400);
          motor3->move(StepperMotor::FWD, 400);
        }
        if (botao_B==0) {
          b++;
          pc.printf("\n\rTecla B=%d",b);
          motor1->move(StepperMotor::BWD, 400);
          motor2->move(StepperMotor::BWD, 400);
          motor3->move(StepperMotor::BWD, 400);
        }
        if (botao_C==0) {
          c++;
          pc.printf("\n\rTecla C=%d",c);
        }
        if (botao_D==0) {
          d++;
          pc.printf("\n\rTecla D=%d",d);
        }
          wait(0.2);
    }
}