2 Motores + Joystick

Dependencies:   X_NUCLEO_IHM01A1 TextLCD

Fork of HelloWorld_IHM01A1_2Motors_mbedOS by ST

Files at this revision

API Documentation at this revision

Comitter:
leogrotti
Date:
Wed May 02 13:39:56 2018 +0000
Parent:
38:c3d77ff8168a
Child:
40:0b517b49f70d
Commit message:
3 motores configurados

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed Apr 25 15:03:09 2018 +0000
+++ b/main.cpp	Wed May 02 13:39:56 2018 +0000
@@ -69,31 +69,31 @@
 
 /* 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). */
-    4000,                             /* Maximum speed in pps. Range: (30..10000]. */
-    1300,                              /* Minimum speed in pps. Range: [30..10000). */
-    1500,                              /* Torque regulation current in mA. Range: 31.25mA to 4000mA. */
-    L6474_OCD_TH_1875mA,               /* 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_2,               /* 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). */
-};
+//L6474_init_t init = {
+//    160,                              /* Acceleration rate in pps^2. Range: (0..+inf). */
+//    160,                              /* Deceleration rate in pps^2. Range: (0..+inf). */
+//    4000,                             /* Maximum speed in pps. Range: (30..10000]. */
+//   1300,                              /* Minimum speed in pps. Range: [30..10000). */
+//    1500,                              /* Torque regulation current in mA. Range: 31.25mA to 4000mA. */
+//    L6474_OCD_TH_1875mA,               /* 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_2,               /* 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). */
+//};
 
 Serial pc(USBTX, USBRX);
 
@@ -117,7 +117,7 @@
 
 unsigned int speed1;
 unsigned int speed2;
-//unsigned int speed3;
+unsigned int speed3;
 
 //unsigned int pos3;
 
@@ -125,7 +125,7 @@
 /* Motor Control Component. */
 L6474 *motor1;
 L6474 *motor2;
-//L6474 *motor3;
+L6474 *motor3;
 
 
 /* Main ----------------------------------------------------------------------*/
@@ -140,16 +140,16 @@
     /* Initializing Motor Control Components. */
     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);
+    motor3 = new L6474(D2, D8, D5, D6, D10, dev_spi);
     if (motor1->init() != COMPONENT_OK) {
         exit(EXIT_FAILURE);
     }
     if (motor2->init() != COMPONENT_OK) {
         exit(EXIT_FAILURE);
     }
-    //    if (motor3->init() != COMPONENT_OK) {
-    //    exit(EXIT_FAILURE);
-   // }
+    if (motor3->init() != COMPONENT_OK) {
+        exit(EXIT_FAILURE);
+    }
 
  
 
@@ -167,6 +167,9 @@
 //motor1->set_parameter(L6474_STEP_MODE,L6474_STEP_SEL_1_2);
 //motor2->set_parameter(L6474_STEP_MODE,L6474_STEP_SEL_1_2);
 
+
+
+ 
     while(true) {
         u = eixo_X.read();
         w = eixo_Y.read();
@@ -174,12 +177,19 @@
   //      wait (1.5);
   //      pc.printf ("X:   %f \r\n",u);
   //      pc.printf ("Y:    %f  \r\n",w);
+  
+        motor3->run(StepperMotor::FWD);
+       // motor3->move(StepperMotor::BWD, 100);
+        //motor3->wait_while_active();
+        
+ //    pc.printf ("bwd");
 
- 
   
         if (u>0.740) {
 
            motor1->run(StepperMotor::FWD);
+           //wait_ms(DELAY_1);
+
            speed1 = motor1->get_speed();
            
             printf("speed1 =%d \r\n\n", speed1);
@@ -189,6 +199,8 @@
             else{ if(u<0.65) {
                 
                 motor1->run(StepperMotor::BWD);
+             //   wait_ms(DELAY_1);
+
                 speed1 = motor1->get_speed();
                 
                 printf("speed1 =%d \r\n\n", speed1);
@@ -198,6 +210,8 @@
                 }
                else 
                motor1->hard_stop();
+             //  wait_ms(DELAY_1);
+
                 speed1 = 0;
                printf("speed1 =%d \r\n\n", speed1);