Simple program featuring a few API functions usage of the X_NUCLEO_IHM04A1 library.

Dependencies:   X_NUCLEO_IHM04A1 mbed

Dependents:   SimplePIDBot

Fork of HelloWorld_IHM04A1 by ST Expansion SW Team

This application provides a simple example of usage of the X-NUCLEO-IHM04A1 Brush DC Motor Control Expansion Board.

It shows how to use four unidirectional brush DC motors connected to the board by running the four motor in parallel. At the beginning, no motor is running. Each time the user presses the user button, a new brush DC motor is activated. Motors run during one second, stop during one second and run again.

  • motor 1 runs at 20% of maximum speed.
  • motor 2 runs at 30% of maximum speed.
  • motor 3 runs at 40% of maximum speed.
  • motor 4 runs at 50% of maximum speed.

For the hardware configuration of the expansion board, please refer to the X_NUCLEO_IHM04A1 library web page.

Files at this revision

API Documentation at this revision

Comitter:
brdirais
Date:
Tue May 17 09:45:43 2016 +0000
Parent:
0:dcc35ef6effc
Child:
2:f0f8e652ec34
Commit message:
- Update of comment in source code.

Changed in this revision

X-NUCLEO-IHM04A1.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- a/X-NUCLEO-IHM04A1.lib	Tue May 03 11:46:15 2016 +0000
+++ b/X-NUCLEO-IHM04A1.lib	Tue May 17 09:45:43 2016 +0000
@@ -1,1 +1,1 @@
-https://developer.mbed.org/teams/ST-Expansion-SW-Team/code/X-NUCLEO-IHM04A1/#2cb6ce8e07bd
+https://developer.mbed.org/teams/ST-Expansion-SW-Team/code/X-NUCLEO-IHM04A1/#2597a6165252
--- a/main.cpp	Tue May 03 11:46:15 2016 +0000
+++ b/main.cpp	Tue May 17 09:45:43 2016 +0000
@@ -3,13 +3,13 @@
   * @file    Multi/Examples/MotionControl/IHM04A1_ExampleFor4UniDirMotors/Src/main.c 
   * @author  IPC Rennes
   * @version V1.0.0
-  * @date    January 06, 2015
+  * @date    May 16, 2016
   * @brief   This example shows how to use 1 IHM04A1 expansion board with 
   * 4 unidirectionnal Brush DC motors.
   * Each motor has one lead connected to one of the bridge output, 
   * the other lead to the ground. The input bridges are not parallelised.
   * The demo sequence starts when the user button is pressed.
-  * Each time, the user button is pressed, the demo step is changed
+  * Each time, the user button is pressed, one new motor is activated
   ******************************************************************************
   * @attention
   *
@@ -188,17 +188,17 @@
     motor->AttachErrorHandler(Error_Handler);
 
     /* Printing to the console. */
-    printf("Motor Control Application Example for 1 Motor\r\n\n");
+    printf("Motor Control Application Example for 4 Motor\r\n\n");
 
 
     /* Select the configuration with no bridge paralleling, two unidirectionnal motors on bridge A 
        and two unidirectionnal motors on bridge B */
     motor->SetDualFullBridgeConfig(PARALLELING_NONE___2_UNDIR_MOTOR_BRIDGE_A__2_UNDIR_MOTOR_BRIDGE_B);
  
-    /* Set PWM Frequency of bridge A inputs to 10000 Hz */ 
+    /* Set PWM Frequency of bridge A inputs to 1000 Hz */ 
     motor->SetBridgeInputPwmFreq(0,1000);
   
-    /* Set PWM Frequency of bridge B inputs to 25000 Hz */ 
+    /* Set PWM Frequency of bridge B inputs to 2000 Hz */ 
     motor->SetBridgeInputPwmFreq(1,2000);
   
     // Attach button_pressed function to Irq
@@ -210,7 +210,8 @@
 
         if (gStep > 0)
         {
-            /* Set speed of motor 0 to 20 % */
+            printf("Run motor 0 at 20%% of the maximum speed\n");
+            /* Set speed of motor 0 to 20% */
             motor->SetMaxSpeed(0,20);
             /* start motor 0 */
             motor->Run(0, FORWARD);
@@ -218,6 +219,7 @@
 
         if (gStep > 1)
         {
+            printf("Run motor 1 at 30%% of the maximum speed\n");
             /* Set speed of motor 1 to 30 % */
             motor->SetMaxSpeed(1,30);
             /* start motor 1 */
@@ -226,6 +228,7 @@
 
         if (gStep > 2)
         {
+            printf("Run motor 2 at 40%% of the maximum speed\n");
             /* Set speed of motor 2 to 40 % */
             motor->SetMaxSpeed(2,40);
             /* start motor 2 */
@@ -234,6 +237,7 @@
 
         if (gStep > 3)
         {
+            printf("Run motor 3 at 50%% of the maximum speed\n");
             /* Set speed of motor 3 to 50 % */
             motor->SetMaxSpeed(3,50);
             /* start motor 3 */
--- a/mbed.bld	Tue May 03 11:46:15 2016 +0000
+++ b/mbed.bld	Tue May 17 09:45:43 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/082adc85693f
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/7c328cabac7e
\ No newline at end of file