Bird
Raised Fist0
Arduinoprogramming~20 mins

Stepper motor basics in Arduino - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Stepper Motor Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Stepper Motor Step Sequence Output
What will be the output on the serial monitor when this Arduino code runs?
Arduino
int step = 0;
void setup() {
  Serial.begin(9600);
}
void loop() {
  Serial.print("Step: ");
  Serial.println(step);
  step = (step + 1) % 4;
  delay(500);
}
AStep: 0\nStep: 1\nStep: 2\nStep: 3\nStep: 0\n...
BStep: 1\nStep: 2\nStep: 3\nStep: 4\nStep: 1\n...
CStep: 0\nStep: 2\nStep: 4\nStep: 6\nStep: 0\n...
DStep: 1\nStep: 3\nStep: 5\nStep: 7\nStep: 1\n...
Attempts:
2 left
💡 Hint
Look at how the step variable changes and resets using modulo.
🧠 Conceptual
intermediate
1:30remaining
Understanding Stepper Motor Coil Activation
In a 4-step sequence for a unipolar stepper motor, which coil activation pattern correctly represents the sequence?
AB+, A+, B-, A-
BA+, B+, A-, B-
CA+, B-, A-, B+
DA+, A-, B+, B-
Attempts:
2 left
💡 Hint
Think about the order coils are energized to rotate the motor smoothly.
🔧 Debug
advanced
2:30remaining
Identify the Error in Stepper Motor Wiring Code
What error will this Arduino code cause when controlling a stepper motor?
Arduino
int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;

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

void loop() {
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, HIGH);
  delay(1000);
}
AThe motor will rotate backwards continuously.
BThe code will not compile due to missing semicolons.
CThe motor coils are all energized at once, causing no rotation and possible overheating.
DThe Arduino will reset due to pin conflict.
Attempts:
2 left
💡 Hint
Consider what happens if all coils are powered simultaneously.
📝 Syntax
advanced
1:30remaining
Find the Syntax Error in Stepper Motor Control Code
Which option contains the correct syntax to set pin 8 HIGH and pin 9 LOW in Arduino?
A
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
B
digitalWrite(8 HIGH);
digitalWrite(9 LOW);
C
digitalWrite(8, HIGH)
digitalWrite(9, LOW);
D
digitalWrite(8, HIGH);
digitalWrite(9, LOW)
Attempts:
2 left
💡 Hint
Check for missing commas, semicolons, and parentheses.
🚀 Application
expert
2:00remaining
Calculate Steps for Desired Rotation Angle
A stepper motor has 200 steps per full revolution (360 degrees). How many steps are needed to rotate the motor shaft by 90 degrees?
A90
B45
C100
D50
Attempts:
2 left
💡 Hint
Calculate steps by proportion: (desired angle / 360) * total steps.

Practice

(1/5)
1. What is the main advantage of using a stepper motor in Arduino projects?
easy
A. It moves in precise, small steps for accurate positioning.
B. It runs faster than all other motors.
C. It uses less power than a servo motor.
D. It requires no programming to control.

Solution

  1. Step 1: Understand stepper motor movement

    Stepper motors move in small, fixed steps, allowing precise control of position.
  2. Step 2: Compare with other motors

    Unlike regular motors, stepper motors do not rotate freely but in exact increments.
  3. Final Answer:

    It moves in precise, small steps for accurate positioning. -> Option A
  4. Quick Check:

    Stepper motor precision = Accurate small steps [OK]
Hint: Stepper motors move in fixed steps for precision [OK]
Common Mistakes:
  • Thinking stepper motors run faster than all motors
  • Assuming no programming is needed
  • Confusing power usage with motor type
2. Which of the following is the correct way to create a Stepper object in Arduino code?
easy
A. Stepper myStepper = new Stepper(pin1, pin2, pin3, pin4);
B. Stepper myStepper = Stepper(stepsPerRevolution, pin1, pin2);
C. Stepper myStepper(stepsPerRevolution);
D. Stepper myStepper(stepsPerRevolution, pin1, pin2, pin3, pin4);

