Bird
Raised Fist0
Arduinoprogramming~10 mins

DC motor with transistor driver in Arduino - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - DC motor with transistor driver
Start
↓
Set pinMode for transistor control pin
↓
Loop start
↓
Write HIGH to transistor pin -> Motor ON
↓
Delay for motor run time
↓
Write LOW to transistor pin -> Motor OFF
↓
Delay for motor stop time
↩Back to Loop start
The program sets a pin to control the transistor, then repeatedly turns the motor on and off with delays.
Execution Sample
Arduino
int motorPin = 9;

void setup() {
  pinMode(motorPin, OUTPUT);
}

void loop() {
  digitalWrite(motorPin, HIGH); // Motor ON
  delay(1000);                  // Run 1 sec
  digitalWrite(motorPin, LOW);  // Motor OFF
  delay(1000);                  // Stop 1 sec
}
This code turns a DC motor on for 1 second, then off for 1 second, repeatedly using a transistor driver.
Execution Table
StepActionPin StateMotor StateDelay(ms)
1Setup: pinMode(motorPin, OUTPUT)LOW (default)OFF0
2Loop start: digitalWrite(motorPin, HIGH)HIGHON0
3Delay(1000)HIGHON1000
4digitalWrite(motorPin, LOW)LOWOFF0
5Delay(1000)LOWOFF1000
6Loop repeats from step 2LOWOFF0
💡 Loop runs forever; motor toggles ON and OFF every 1 second.
Variable Tracker
VariableStartAfter Step 2After Step 4After Step 6 (Loop)
motorPin9999
Pin StateLOWHIGHLOWHIGH (next loop)
Motor StateOFFONOFFON (next loop)
Key Moments - 3 Insights
Why do we set pinMode to OUTPUT in setup()?
Because in execution_table step 1, setting pinMode to OUTPUT allows the Arduino to control the transistor pin voltage to turn the motor ON or OFF.
What happens if we skip digitalWrite(motorPin, LOW)?
As shown in execution_table step 4, without setting LOW, the motor would stay ON continuously, not turning OFF between cycles.
Why do we use delay(1000) after turning motor ON and OFF?
Delays in steps 3 and 5 keep the motor running or stopped for 1 second each, making the ON/OFF visible and controlled.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the motor state at step 3?
AOFF
BON
CStarting
DUndefined
💡 Hint
Check the 'Motor State' column at step 3 in the execution_table.
At which step does the transistor pin go LOW to turn the motor OFF?
AStep 4
BStep 2
CStep 3
DStep 5
💡 Hint
Look for 'digitalWrite(motorPin, LOW)' in the Action column of execution_table.
If delay(1000) after turning motor ON is changed to delay(2000), what changes in the execution_table?
AMotor State changes to OFF at step 3
BPin State changes to LOW at step 3
CDelay at step 3 changes to 2000 ms
DNo change in delay values
💡 Hint
Check the Delay(ms) column at step 3 and imagine increasing the delay time.
Concept Snapshot
Arduino controls a DC motor via a transistor by setting a digital pin HIGH or LOW.
Use pinMode(pin, OUTPUT) in setup to prepare the pin.
Turn motor ON with digitalWrite(pin, HIGH), OFF with digitalWrite(pin, LOW).
Use delay(ms) to keep motor ON or OFF for visible time.
Loop repeats to toggle motor continuously.
Full Transcript
This example shows how an Arduino controls a DC motor using a transistor driver. First, the motor control pin is set as an OUTPUT in setup. Then, in the loop, the pin is set HIGH to turn the motor ON, followed by a delay of 1 second to keep it running. Next, the pin is set LOW to turn the motor OFF, followed by another 1 second delay. This cycle repeats forever, making the motor turn ON and OFF every second. The execution table tracks each step, showing pin states and motor states. Key points include setting pinMode to OUTPUT, using digitalWrite to control the transistor, and using delay to control timing.

Practice

(1/5)
1. What is the main role of a transistor when controlling a DC motor with an Arduino?
easy
A. To act as a switch that controls the motor safely
B. To increase the motor speed directly
C. To power the Arduino board
D. To measure the motor's temperature

Solution

  1. Step 1: Understand transistor function

    A transistor acts like a switch or amplifier in circuits.
  2. Step 2: Apply to motor control

    In Arduino motor control, the transistor switches the motor on/off safely without damaging the board.
  3. Final Answer:

    To act as a switch that controls the motor safely -> Option A
  4. Quick Check:

    Transistor = switch for motor control [OK]
