Build the following circuit:

Enter the following code:
// Pins for motor A
const int a_pwm_pin = 9;
const int a_dir1_pin = 8;
const int a_dir2_pin = 7;
// Pins for motor B
const int b_pwm_pin = 10;
const int b_dir1_pin = 11;
const int b_dir2_pin = 12;
void setup() {
// Set up pins for motor A
pinMode(a_pwm_pin, OUTPUT);
pinMode(a_dir1_pin, OUTPUT);
pinMode(a_dir2_pin, OUTPUT);
// Set up pins for motor B
pinMode(b_pwm_pin, OUTPUT);
pinMode(b_dir1_pin, OUTPUT);
pinMode(b_dir2_pin, OUTPUT);
}
void loop() {
// Forward at full speed
forward(255);
delay(1000);
// Turn left at half speed
left(127);
delay(1000);
// Turn right at half speed
right(127);
delay(1000);
// Backward at half speed
backward(127);
delay(1000);
// Stop
stop();
delay(1000);
}
// Drive forward
void forward(int speed) {
// Check to make sure speed is 0-255
if ( speed < 0 ) {
speed = 0;
}
if ( speed > 255 ) {
speed = 255;
}
// Motor A forward
digitalWrite(a_dir1_pin, HIGH);
digitalWrite(a_dir2_pin, LOW);
analogWrite(a_pwm_pin, speed);
// Motor B forward
digitalWrite(b_dir1_pin, HIGH);
digitalWrite(b_dir2_pin, LOW);
analogWrite(b_pwm_pin, speed);
}
// Drive backward
void backward(int speed) {
// Check to make sure speed is 0-255
if ( speed < 0 ) {
speed = 0;
}
if ( speed > 255 ) {
speed = 255;
}
// Motor A backward
digitalWrite(a_dir1_pin, LOW);
digitalWrite(a_dir2_pin, HIGH);
analogWrite(a_pwm_pin, speed);
// Motor B backward
digitalWrite(b_dir1_pin, LOW);
digitalWrite(b_dir2_pin, HIGH);
analogWrite(b_pwm_pin, speed);
}
// Turn left
void left(int speed) {
// Check to make sure speed is 0-255
if ( speed < 0 ) {
speed = 0;
}
if ( speed > 255 ) {
speed = 255;
}
// Motor A backward
digitalWrite(a_dir1_pin, LOW);
digitalWrite(a_dir2_pin, HIGH);
analogWrite(a_pwm_pin, speed);
// Motor B forward
digitalWrite(b_dir1_pin, HIGH);
digitalWrite(b_dir2_pin, LOW);
analogWrite(b_pwm_pin, speed);
}
// Turn right
void right(int speed) {
// Check to make sure speed is 0-255
if ( speed < 0 ) {
speed = 0;
}
if ( speed > 255 ) {
speed = 255;
}
// Motor A forward
digitalWrite(a_dir1_pin, HIGH);
digitalWrite(a_dir2_pin, LOW);
analogWrite(a_pwm_pin, speed);
// Motor B backward
digitalWrite(b_dir1_pin, LOW);
digitalWrite(b_dir2_pin, HIGH);
analogWrite(b_pwm_pin, speed);
}
// Stop
void stop() {
// Motor A brake
digitalWrite(a_dir1_pin, LOW);
digitalWrite(a_dir2_pin, LOW);
analogWrite(a_pwm_pin, 0);
// Motor B brake
digitalWrite(b_dir1_pin, LOW);
digitalWrite(b_dir2_pin, LOW);
analogWrite(b_pwm_pin, 0);
}
Simulator: https://tinkercad.com/things/kJtlyO8cpln