This guide is not intended to be a tutorial on how to setup the Hercules Motor Controller (HMC) and install its library. If you need help with that, please visit the following link: CLICK HERE (^_^)
First, we will need to include the Hercules Motor Controller library so we can use its functions to control the DC motors connected to the HMC, please add
#include <Hercules.h>
to the top of your source code like in the picture below:To control the motors, we will be using a function called 'MOTOR' followed by an action:
To Initialize the DC Motors, we write:
MOTOR.begin();
To run them:
MOTOR.setRun1();
MOTOR.setRun2();
where setRun1 will run the motor(s) connected to the terminal M1 and setRun2 will run the motor(s) connected to the terminal M2
To stop them:
MOTOR.setStop1();
MOTOR.setStop2();
where setStop1 will stop the motor(s) connected to the terminal M1 and setStop2 will stop the motor(s) connected to the terminal M2
To set the speed of the motors:
MOTOR.setSpeed1(int ispeed);
MOTOR.setSpeed2(int ispeed);
where setSpeed1 will set the speed of the motor(s) connected to the terminal M1 and setSpeed2 will set the speed of the motor(s) connected to the terminal M2.
int ispeed is the PWM speed, it ranges from 0 to 100%
For example: we want to set the speed of M1 at 20% PWM, we will write:
MOTOR.setSpeed1(20);
To set the direction of the motors:
MOTOR.setDir1(unsigned char dir);
MOTOR.setDir2(unsigned char dir);
where setDir1 will set the direction of the motor(s) connected to the terminal M1 and setDir2 will set the direction of the motor(s) connected to the terminal M2.
with DIRF for going forward
and DIRR for going in reverse
MOTOR.setDir1(DIRF);
To set both the direction and speed of motors in one syntax line:
MOTOR.setSpeedDir(int ispeed, unsigned char dir);
MOTOR.setSpeedDir1(int ispeed, unsigned char dir);
MOTOR.setSpeedDir2(int ispeed, unsigned char dir);
where setSpeedDir will set the same speed and direction for the motor(s) connected to both M1 and M2. While setSpeedDir1 will set the speed and direction only for the motor(s) connected to M1, and setSpeedDir2 will set the speed and direction only for the motor(s) connected to M2.
For example: we want to set the speed of M1 at 20% PWM and have it go forward, we will write:
MOTOR.setSpeedDir1(20, DIRF);
That's it. This is all you need to know in order to control DC motors using the Hercules Motor Controller board and its library.