Hint: Think of transistor as a safe on/off switch for the motor [OK]
Common Mistakes:
  • Confusing transistor with motor speed controller
  • Thinking transistor powers the Arduino
  • Assuming transistor measures anything
2. Which Arduino code snippet correctly sets a transistor pin to control a DC motor?
easy
A. pinMode(9, INPUT); digitalRead(9);
B. pinMode(9, INPUT); digitalWrite(9, HIGH);
C. pinMode(9, OUTPUT); digitalRead(9);
D. pinMode(9, OUTPUT); digitalWrite(9, HIGH);

Solution

  1. Step 1: Set pin as output for controlling transistor

    To control a transistor, the Arduino pin must be OUTPUT.
  2. Step 2: Write HIGH to turn motor on

    digitalWrite(9, HIGH) sends voltage to transistor base to switch motor on.
  3. Final Answer:

    pinMode(9, OUTPUT); digitalWrite(9, HIGH); -> Option D
  4. Quick Check:

    Output pin + HIGH = motor ON [OK]
Hint: Use OUTPUT mode and digitalWrite to control transistor [OK]
Common Mistakes:
  • Setting pin as INPUT when controlling transistor
  • Using digitalRead instead of digitalWrite
  • Not setting pinMode before writing
3. What will be the effect of this Arduino code controlling a transistor connected to a DC motor?
int motorPin = 9;
void setup() {
  pinMode(motorPin, OUTPUT);
}
void loop() {
  analogWrite(motorPin, 128);
  delay(2000);
  analogWrite(motorPin, 0);
  delay(2000);
}
medium
A. Motor runs at half speed for 2 seconds, then stops for 2 seconds repeatedly
B. Motor runs at full speed continuously
C. Motor never runs because analogWrite is wrong
D. Motor runs at full speed for 2 seconds, then stops for 2 seconds repeatedly

Solution

  1. Step 1: Understand analogWrite value

    analogWrite with 128 sets PWM to about 50% duty cycle, so motor runs at half speed.
  2. Step 2: Analyze timing in loop

    Motor runs at half speed for 2 seconds, then analogWrite(0) stops motor for 2 seconds, repeating.
  3. Final Answer:

    Motor runs at half speed for 2 seconds, then stops for 2 seconds repeatedly -> Option A
  4. Quick Check:

    analogWrite(128) = half speed [OK]
Hint: PWM 128 means half speed, 0 means stop [OK]
Common Mistakes:
  • Thinking analogWrite(128) is full speed
  • Confusing analogWrite with digitalWrite
  • Ignoring delay timing effects
4. Identify the error in this Arduino code controlling a transistor for a DC motor:
int motorPin = 9;
void setup() {
  pinMode(motorPin, INPUT);
}
void loop() {
  digitalWrite(motorPin, HIGH);
}
medium
A. Pin number 9 cannot be used for motor control
B. Pin is set as INPUT but digitalWrite is used
C. digitalWrite should be digitalRead
D. Missing delay in loop

Solution

  1. Step 1: Check pinMode for transistor control

    Pin controlling transistor must be OUTPUT, not INPUT.
  2. Step 2: Identify conflict with digitalWrite

    digitalWrite on an INPUT pin causes undefined behavior or no effect.
  3. Final Answer:

    Pin is set as INPUT but digitalWrite is used -> Option B
  4. Quick Check:

    OUTPUT needed for digitalWrite [OK]
Hint: Set pinMode to OUTPUT before digitalWrite [OK]
Common Mistakes:
  • Using INPUT mode with digitalWrite
  • Confusing digitalWrite with digitalRead
  • Ignoring pinMode setup
5. You want to control a DC motor speed using PWM on pin 9 with a transistor driver. Which additional component is essential to protect your circuit from voltage spikes caused by the motor?
hard
A. An LED connected in parallel with the transistor
B. A capacitor connected to the Arduino 5V pin
C. A diode connected across the motor terminals
D. A resistor in series with the motor

Solution

  1. Step 1: Understand motor voltage spikes

    When motor stops suddenly, it can create voltage spikes that damage components.
  2. Step 2: Identify protection method

    A diode placed across motor terminals (flyback diode) safely redirects spikes, protecting transistor and Arduino.
  3. Final Answer:

    A diode connected across the motor terminals -> Option C
  4. Quick Check:

    Flyback diode protects circuit from spikes [OK]
Hint: Always add diode across motor for spike protection [OK]
Common Mistakes:
  • Skipping diode and risking transistor damage
  • Using resistor instead of diode for spike protection
  • Confusing capacitor or LED as spike protection
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