An 'H' bridge motor controller enables the Arduino to control the speed and direction of two DC motors or one stepper motor
The enable pins(7 & 12) can be either tied high for full speed all the time, or driven with a pulse-width modulation signal ( analogWrite(10,0-255) to adjust the speed.
// Left motor pins
#define ENA 5 // ENA speed pin for left motor
#define IN1 8 // IN1 on Motor controller board
#define IN2 9 // IN2
// Right motor pins
#define ENB 6 // ENB speed pin for right motor
#define IN3 10 // IN3 on Motor controller board
#define IN4 11 // IN4
int rightspeed = 200;
int leftspeed = 200;
void setup() {
// put your setup code here, to run once:
pinMode(ENA, OUTPUT); //Pins 3 and 11 are the PWM pins that control speed
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN3, OUTPUT); //sets up left motor
pinMode(IN4, OUTPUT);
analogWrite(ENA, leftspeed); //set speed to mid
analogWrite(ENB, rightspeed); //set speed to mid
}
void loop() {
forward();
delay(1000);
halt();
delay(1000);
}
void forward() {
analogWrite(ENA, leftspeed); //set speed to mid
digitalWrite(IN1, HIGH);//left motor forward
digitalWrite(IN2, LOW); //right motor forward
analogWrite(ENB, rightspeed); //set speed to mid
digitalWrite(IN3, HIGH);//left motor forward
digitalWrite(IN4, LOW); //right motor forward
}
void halt() {
analogWrite(ENA, leftspeed); //set speed to mid
digitalWrite(IN1, HIGH);//left motor forward
digitalWrite(IN2, HIGH); //right motor forward
analogWrite(ENB, rightspeed); //set speed to mid
digitalWrite(IN3, HIGH);//left motor forward
digitalWrite(IN4, HIGH); //right motor forward
}