Arduino TutorialsProjects

How to Make a Scrolling Text Display With Arduino

how to design scrolling text with Arduino UNO and P10 LED DMD module

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. Connection ribbon cables X 3
  5. Power supply cables
  6. Bunch of jumper wires
Figure 3: All the components used in the design
p10 and arduino circuit diagram
Figure 4: connection of the arduino to the P10 LED DMD module
How to connect A P10 LED DMD to Arduino
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.

The Arduino code for the design is shown below:

#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() {

If you have any question please let me in the comment section below


  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”?

Leave a Reply

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