We use a transistor to control a DC motor because the motor needs more power than the Arduino can provide directly. The transistor acts like a switch that turns the motor on and off safely.
DC motor with transistor driver in Arduino
int motorPin = 9; // Arduino pin connected to transistor base void setup() { pinMode(motorPin, OUTPUT); // Set pin as output } void loop() { digitalWrite(motorPin, HIGH); // Turn motor ON delay(1000); // Wait 1 second digitalWrite(motorPin, LOW); // Turn motor OFF delay(1000); // Wait 1 second }
The transistor base is connected to an Arduino digital pin through a resistor.
Use a diode across the motor terminals to protect from voltage spikes.
digitalWrite(motorPin, HIGH); // Motor ON digitalWrite(motorPin, LOW); // Motor OFF
analogWrite(motorPin, 128); // Motor runs at half speed (PWM)pinMode(motorPin, OUTPUT); // Set pin as output before controlling motorThis program turns the motor on for 2 seconds, then off for 2 seconds, repeatedly. The transistor acts as a switch controlled by the Arduino pin.
int motorPin = 9; // Pin connected to transistor base void setup() { pinMode(motorPin, OUTPUT); // Set motorPin as output } void loop() { digitalWrite(motorPin, HIGH); // Turn motor ON delay(2000); // Run motor for 2 seconds digitalWrite(motorPin, LOW); // Turn motor OFF delay(2000); // Wait for 2 seconds }
Always connect a diode (called a flyback diode) across the motor terminals to protect the transistor from voltage spikes.
Use a resistor (around 1k ohm) between Arduino pin and transistor base to limit current.
Make sure your transistor can handle the motor's current.
A transistor lets Arduino safely control a DC motor by acting as a switch.
Use digitalWrite to turn the motor on or off through the transistor.
Protect your circuit with a diode and resistor for safe operation.
Practice
Solution
Step 1: Understand transistor function
A transistor acts like a switch or amplifier in circuits.Step 2: Apply to motor control
In Arduino motor control, the transistor switches the motor on/off safely without damaging the board.Final Answer:
To act as a switch that controls the motor safely -> Option AQuick Check:
Transistor = switch for motor control [OK]
- Confusing transistor with motor speed controller
- Thinking transistor powers the Arduino
- Assuming transistor measures anything
Solution
Step 1: Set pin as output for controlling transistor
To control a transistor, the Arduino pin must be OUTPUT.Step 2: Write HIGH to turn motor on
digitalWrite(9, HIGH) sends voltage to transistor base to switch motor on.Final Answer:
pinMode(9, OUTPUT); digitalWrite(9, HIGH); -> Option DQuick Check:
Output pin + HIGH = motor ON [OK]
- Setting pin as INPUT when controlling transistor
- Using digitalRead instead of digitalWrite
- Not setting pinMode before writing
int motorPin = 9;
void setup() {
pinMode(motorPin, OUTPUT);
}
void loop() {
analogWrite(motorPin, 128);
delay(2000);
analogWrite(motorPin, 0);
delay(2000);
}Solution
Step 1: Understand analogWrite value
analogWrite with 128 sets PWM to about 50% duty cycle, so motor runs at half speed.Step 2: Analyze timing in loop
Motor runs at half speed for 2 seconds, then analogWrite(0) stops motor for 2 seconds, repeating.Final Answer:
Motor runs at half speed for 2 seconds, then stops for 2 seconds repeatedly -> Option AQuick Check:
analogWrite(128) = half speed [OK]
- Thinking analogWrite(128) is full speed
- Confusing analogWrite with digitalWrite
- Ignoring delay timing effects
int motorPin = 9;
void setup() {
pinMode(motorPin, INPUT);
}
void loop() {
digitalWrite(motorPin, HIGH);
}Solution
Step 1: Check pinMode for transistor control
Pin controlling transistor must be OUTPUT, not INPUT.Step 2: Identify conflict with digitalWrite
digitalWrite on an INPUT pin causes undefined behavior or no effect.Final Answer:
Pin is set as INPUT but digitalWrite is used -> Option BQuick Check:
OUTPUT needed for digitalWrite [OK]
- Using INPUT mode with digitalWrite
- Confusing digitalWrite with digitalRead
- Ignoring pinMode setup
Solution
Step 1: Understand motor voltage spikes
When motor stops suddenly, it can create voltage spikes that damage components.Step 2: Identify protection method
A diode placed across motor terminals (flyback diode) safely redirects spikes, protecting transistor and Arduino.Final Answer:
A diode connected across the motor terminals -> Option CQuick Check:
Flyback diode protects circuit from spikes [OK]
- Skipping diode and risking transistor damage
- Using resistor instead of diode for spike protection
- Confusing capacitor or LED as spike protection
Ready to prove it?
Pass the test and this pattern moves unknown
