Maker.io main logo

NEMA 17 Stepper Motor Set Sequence of Steps, Speed & Direction With A498

2026-05-29 | By Ron Cutts

License: GNU Lesser General Public License Microcontrollers Motors PWM Serial / UART Stepper Arduino ESP32

In this tutorial we will learn how to set a sequence of steps and direction for the stepper motor NEMA 17 and repeat them in a loop.

Watch the Video!

Learn more about Visuino: What is Visuino

What You Will Need

What You Will Need

What You Will Need photo 2

What You Will Need photo 3

What You Will Need photo 4

What You Will Need photo 5

What You Will Need photo 6

What You Will Need photo 7

Circuit

  • Arduino Digital Pin 2 will be used for Steps

  • Arduino Digital Pin 3 will be used for motor direction.

If using a Stepper Motor Driver Shield:

  • Connect the Motor Shield GND pin to the Arduino negative pin [GND]

  • Connect the Motor Shield [5V] pin to the Arduino positive pin [5V]

  • Connect the Motor Shield GND pin to the Power Supply negative pin [GND]

  • Connect the motor shield [9V] pin to the power supply's positive pin [+]

  • Connect the Motor Shield pin[S] to the Arduino digital pin [2]

  • Connect the motor shield pin [D] to Arduino digital pin [3]

  • Connect the stepper motor as shown in the picture.

If using a Stepper Motor Driver 8825:

  • Connect the DRV8825 GND pin to the Arduino negative pin [GND]

  • Connect the DRV8825 DIR pin to Arduino digital pin [3]

  • Connect the DRV8825 STEP pin to Arduino digital pin [2]

  • Connect the Power Supply for the motor to the DRV8825 VMOT and GND

  • Connect the Capacitor across VMOT and GND

  • Connect the stepper motor as shown in the picture.

Circuit

Circuit photo 2

Start Visuino, and Select the Arduino UNO Board Type

Start Visuino as shown in the first picture. Click on the "Tools" button on the Arduino component (Picture 1) in Visuino. When the dialog appears, select "Arduino UNO" as shown in Picture 2

Start Visuino, and Select the Arduino UNO Board Type

Start Visuino, and Select the Arduino UNO Board Type photo 2

In Visuino, Add Components

  • Add "Counter" component

  • Add "Pulse Generator" component

  • Add "Unsigned To Digital" component

  • Add "Integer Value" component

  • Add "Sequence" component

  • Add "Digital (Boolean) Value" component

In Visuino Add Components

In Visuino Add Components photo 2

In Visuino Add Components photo 3

In Visuino Add Components photo 4

In Visuino Add Components photo 5

In Visuino Add Components photo 6

In Visuino Set Components

  • Select "Counter1" and in the properties window select "Max" > "Value" and click on the Pin Icon and select "Integer SinkPin"

  • Select "Counter1" and in the properties window, set "Max" > "Value" to 0 and "Roll over" to False

  • Select "Counter1" and in the properties window, set "Min" > "Value" to 0 and "Roll over" to False

  • Select "UnsignedToDigital1" and in the properties window set "Output Pins" to 1

  • Select "PulseGenerator1" and in the properties window set "Frequency" to 2000 << this will be the speed of the stepper motor; you can adjust it to your needs

Setting the steps:

  • Double click on the "IntegerValue1" and in the Elements window, drag "Set Value" to the left side and in the Properties window, set "Value" to 1000

  • Drag another "Set Value" to the left side, and in the properties window, set "Value" to 800

  • Drag another "Set Value" to the left side and in the properties window, set "Value" to 3000

  • Close the Elements window

Setting the direction:

  • Double click on the "DigitalValue1" and in the Elements window, drag "Set Value" to the left side

  • Drag another "Set Value" to the left side, and in the properties window, set "Value" to True

  • Close the Elements window

Setting the Sequence:

  • Select "Sequence1" and in the properties window set "Repeat" to True

  • Double-click on the "Sequence1" and in the Elements window, drag "Period" to the left side

  • Drag another "Period" to the left side and in the properties window, set "Delay" to 2000

  • Drag another "Period" to the left side, and in the properties window, set "Delay" to 2000

  • Close the Elements window

In Visuino Set Components

In Visuino Set Components photo 2

In Visuino Set Components photo 3

In Visuino Set Components photo 4

In Visuino Set Components photo 5

In Visuino Set Components photo 6

In Visuino Set Components photo 7

In Visuino Set Components photo 8

In Visuino Set Components photo 9

In Visuino Set Components photo 10

In Visuino Set Components photo 11

In Visuino Set Components photo 12

In Visuino Set Components photo 13

In Visuino Connect Components

  • Connect "Sequence1" > "Period1" pin [Out] to "DigitalValue1" > "Set Value1" pin [In]

  • Connect "Sequence1" > "Period1" pin [Out] to "IntegerValue1" > "Set Value1" pin [In]

  • Connect "Sequence1" > "Period2" pin [Out] to "DigitalValue1" > "Set Value2" pin [In]

  • Connect "Sequence1" > "Period2" pin [Out] to "IntegerValue1" > "Set Value2" pin [In]

  • Connect "Sequence1" > "Period3" pin [Out] to "DigitalValue1" > "Set Value1" pin [In]

  • Connect "Sequence1" > "Period3" pin [Out] to "IntegerValue1" > "Set Value3" pin [In]

  • Connect "PulseGenerator1" Pin[Out] to "Counter1" Pin [In]

  • Connect "IntegerValue1" Pin [Out] to "Counter1" Pin [Reset]

  • Connect "IntegerValue1" Pin [Out] to "Counter1" > 'Max > Value" Pin [In]

  • Connect "Counter1" Pin [Out] to "UnsignedToDigital1" Pin [In]

  •  Connect "UnsignedToDigital1" Pin [Out] to Arduino Board Digital Pin [2]

  •  Connect "DigitalValue1" Pin [Out] to Arduino Board Digital Pin [2]

In Visuino Connect Components

In Visuino Connect Components photo 2

Generate, Compile, and Upload the Arduino Code

In Visuino, at the bottom, click on the "Build" tab, make sure the correct port is selected, then click on the "Compile/Build and Upload" button.

Generate, Compile, and Upload the Arduino Code

Play

If you power the Arduino module and press the button, the motor will start to run, and when it reaches a certain number of steps, in our case 1000, it will change the direction and do 800 steps, and after that, change the direction again and do 3000 steps. Because we set the sequence component Repeat to True, the motor will continue to do this in a loop.

Congratulations! You have completed your project with Visuino. Also attached is the Visuino project that I created for this. You can download it here and open it in Visuino: https://www.visuino.eu

Downloads

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.