Skip to content

StepperUNO - Stepper Motor Control

StepperUNO - Stepper Motor Manual Control

500px | alt='Manual Control Stepper Motor'

Find me in the shop

The StepperUNO is a stepper motor manual control board for standalone system.

It controls up to two stepper motors and read sensors at the same time. It is suitable for small application requiring manual control and automation.

Based on the pattern of the Arduino UNO it is designed to host a LCD keypad shield. This combination makes the stepperUNO an excellent unit for application control.

This is programmed using Arduino IDE. Sketch can be uploaded directly from USB port.

Some basic Arduino programming skills are needed to work with this product. We provide a library to help you with this.

alt='Diagram for stepperUNO'


  • 2 Motor control output (Generic or embedded A4988 drivers)
  • 4 Digital Input/Output
  • 2 Analog Input (can be also used as digital I/O)
  • 1 USB port
  • 2 12V Power port
    • 2.1mm Barrel Power Jack or
    • Screw Terminal Connector
  • 2 Potentiometer control
  • Host LCD Keypad with
    • 6 push buttons.
    • 16x2 LCD screen

Motor Driver

The stepperUNO V2 is designed to operate with most stepper driver.

There are two options for each motor.

  • An onboard driver and
  • A generic external driver interface.

Onboard Driver

The StepperUNO can host two onboard drivers.

Some example of onboard drivers are:

  • A4988. Great for speed control and torque. Lost cost. Not recommended for positioning.
  • S2225. Great for positioning. Silent.
  • DRV8825.

When using onboard drivers the connectors named motor1 and motor2 should be directly connected to the motor.

Onboard drivers are powered from the 12V supplied.

Microstepping is done by mean of solder jumpers at the back of the StepperUNO board.

alt='StepperUNO microstepping'

External Driver

External drivers should be connected to the connectors marked (EN1, DIR1, ST1, GND). Signals are TTL 5V level.

Onboard drivers must be removed when using the external driver.

The external driver must be powered separately. The StepperUNO will not power the external driver.

Some example of external drivers are Geckodrive / Sanyo Denki 3 / TB6600 / TB6560 / DM542.

500px | alt='StepperUNO External Driver for manual control'

Motor Control

The step forward with the StepperUNO is the addition of dedicated Attiny84 microcontroller for each motor. Thus allowing the main microcontroller (Arduino UNO) to perform other tasks while the motor are in action. Motor control operation will not interfere with other programmed task (e.g. LCD / sensor reading / computation/ etc...). This also allows for smooth operation of the motors (e.g. preventing the motor rattle while the mcu is sending data to print on the screen).

The ATtiny84 communicates with the main Atmega328 MCU via i2c. All controls can be easily used using the StepperUNO library.

See also Update attiny firmware on StepperUNO V2

User Control / Manual Control

The LCD keypad shield from DFRobot is used and supplied. It uses the usual LiquidCrystal library to print on the screen.

From the LCD keypad six push buttons are available. We have rerouted the reset button as a normal function button. The StepperUNO library contains functions to program them easily.

The two potentiometers are available for linear controls such as speed.

300px| alt='LCD Keypad'


All digital and analog ports are available with screw terminal connectors. On each port there are three pins. Data/Ground and +5V. Ground and +5v are here for powering the sensor.

Digital Input/Outputs available are:
Analog Inputs available are
The analog input can be used as Digital I/O. Making 6 DIO available.
These would be
A1 -> D15
A2 -> D16


To connect a microswitch to one of the DIO the pin out should be as such
Vcc -> NO
Gnd -> NC
In -> Common

Power supply

The stepper UNO can be powered using a conventional 12V PSU with 2.1mm jack connector.

Onboard Drivers are powered by the PSU of the StepperUNO. Make sure the PSU is rated appropriately to cover both drivers demand.

With the external driver is it recommended to use a separate power supply for the motor. This later must be connected directly to the external driver. Using the power from the stepperUNO (Gnd and V+) to feed the motors can used for small motors only.


The stepperUNO library is available in the section Files below.

The library is described in more details in

StepperUNO Library 1.5

A simple usage example is shown below.

// simpledrive v1.3
// Example usage of stepperUNO library
// drive a single motor with left/right button

// library: stepperUNO_v1.4

#define Pot 6 // Potentiometer 1 is on pin 6

#include <LiquidCrystal.h>
#include <stepperUNO.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
keypad Keypad;
stepMOTOR motor1;

const int Nstep = 200; // Enter here the number of step/rev for your motor

void setup() {

  motor1.begin(0x4, Nstep); // Motor 1 is at address 0x5. Motor 2 on 0x4

  lcd.begin(16, 2); // LCD initialisation


void loop() {

  int POTval = analogRead(Pot);
  int rpm = map(POTval, 0, 1023, 5, 500); // Speed range from 5 to 500rpm


  if (Keypad.state == PRESSED_RIGHT) {
    lcd.setCursor(0, 0);
    Keypad.closeEvent(); // Must be here to indicate we are done with the event
  else if (Keypad.state == PRESSED_LEFT) {
    lcd.setCursor(0, 0);
    lcd.print("LEFT ");

  else if ( Keypad.state == RELEASED_RIGHT ) {
    lcd.setCursor(0, 0);
  else if ( Keypad.state == RELEASED_LEFT ) {
    lcd.setCursor(0, 0);

}//end loop


StepperUNO Library v1.5.0
To install the library download the above zip file. In Arduino IDE go to Sketch | Include Library | Add .ZIP Library. Then select the downloaded zip file.

Application Examples

The library is provided with several examples in the Example directory.