Solution

  1. Step 1: Recall Stepper constructor syntax

    The Stepper library requires the number of steps per revolution and four control pins.
  2. Step 2: Match syntax with options

    Stepper myStepper(stepsPerRevolution, pin1, pin2, pin3, pin4); correctly uses Stepper(stepsPerRevolution, pin1, pin2, pin3, pin4) to create the object.
  3. Final Answer:

    Stepper myStepper(stepsPerRevolution, pin1, pin2, pin3, pin4); -> Option D
  4. Quick Check:

    Stepper constructor needs steps and 4 pins [OK]
Hint: Stepper needs steps and 4 pins in constructor [OK]
Common Mistakes:
  • Using only 2 pins instead of 4
  • Trying to use 'new' keyword in Arduino
  • Omitting steps per revolution
3. What will be the output behavior of this Arduino code snippet controlling a stepper motor?
Stepper myStepper(200, 8, 9, 10, 11);
void setup() {
  myStepper.setSpeed(60);
}
void loop() {
  myStepper.step(100);
  delay(1000);
  myStepper.step(-100);
  delay(1000);
}
medium
A. The motor rotates 100 steps forward, pauses 1 second, then 100 steps backward, pauses 1 second, and repeats.
B. The motor rotates continuously forward without stopping.
C. The motor rotates 100 steps backward only once.
D. The code will cause a compilation error due to missing pinMode setup.

Solution

  1. Step 1: Analyze step commands in loop()

    The code commands the motor to move 100 steps forward, then 100 steps backward, each followed by a 1-second delay.
  2. Step 2: Understand loop repetition

    Since this is in loop(), the forward and backward steps repeat indefinitely with pauses.
  3. Final Answer:

    The motor rotates 100 steps forward, pauses 1 second, then 100 steps backward, pauses 1 second, and repeats. -> Option A
  4. Quick Check:

    Stepper steps forward and backward with delay [OK]
Hint: Positive steps move forward; negative steps move backward [OK]
Common Mistakes:
  • Thinking motor runs continuously forward
  • Assuming missing pinMode causes error
  • Ignoring the delay pauses
4. Identify the error in this Arduino code controlling a stepper motor:
Stepper myStepper(200, 8, 9, 10, 11);
void setup() {
  myStepper.setSpeed(60);
}
void loop() {
  myStepper.step(50);
  delay(500);
}
medium
A. The stepper motor pins are not set as outputs using pinMode.
B. There is no error; the code will run correctly.
C. The step() function requires a negative number to move forward.
D. The setSpeed() function is called in setup(), which is incorrect.

Solution

  1. Step 1: Check pinMode necessity for Stepper library

    The Stepper library internally handles pin modes, so explicit pinMode calls are not required.
  2. Step 2: Verify setSpeed and step usage

    Calling setSpeed() in setup() and step() in loop() is correct usage for controlling speed and movement.
  3. Final Answer:

    There is no error; the code will run correctly. -> Option B
  4. Quick Check:

    Stepper library manages pins; code is valid [OK]
Hint: Stepper library sets pins automatically; no pinMode needed [OK]
Common Mistakes:
  • Adding unnecessary pinMode calls
  • Misunderstanding setSpeed() placement
  • Confusing step() sign for direction
5. You want to rotate a stepper motor exactly one full revolution at 120 RPM using Arduino's Stepper library. The motor has 200 steps per revolution. Which code snippet correctly achieves this in the loop() function?
hard
A. myStepper.setSpeed(60); myStepper.step(200);
B. myStepper.setSpeed(120); myStepper.step(100);
C. myStepper.setSpeed(120); myStepper.step(200);
D. myStepper.setSpeed(120); myStepper.step(-200);

Solution

  1. Step 1: Calculate steps for one revolution

    The motor requires 200 steps for one full revolution.
  2. Step 2: Set speed and steps correctly

    To rotate at 120 RPM, setSpeed(120) is correct, and step(200) moves one full revolution forward.
  3. Final Answer:

    myStepper.setSpeed(120); myStepper.step(200); -> Option C
  4. Quick Check:

    200 steps = 1 revolution; speed 120 RPM [OK]
Hint: Steps = motor steps/rev; speed = desired RPM [OK]
Common Mistakes:
  • Using half the steps (100) for full revolution
  • Setting speed lower than desired RPM
  • Using negative steps when forward rotation needed
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