Learn ESP32, ESP8266, Arduino, and Raspberry Pi

Arduino guide of 28 BYJ – 48 Stepper Motor with LEDs and LCD1602 I2C

We will learn how to control 28 BYJ – 48 Stepper Motor with LEDs, LCD1602 I2Cs and Arduino board.

Tag: Project 004c 28 BYJ – 48 Stepper Motor with LEDs and LCD1602 I2C.

Project resources

Sketch: sketch;


  • The Stepper library included in Adruino IDE program which installed in your PC. You can also download it – libraries;
  • I have used the library – which I downloaded, unzipped, changed the name of folder to LiquidCristal and added to libraries in my PC, for example C:\Users\toshiba\Documents\Arduino\libraries. This link you can find in Preferences of Adruino IDE program which installed in your PC. If you have LiquidCristal folder in this location already – delete this folder and copy folder, which was made by you, to this location.

Other attachments: None.

Parts required

In this project, you needed these parts :

1.Arduino Uno R3 (you can also use the other version of Arduino)

Arduino Uno R3

2.28BYJ 48 Stepper Motor

28BYJ 48 Stepper Motor

3.Arduino IDE ( you can download it from here  )

4.Jumper cables

jumper cable

5.ULN2003 stepper motor driver board

ULN2003 stepper motor driver board

6. LEDs 3 pcs (1 Blue, 1 Green, 1 Red)


7. Resistors 3 pcs (220 Om each)


8. Breadboard


9.LCD1602 I2C module

LCD1602 I2C module

Understanding the stepper motors

See more details here. We will use unipolar stepper motor 28BYJ-48 for this project.

There are many types of drivers – L293, ULN2003, A3967SLB and more. 

The 28BYJ-48 even comes with breakout using ULN2003 as a motor driver chip.

Understanding LCD 1602 module

 See more details here – check this project

Signals and contacts stepper motor, ULN2003 module, LEDs, LCD 1602 module

Signals and connections of stepper motor, ULN2003 module, LEDs  you can find here.

Signals and connections of LCD1602 module you can find here.


The power consumption of the motor is around 240mA. Because the motor draws too much power, it is best to power it directly from an external 5V power supply rather than drawing that power from the Arduino.

28BYJ-48 Stepper Motor with LEDs, LCD 1602 I2C module and Arduino board

Step by Step instruction

  1. Do wiring.
  2. Open Arduino IDE.
  3. Plug your Arduino Uno board into your PC USB port.
  4. Select the correct board and COM port in the Arduino IDE.
  5. Find your I2C address. Each device has an I2C address that it uses to  accept commands or send messages. Load the sketch over at and follow the instructions to use it.  By opening up the Serial monitor window after you upload the sketch, Arduino will scan the address range looking for a reply.  Even though the documentation said it was 0x27, this scanner can detect different (in my case 0x3F)
  6. Modify the sketch in attachments above (you can use the sketch below too): the line LiquidCrystal_I2Clcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE) (See part marked bold)
  7. You must take something in consider: 28BYJ-48 has a gear ratio of 64 and stride angle 5.625 so this motor has a 4096 Steps. Number of Steps in one revolution= 360/stride angle=360/5.625=64. Steps =Number of steps in One Revolution * Gear ratio. Steps= (360/5.625)*64 = 64 * 64 =4096 – this value will substitute it in the Arduino sketch. 
  8. For Adafruit Stepper Motor the stride angle 7.5 and gear ratio is 16. So number of steps in 1 revolution will be : steps in One Revolution  = 360 / 7.5 = 48. Steps= 48 * 16 = 768. It will be different depending on what motor you are using so check the datasheet for your stepper motor to calibrate these values.
  9. Verify and upload the the sketch to your Arduino Uno.

Wrapping up

We have learnt how to control 28BYJ-48 Stepper Motor with LEDs, LCD 1602 I2C module and Arduino board.

Check for more DIY projects here.

Thank you for reading and supporting us.

Check for more DIY projects on and!

If you are looking for high quality PCBs PCBWay is the best choice: