The motor, motor driver and Arduino connections are as follows:
For powering the motors a 3-cell Li-po battery is used. Below is the Arduino code for driving the motor in forward and backward direction.
#define LEFT_MOTOR_IN1 7 #define LEFT_MOTOR_IN2 8 #define RIGHT_MOTOR_IN1 4 #define RIGHT_MOTOR_IN2 5 #define LEFT_MOTOR_EN 9 #define RIGHT_MOTOR_EN 6 void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(LEFT_MOTOR_IN1, OUTPUT); pinMode(LEFT_MOTOR_IN2, OUTPUT); pinMode(RIGHT_MOTOR_IN1, OUTPUT); pinMode(RIGHT_MOTOR_IN2, OUTPUT); pinMode(LEFT_MOTOR_EN, OUTPUT); pinMode(RIGHT_MOTOR_EN, OUTPUT); } void loop() { move_robot(100, 100); //move forward delay(5000); move_robot(100, -100); //turn right delay(1000); move_robot(100, 100); //move forward delay(5000); move_robot(-100, 100); //turn left delay(1000); move_robot(-100, -100); //move backword delay(5000); } void move_robot(int left_speed, int right_speed){ int left_motor_speed = abs(left_speed); int right_motor_speed = abs(right_speed); analogWrite(LEFT_MOTOR_EN, left_motor_speed); analogWrite(RIGHT_MOTOR_EN, right_motor_speed); if(left_speed>=0){ digitalWrite(LEFT_MOTOR_IN1, HIGH); digitalWrite(LEFT_MOTOR_IN2, LOW); } else if(left_speed<0){ digitalWrite(LEFT_MOTOR_IN1, LOW); digitalWrite(LEFT_MOTOR_IN2, HIGH); } if(right_speed>=0){ digitalWrite(RIGHT_MOTOR_IN1, HIGH); digitalWrite(RIGHT_MOTOR_IN2, LOW); } else if(right_speed<0){ digitalWrite(RIGHT_MOTOR_IN1, LOW); digitalWrite(RIGHT_MOTOR_IN2, HIGH); } }
A demo video: