How to Make a Scrolling Text Display With Arduino

In this tutorial, I am going to teach you how to design a digital scrolling text display using Arduino UNO and P10 LED dot matrix display (DMD) module.

A digital scrolling text display is a display system that can display digital texts on a board made of LED array. The information it displays is pre-programmed using a microcontroller. Basically, the microcontroller used to program the P10 LED dot matrix display is called the “Control Card”. This control card comes in many forms and has many features, but with the help of Arduino DMD library, we can program the Arduino board to work with the P10 dot matrix display. The P10 LED dot matrix display also comes in different colours.

Figure 1: P10 LED DMD module control card
P10 Dot Matrix Display Module
Figure 2: P10 LED dot matrix display module

Materials Needed for Scrolling Text Display With Arduino

  1. Arduino Uno board X 1
  2. P10 LED Dot Matrix Display (DMD) Module X 3
  3. 5 Volts, 5 Amps power supply
  4. Ribbon cables X 3
  5. Power supply cables
  6. Bunch of jumper wires
Figure 3: All the components used in the design

Circuit diagram of the Scrolling text display with Arduino

scrolling text display
Figure 3: connection of the arduino to the P10 LED DMD module
scrolling text display
Figure 5: How to connect A P10 LED DMD Module to Arduino

The DMD library can be downloaded here.

Here is a step by step tutorial on how to install arduino library.

*** Make sure to also download and install the TimerOne library on the Arduino IDE.

Arduino code

#include <SPI.h>
#include <DMD.h>
#include <TimerOne.h>
#include <Arial14.h>
#include <Arial_black_16.h>
#include <Arial14.h>
#include <SystemFont5x7.h>

void ScanDMD() {

void setup() {
Timer1.initialize( 2000 ); 
Timer1.attachInterrupt( ScanDMD ); 
dmd.clearScreen( true ); 
String textToScroll= " scrolling text display. Please subscribe, like, comment and share.";

void drawText1( String dispString )

dmd.clearScreen( true );
dmd.selectFont( Arial_Black_16 );
char newString[256];
int sLength = dispString.length();
dispString.toCharArray( newString, sLength+1 );
dmd.drawMarquee( newString , sLength , ( 32*DISPLAYS_ACROSS )-1 ,0);
long start=millis();
long timer=start;
long timer2=start;
boolean ret=false;
while( !ret ) {
if ( ( timer+20 ) <millis() ) 
ret=dmd.stepMarquee( -1 , 0 );

void loop() {

Suggested Reading

After designing this project, you can try out an advance version of it, which is how to control the digital display with a smartphone via Bluetooth. You can see read and watch the tutorial below and other Arduino projects.

How to make a Bluetooth controlled scrolling text display
How to make Password door lock with Arduino
How to make automatic hand sanitizer with Arduino

17 Comments on “How to Make a Scrolling Text Display With Arduino”

  1. Oh! Wow! It’s now working. You never said one will have to install Timerone Library. But thanks anyway

      1. Thanks sir
        But they still keep telling me
        In the following functions
        void ScanDMD();
        void setup();
        void drawText1(String);
        ‘dmd’ was not was not defined in this scope I don’t know why

        1. Thanks so much Sir. It now works.
          Wish to inquire from you whether you know where we can have “the P10 dot matrix display module”?

  2. How to make bigger size in up and down scrolling text. It’s not working by changing the value of the display Down value. If I change that to 2 will it increase? Or should I change anything in coding?

    1. Arduino does not have the library to do that which I know of. You need to use a control card.

  3. Hi Sir,

    Does the Code and Circuit work for P6 DMD Module? Please suggest Changes if required.

    1. Well, try it it first, then we will look for a way to required changes if need be. I expect it to work.

  4. Hello sir
    Please how do I read text files from SD card and display it for scrolling on dot matrix display (P10 board).

Leave a Reply

Your email address will not be published. Required fields are marked *