Bird
Raised Fist0
Arduinoprogramming~10 mins

Motor direction with H-Bridge (L293D/L298N) in Arduino - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Motor direction with H-Bridge (L293D/L298N)
Set pin modes
↓
Write HIGH/LOW to pins
↓
Motor spins forward
↓
Delay
↓
Write reversed HIGH/LOW
↓
Motor spins backward
↓
Delay
↓
Repeat or stop
The program sets motor control pins, then writes signals to spin the motor forward or backward by controlling the H-Bridge inputs.
Execution Sample
Arduino
const int motorPin1 = 3;
const int motorPin2 = 4;

void setup() {
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
}

void loop() {
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  delay(2000);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  delay(2000);
}
This code spins the motor forward for 2 seconds, then backward for 2 seconds repeatedly.
Execution Table
StepActionmotorPin1motorPin2Motor DirectionDelay (ms)
1Set motorPin1 HIGH, motorPin2 LOWHIGHLOWForward2000
2Wait for 2000 msHIGHLOWForward2000
3Set motorPin1 LOW, motorPin2 HIGHLOWHIGHBackward2000
4Wait for 2000 msLOWHIGHBackward2000
5Loop repeats from step 1HIGHLOWForward2000
💡 Loop runs indefinitely, alternating motor direction every 2 seconds.
Variable Tracker
VariableStartAfter Step 1After Step 3After Step 5 (Loop)
motorPin1LOW (default)HIGHLOWHIGH
motorPin2LOW (default)LOWHIGHLOW
Motor DirectionStoppedForwardBackwardForward
Key Moments - 3 Insights
Why does setting motorPin1 HIGH and motorPin2 LOW make the motor spin forward?
Because the H-Bridge uses these pin signals to control current flow direction through the motor, making it spin forward as shown in execution_table step 1.
What happens if both motorPin1 and motorPin2 are set HIGH or LOW at the same time?
The motor will stop or brake because no voltage difference is applied; this is not shown in the current execution but is important to avoid damage.
Why do we use delay after setting the pins?
Delay keeps the motor spinning in one direction for a set time before changing direction, as seen in execution_table steps 2 and 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the state of motorPin2 at step 3?
ALOW
BHIGH
CINPUT
DNot set
💡 Hint
Check the 'motorPin2' column in execution_table row for step 3.
At which step does the motor spin backward?
AStep 1
BStep 2
CStep 3
DStep 5
💡 Hint
Look at the 'Motor Direction' column in execution_table.
If delay(2000) is changed to delay(1000), how does the execution_table change?
ADelay column values become 1000 instead of 2000
BMotor direction changes to stop
CPin states change to LOW
DNo change
💡 Hint
Focus on the 'Delay (ms)' column in execution_table.
Concept Snapshot
Motor direction with H-Bridge:
- Use two pins to control motor direction
- Set one pin HIGH, other LOW for forward
- Reverse pins for backward
- Use delay to keep motor spinning
- Loop to alternate direction
Full Transcript
This example shows how to control a motor's direction using an H-Bridge like L293D or L298N with Arduino. We set two pins as outputs. Writing HIGH to one pin and LOW to the other makes the motor spin forward. Reversing these signals makes it spin backward. Delays keep the motor spinning in each direction for 2 seconds. The loop repeats this forever. The execution table tracks pin states and motor direction step-by-step. Key points include how pin signals control current flow and why delays are needed. The quiz checks understanding of pin states and timing.

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

  1. 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.
  2. Step 2: Apply pin states for forward spin

    Setting pinA HIGH and pinB LOW makes the motor spin forward.
  3. Final Answer:

    Set pinA HIGH and pinB LOW -> Option D
  4. 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

  1. Step 1: Recall correct pin states for forward

    Forward spin requires first pin HIGH and second pin LOW.
  2. Step 2: Match code to pin states

    Code in digitalWrite(pin1, HIGH); digitalWrite(pin2, LOW); sets pin1 HIGH and pin2 LOW correctly.
  3. Final Answer:

    digitalWrite(pin1, HIGH); digitalWrite(pin2, LOW); -> Option B
  4. 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

  1. 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.
  2. Step 2: Determine motor direction

    This pin combination makes the motor spin backward.
  3. Final Answer:

    Motor spins backward -> Option A
  4. 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

  1. Step 1: Understand stopping motor with H-Bridge

    To stop the motor, both pins should be LOW to cut power and stop current flow.
  2. Step 2: Analyze given pin states

    Both pins are set HIGH, which causes the motor to brake but not coast to a stop.
  3. Final Answer:

    Both pins HIGH causes motor to brake, not stop -> Option C
  4. 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?
hard
A. digitalWrite(7, HIGH); digitalWrite(8, LOW); delay(3000); digitalWrite(7, LOW); digitalWrite(8, LOW); delay(2000); digitalWrite(7, LOW); digitalWrite(8, HIGH); delay(3000);
B. digitalWrite(7, LOW); digitalWrite(8, HIGH); delay(3000); digitalWrite(7, LOW); digitalWrite(8, LOW); delay(2000); digitalWrite(7, HIGH); digitalWrite(8, LOW); delay(3000);
C. digitalWrite(7, HIGH); digitalWrite(8, HIGH); delay(3000); digitalWrite(7, LOW); digitalWrite(8, LOW); delay(2000); digitalWrite(7, LOW); digitalWrite(8, LOW); delay(3000);
D. digitalWrite(7, LOW); digitalWrite(8, LOW); delay(3000); digitalWrite(7, HIGH); digitalWrite(8, LOW); delay(2000); digitalWrite(7, LOW); digitalWrite(8, HIGH); delay(3000);

Solution

  1. Step 1: Set pins for forward spin and delay

    Forward spin requires pin 7 HIGH and pin 8 LOW, then delay 3000 ms (3 seconds).
  2. Step 2: Stop motor by setting both pins LOW and delay

    Both pins LOW stops motor, delay 2000 ms (2 seconds).
  3. Step 3: Set pins for backward spin and delay

    Backward spin requires pin 7 LOW and pin 8 HIGH, delay 3000 ms.
  4. Final Answer:

    digitalWrite(7, HIGH); digitalWrite(8, LOW); delay(3000); digitalWrite(7, LOW); digitalWrite(8, LOW); delay(2000); digitalWrite(7, LOW); digitalWrite(8, HIGH); delay(3000); -> Option A
  5. Quick Check:

    Forward, stop, backward with correct pins and delays [OK]
Hint: Forward=HIGH-LOW, Stop=LOW-LOW, Backward=LOW-HIGH [OK]
Common Mistakes:
  • Swapping forward and backward pin states
  • Not stopping motor between directions
  • Using HIGH-HIGH which brakes but doesn't stop
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard