Set one pin HIGH and the other LOW to control motor direction.
Use two pins connected to the H-Bridge inputs for each motor.
Examples
This makes the motor spin forward.
Arduino
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
This makes the motor spin backward.
Arduino
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
This stops the motor by cutting power.
Arduino
digitalWrite(2, LOW);
digitalWrite(3, LOW);
Sample Program
This program makes the motor spin forward for 2 seconds, stop for 1 second, spin backward for 2 seconds, then stop again. It repeats this cycle.
Arduino
#define motorPin1 2#define motorPin2 3
void setup() {
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
}
void loop() {
// Spin motor forward
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
delay(2000); // run for2 seconds
// Stop motor
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
delay(1000); // stop for1 second
// Spin motor backward
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
delay(2000); // run for2 seconds
// Stop motor
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
delay(1000); // stop for1 second
}
OutputSuccess
Important Notes
Always connect the H-Bridge power and ground correctly to avoid damage.
Use delays to see the motor direction changes clearly.
Make sure your motor power supply matches the motor's voltage rating.
Summary
Use two digital pins to control motor direction with an H-Bridge.
Set one pin HIGH and the other LOW to spin forward or backward.
Set both pins LOW to stop the motor.
Practice
(1/5)
1. Which of the following correctly describes how to make a motor spin forward using an H-Bridge (L293D/L298N) with two Arduino pins pinA and pinB?
easy
A. Set both pinA and pinB HIGH
B. Set pinA LOW and pinB HIGH
C. Set both pinA and pinB LOW
D. Set pinA HIGH and pinB LOW
Solution
Step 1: Understand motor direction control
To spin the motor forward, one pin must be HIGH and the other LOW to create current flow in one direction.
Step 2: Apply pin states for forward spin
Setting pinA HIGH and pinB LOW makes the motor spin forward.
Final Answer:
Set pinA HIGH and pinB LOW -> Option D
Quick Check:
Forward spin = pinA HIGH, pinB LOW [OK]
Hint: Forward spin means one pin HIGH, other LOW [OK]
Common Mistakes:
Setting both pins HIGH or LOW thinking motor spins
Confusing which pin should be HIGH for forward
Assuming both pins LOW spins motor forward
2. Which Arduino code snippet correctly sets pin1 HIGH and pin2 LOW to spin a motor forward using an H-Bridge?
easy
A. digitalWrite(pin1, LOW); digitalWrite(pin2, HIGH);
B. digitalWrite(pin1, HIGH); digitalWrite(pin2, LOW);
C. digitalWrite(pin1, HIGH); digitalWrite(pin2, HIGH);
D. digitalWrite(pin1, LOW); digitalWrite(pin2, LOW);
Solution
Step 1: Recall correct pin states for forward
Forward spin requires first pin HIGH and second pin LOW.
Step 2: Match code to pin states
Code in digitalWrite(pin1, HIGH); digitalWrite(pin2, LOW); sets pin1 HIGH and pin2 LOW correctly.
Final Answer:
digitalWrite(pin1, HIGH); digitalWrite(pin2, LOW); -> Option B
Quick Check:
Pin1 HIGH, Pin2 LOW = forward spin [OK]
Hint: HIGH then LOW means forward spin [OK]
Common Mistakes:
Swapping HIGH and LOW values
Setting both pins HIGH or LOW
Using analogWrite instead of digitalWrite
3. What will be the motor behavior when the following Arduino code runs?
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
medium
A. Motor spins backward
B. Motor spins forward
C. Motor stops
D. Motor speed changes but direction stays same
Solution
Step 1: Identify pin states and their meaning
Pin 3 is LOW and pin 4 is HIGH, which reverses the current flow compared to forward spin.
Step 2: Determine motor direction
This pin combination makes the motor spin backward.
Final Answer:
Motor spins backward -> Option A
Quick Check:
LOW then HIGH = backward spin [OK]
Hint: LOW then HIGH means backward spin [OK]
Common Mistakes:
Assuming LOW then HIGH is forward spin
Thinking motor stops when pins differ
Confusing speed control with direction
4. The following code is intended to stop the motor, but it does not. What is the error?
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
medium
A. Pins must be set to LOW and HIGH to stop
B. Pins should be set to INPUT to stop motor
C. Both pins HIGH causes motor to brake, not stop
D. digitalWrite cannot be used to stop motor
Solution
Step 1: Understand stopping motor with H-Bridge
To stop the motor, both pins should be LOW to cut power and stop current flow.
Step 2: Analyze given pin states
Both pins are set HIGH, which causes the motor to brake but not coast to a stop.
Final Answer:
Both pins HIGH causes motor to brake, not stop -> Option C
Quick Check:
Stop motor = both pins LOW, not HIGH [OK]
Hint: Stop motor by setting both pins LOW [OK]
Common Mistakes:
Setting both pins HIGH thinking motor stops
Using INPUT mode instead of LOW
Confusing brake with stop
5. You want to write Arduino code to spin a motor forward for 3 seconds, then stop for 2 seconds, then spin backward for 3 seconds using pins 7 and 8 with an L298N. Which code snippet correctly implements this?