Introduction: 7 Bi-color LED Matrix Scrolling Text Display

Picture of 7 Bi-color LED Matrix Scrolling Text Display

Here, we show how a 7 Bi-color 8x8 LED Matrix Scrolling Text Display is built, in which messages and commands can be sent to it via Bluetooth using an Android Smart Phone. Logically, any devices capable of sending text messages via Bluetooth may be adapted to work with the display.

To build this project, basic electronics component soldering skills and some knowledge on using the Arduino or Arduino based micro-controllers are required.

The reason for building a 7 LED Matrices long display is that it is quite adequate for ease of reading scrolling text and also because the largest tinted acrylic sheet easily available in Hobby or Art shops is 18 inches by 12 inches, which is just the right length for making the enclosure for the display as each LED matrix is around 60mm x 60mm in size.

You may view the following YouTube video to see what we are building.

Step 1: LED Matrix Driver Module Assembly

Picture of LED Matrix Driver Module Assembly

The display is built using seven of the Bi-color (Red and Green) LED Matrix Driver Module kits from jolliFactory. Each of these modules uses two MAX7219 Display Driver ICs to drive a Bi-color LED Matrix. These ICs are excellent because they take a lot of work off the micro-controller and simplify the wiring and logic design. Moreover, there is a ready-made Arduino library for this IC. You can daisy-chain up to four of these Bi-color LED Matrices using only three output pins on the micro-controller for the interface. As our display is made up of seven Bi-color LED Matrices, we need an additional three output pins on the micro-controller to interface with the other three daisy-chained LED Matrices.

You can find this Bi-color LED Matrix Driver Module kit from here with information on the assembly of the kit.

This kit comes with all through-hole components and someone with basic soldering skills should be able to assemble it without much difficulty.

You may view the following YouTube video on the assembly of the Bi-color LED Matrix Driver Module kit.

The following are some of the projects built using this Bi-color LED Matrix Driver module which you may want to check out:

Step 2: Wiring

Picture of Wiring

After all the kits are completed, they are connected together with the micro-controller as shown below (LED Matrices not installed for better view). Note the header for J3 is modified for the fourth LED Matrix Driver module from the right such that only VCC and GND are connected to the fifth module. This is because the first four daisy-chained modules from the right shall be driven by 3 output pins (Digital pins 2, 3 & 4) from the micro-controller and the last three daisy-chained modules shall be driven by another 3 output pins (Digital pins 5, 6 & 7).

Here, we use the chipKit UNO32 micro-controller board which is based on the popular Arduino Open Source hardware platform to drive the display. However, you may instead use any suitable Arduino boards if slower scrolling speed is acceptable to you. The chipKit UNO32 board is much more capable of producing faster and better scrolling text effect than Arduino boards of around the same price range.

We use a HC-07 Bluetooth Wireless Serial Port Module connected to the TX and RX pin of the micro-controller for Bluetooth communications between the display and the Android Smart Phone. This Bluetooth Wireless Serial Port Module is not expensive, easy to work with and quite easily available from online shops. You may instead use any Bluetooth Wireless Serial Port Modules you are familiar with.

Note the use of 10Kohms pull-down resistors on the DATA IN, CLK and LOAD input pins. When power is first applied to the micro-controller or when they are reset, their I/O lines float. The MAX7219 can see this as valid data and display garbage until the micro-controller gains control. The pull-down resistors prevent these problems.

Step 3: Arduino Sketch

Thankfully, there is an excellent library that has been specifically written for the MAX7219 which greatly simplifies the sketch – the LedControl library. You will need to download and install the library.

See the following link for more information about this library and to download the library.

*** Do note that all the examples that come with the library cater to single color LED Matrix driven by a single MAX7219 IC each and needs to be adapted for use with our Bi-color LED Matrix Driver Modules which is using 2 MAX7219 ICs for each module. Otherwise, there may be some form of 'ghosting' on the displays and may be mistaken to be a hardware issue.

You may also want to check out the original LedControl documentation for more detail.

The micro-controller needs to be loaded with the Arduino sketch to run the display.

Download the Arduino sketch below which is used for this project. You may amend and enhance the sketch to suit your project.

Download jolliFactory_8X_Bicolor_ScrollText_V2_0.pde

** Note that before downloading sketch to the micro-controller, the connections to the TX and RX pins for the HC-07 Bluetooth Wireless Serial Port Module must be removed for the download to be successful.

Step 4: Testing the Display

Picture of Testing the Display

Install the free Bluetooth spp pro Apps onto your Android Smart Phone, power up the display and establish Bluetooth communications between them. Then set up the Bluetooth spp pro Apps buttons for sending messages and commands accordingly.

See some examples of how we set up the configurable 'ClickMe' buttons for testing below:

Btn name: RED
Send val: (100)Scrolling . . .

Btn name: GREEN
Send val: (200)Scrolling . . .

Btn name: ORANGE
Send val: (300)Scrolling . . .

Btn name: RED*
Send val: (100)*

Btn name: GREEN*
Send val: (200)*

Btn name: ORANGE*
Send val: (300)*

Btn name: Speed Up
Send val: (00>)*

Btn name: Speed Down
Send val: (00<)*

Btn name: Dimmer
Send val: (0<0)*

Btn name: Brighter
Send val: (0>0)*

Btn name: jolliFactory
Send val: Powered by jolliFactory

Test the display by clicking on the buttons to send messages and commands to the display.

If you do not have a Bluetooth Wireless Serial Port Module connected, you may test the display by sending messages and commands via the Arduino's Serial Monitor.

Step 5: Display Enclosure

Picture of Display Enclosure

We will not delve into the details on building the display enclosure here. We used a 2mm thick blue tinted acrylic strip for the display front protective cover which is bent using a self-made strip heater and another black opaque acrylic strip for the back cover. The LED Matrix Driver Modules are secured with ¾ inch stand-offs to the back cover and we managed to place the micro-controller and Bluetooth wireless Serial Port Module below them. The result is a compact 7 LED Matrix Scrolling Text Display controlled via Bluetooth.

Step 6: A Shorter Scrolling Text Display

Thinking of building a shorter Scrolling Text Display? As the display is make up of chain-able Bi-color LED Matrix Driver Modules, it is quite easy to adapt this project to build a longer or shorter display.

You may view the following YouTube video to see how a Scrolling Text Display is built using only 4 of these Bi-color LED Matrix Modules and mounted directly onto an a chipKit UNO32 Arduino footprint compatible board. No interconnecting wires is required for this project and commands and messages are sent from the micro-controller via Serial Monitor.

Step 7: Newer Instructable to Build Another Scrolling Text Display

Picture of Newer Instructable to Build Another Scrolling Text Display

We have another newer instructable to build an Arduino Bluetooth 7 Bi-color LED Matrix long Scrolling Text Display that uses the Arduino hardware SPI lines for instruction and data transfer to the display which offers more impressive text scrolling effect. You may check it out here.


profort (author)2013-09-17

How much did this wonderful build cost to make?

jollifactory (author)profort2013-09-18

The chipKit UNO32 micro-controller currently cost around U$32, the HC-07 Bluetooth Wireless Serial Port Module around U$10 and the 7 pieces of the Bi-color LED Matrix Driver Modules cost U$12.50 each. Here, 7 Bi-color LED Matrix Driver Modules are chained together to form a long display. However, you may use lesser number of modules to form a shorter display.

You may like to check out the Bi-color LED Matrix Driver Modules at

For those interested, the Bi-color LED Matrix Driver Module now cost U$10.50 if four or more is ordered at

ravixxx26 (author)2016-11-16


email id :

mbil no.:+919549874312

plsssssssssss sir send me please.......

thank you

jollifactory (author)ravixxx262016-11-20

The program code can be downloaded in Step 3: Arduino Sketch

kudhel (author)2016-03-08

if i buy this one how many days before i receive the item?

kudhel (author)kudhel2016-03-08

if you intersted, email me on my FACEBOOK account or

mohamed.seifaleslam (author)2016-01-27

nice but where code

Check out Step 3 for the code.

edededededdie (author)2015-10-29

i want to make this type of project ...... i am beginner , so need help....

I had brought my items and my led matrix board looks totally different from the one in the schematic drawing and i was wondering dose it work the same way and will it work the same way if i use a arduino uno board ?

Your module is for a single color LED Matrix and should be using different chips to drive it. So, you may not be able to use our project's code to run them. For all our projects, we are using the bi-color LED Matrix Driver module kit from and they are driven using MAX7219 ICs.

Hi can i just check will the connection be the same and can we also use the bluetooth app to run the matrix when it running and is there any code for me to refer to ?

Sorry. I do not have the hardware you are using and may not be able to help you. You may try to check with the buyer for more information or you may also wish to find help at active Arduino forums to see if there is any one using the same hardware.

The hardware isit userable and is there any template that is similar to the currently "ic" number on your website

Can we still use the app that you have and run let the led matrix running?

djuwert (author)2015-09-14

What a baudrate is used? I like to send Messages per Terminal. Have the Terminal to answer the Arduino or is it right just to Send Message in one Direktion? The Wiring show rxd and txd. Thank you !

jollifactory (author)djuwert2015-09-14

If you are using the sketch download from this instructable, you will see the under setup the instruction 'Serial.begin(9600)'. 9600 is the baud-rate used here with default of 8 data bits, no parity, one stop bit.

You just need to Send Message in one direction to the Arduino though we have both the rxd and txd connected.

Sanjibs (author)2015-08-28

i want to make this type of project ...... i am beginner , so need help.... i wanna to make a scrolling board for my electronics LAB so how to start it ...please reply me as soon as possible....and its a awesome site for me cause i am a electronics lover from the very began when i was only 6 years old.. and i love to research in electronics sector.... specially micro-controller base circuit. i have clean idea about circuit diagram and component...... so i want to walk with you... and take my cordial love all the member, senior and everybody here... love you all.

jollifactory (author)Sanjibs2015-08-28

Thanks for your interest. If you are going to build a scrolling text display, I would suggest that you check out my other instructables at It is quite similar to this project here but the wiring is much simpler and scroll speed is much more faster.

I would suggest you purchase just one or two Bi-color LED matrix modules first from and try out some of my other simpler projects like or Once you are more confident, you may then purchase more modules to build the scrolling board.

Sanjibs (author)2015-08-28


carlos def (author)2015-02-14

Hello dear friends would like to get the code to do.

jollifactory (author)carlos def2015-02-14

You may download the program code in Step 3 for this project.

carlos def (author)2015-02-14

Hello dear friends would like to get the code to do.

Arduino Tech (author)2015-02-13

how to change the code for one module please help me !!

If you intend to use an Arduino micro-controller for this project, I would suggest you to check out my other instructable at

There is no need to change the code for that instructable as the code is written to work with one to eight LED Matrix modules daisy-chained.

jollifactory (author)2014-12-08

If you are going to build something similar but using an Arduino instead of the chipKit Uno32, I suggest you to check out my other instructable at BTW, I cannot recall having problem with using the chipKit Uno32 when I used it then. What are the problems you are facing?

Thanks for your quick reply. I really need help to get moving this project. I am following this page to build my LED Matrix scrolling text display and sending text messages with Android phone (AMR Robot app). BTW, I worked with Arduino Yun board before so I am very familiar with Arduino software and its programming.

First thing I did, I used a USB cable to connect Uno32 to my Windows PC. I tried it as is with no wires, no electronic modules on it. It had several LED 13 blinks which indicates a good boot loader. I run Arduino software (version 1.0.6) and selected Examples>01.Basics>Blink sketch from the File menu. Under the Tools menu, Board > Arduino Uno and serial port > COM5. The Compile alone worked fine. Then, I run Upload. It generated following messages:

Done Uploading
Binary sketch size: 1,082 bytes (of a 32,256 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x00

the last message font was in red and I google it to resolve the problem. So far not success. Any thoughts?

Is your suggested link for using Arduino board instead of chipKit Uno32 works for dictating speech using AMR app? It is running simple Bluetooth commands not AMR app. If it works for AMR app, do you recommend Arduino Nano (used in the link) or Ardiuno Uno board?

If you are going to use AMR to send messages to the display, you may check my other instructable to see if is more suitable for you. For this instructable, an Arduino Nano is used but it should also work with an Arduino UNO.

BTW, did you use the Arduino IDE for downloading the sketch to your chipKit UNO32 board with Arduino UNO selected as the board. If so, this explains why you are not able to download successfully. The maker for chipKit UNO32 have come up with their version of IDE to work with this board.

You are a life saver, yes I did use Arduino IDE. I am now installing chipKIT UNO32 IDE using . I am confident this will work since the error above was about Arduino IDE is not recognizing the chipKIT board.

I have another question. I am using chipKIT UNO32 and HC-06 blue tooth. Your wiring chart in this link ( are not using resistors but do use them with Arduino NANO board. Correct? Also Do you have sketch and LED Library for chipKIT UNO32 board? Thank you!

The chipKit UNO32 operates at 3.3V whereas the Arduino Nano/UNO operates at 5V. The chipKit UNO32 digital inputs are however 5V tolerant.

The bluetooth modules which I used in these instructables operates at 3.3V which is why it works seamlessly with the chipKit. For them to work with the Arduino Nano, I am using the resistors to shift the 5V signal to a safer voltage for the bluetooth module. I am not sure if the bluetooth module is 5V tolerant. If it is, then there is no need for the resistors.

Makes sense then. I am using a Usb connection from PC to chipKIT UNO32 for power and sketch uploads. It works I am assuming it is 5V but converted to 3.3V in the chipKIT.

My last question, I've seen several sketches for 7 LED Matrix and using chipKit & AMR. Which one do you suggest? I'd appreciate if you could provide the link here. Regards.

The Arduino sketch downloaded from my instructable should be more suitable if you are looking for control using AMR app. I have sold my chipKit UNO32 and am unable to verify if the sketch written and tested on Arduino Nano works with this board without need for modifications.

Finally I got it running. AMR connected to HC -06, sketch uploaded successfull. I am testing a single LED matrix first. It led green all 16 LEDs all the time. When I tried to send commands with Bluetooth Spp pro appsuch as RED font, A red line started moving thru the LEDs but non-red LEDs are not off, they stay green. I need to find the way to turn the green off. Do you think it is the sketch or wire connections? I did used 10Kohm resistors between the matrix and gnd. Also used 3.3V power pin. Thanks.

Why are you using the 3.3V power pin? You should be using the 5V power pin.

I replaced some of the MAX7219 with the real ones, my LED Matrix is working now. You are correct, I should be using 5V for LED Matrix. I am not familiar with pull-down resistor set up but basically I put 10Kohm resistor to the GND line (black cable in your wiring diagram) between chipKIT GND pin to the LED Matrix GND pin. I am not sure If I did it right ??? but it established communications with the Bluetooth spp pro app. I currently setup 4 Bi-color LED Matrix Modules.

My next step is to make AMR robot app working. Then I will replace AMR app with the Arduino Voice Recognition 2.0 module. I am using chipKIT UNO32 and when I compiled your other instructable sketch, I got below errors. I will appreciate your thoughts on this. Thanks.

Arduino_AMR.cpp: In function 'void setup()':

Arduino_AMR.cpp:197:7: error: 'cli' was not declared in this scope

Arduino_AMR.cpp:200:3: error: 'TCCR1A' was not declared in this scope

Arduino_AMR.cpp:201:3: error: 'TCCR1B' was not declared in this scope

Arduino_AMR.cpp:202:3: error: 'TCNT1' was not declared in this scope

Arduino_AMR.cpp:205:3: error: 'OCR1A' was not declared in this scope

Arduino_AMR.cpp:208:19: error: 'WGM12' was not declared in this scope

Arduino_AMR.cpp:210:19: error: 'CS12' was not declared in this scope

Arduino_AMR.cpp:210:33: error: 'CS10' was not declared in this scope

Arduino_AMR.cpp:212:3: error: 'TIMSK1' was not declared in this scope

Arduino_AMR.cpp:212:19: error: 'OCIE1A' was not declared in this scope

Arduino_AMR.cpp:214:7: error: 'sei' was not declared in this scope

Arduino_AMR.cpp: At global scope:

Arduino_AMR.cpp:491:4: error: expected constructor, destructor, or type conversion before '(' token

I think you may have connected the 10k pulldown resistors wrongly. Please check my wiring diagram. They should be connected between Din, Clk & Load of the LED Matrix to the GND line. I do not think there is a problem with the MAX7219 ICs.

As for the compiling errors you are facing, do note that the sketch you are using is intended for use on the Arduino Nano/Uno and may not work as a whole on the chipKit UNO32.

So consider Din wire set up, a wire coming from the Din of the LED Matrix connected to one end (lead) of the 10k resistor and the other end of the same resistor will be connected to both GND pin and a digital pin (say 2) on the UNO board. Then do the similar set up for the Clk and Load pins independently, Correct?

There is compatability issue between Arduino and chipKIT IDE libraries. Arduino time interrupts are not recognized by the chipKIT MPIDE. I will still try your sketch without setting up interrupt to monitor for serial incoming data part (ISR(TIMER1_COMPA_vect) etc.). I cancel them and will still try the sketch. Worst case, I can use an Arduino board.

You are right about compatibility issues for the interrupt timer codes between chipKit and Arduino.

As for the pulldown resistor connection, I think you are still not right.

So consider Din wire set up, a wire coming from the Din of the LED Matrix connected to one end (lead) of the 10k resistor and the other end of the same resistor will be connected to just the GND pin. Do the same for the Clk and Load pins independently.

Thanks makes sense now. I ordered Arduino UNO board today. My last 2 questions regarding Arduino Nano using AMR app:

(1) In the sketch, where do you define Din (11), CLK(13) and Load (10) pins? The comment section indicates the following: //SPI connections between Arduino Nano/UNO and the displays are MOSI (Pin 11), SCK (Pin 13) and SS (Pin 10) at the Arduino side and Din, CLK and Load pins at the LED Matrix Driver Module respectively.

(2) The wire diagram for Arduino Nano & AMR app has 3 output pins and it does not split LED matrices into 2 sets. Whereas chipKIT & Bluetooth spp pro app example splits LED matrices into 2 sets and another 3 output pins used for the second set (Digital pins 5, 6 & 7). What drives the separate wire set ups? I plan use Arduino UNO and AMR app, so should I use the first set up?

Thanks for your all help so far.

If you are using Arduino Nano/UNO instead of chipKit for the Voice Input instructable, follow all the wirings in that instructable as it is using SPI hardware lines instead of normal digital lines and only the 3 SPI lines is needed to drive the entire number of LED Matrix modules daisy-chained together.

Perfect, Thanks. For my first question, I could not locate Din, CLK and Load pin definitions in your Voice input sketch below. Are they pre-defined in SPI library by default?

Download jolliFactory_VoiceInput_8X_Bicolor_ScrollText_SPI.ino

There is no need to define the Din and Clk pin as we are using the SPI library and the SPI hardware lines. As for the Load pin, it is connected to pin 10 and defined in the sketch SPI_CS =10 for this instructable.

It worked finally. Thanks. I have one more question. The scrolling text keeps repeating, instead I want it to scroll once and diminish (not repeat, appears once). Do you know where should I focus on the sketch for this?

Download the Arduino sketch in the link below and find comments 'Updated here' in the sketch for code changes to implement the feature you requested

The downloaded sketch is just for reference and not suitable for this instructable's use. It can however be used for my other instructable

This helps a lot, thanks for your time.

firazpeerjade (author)2014-11-28

Thanks's Work nice

It should be possible to do so as this is just a display. You will need to modify the sketch to work with your GSM board or shield.

firazpeerjade (author)2014-11-29

Can we make it using Recive the message from anywhere in the world

nagkiller (author)2014-11-15

If getting error message:

Open and edit the lines in LedControl.cpp:


//#include "WProgram.h" // This is old line!!!

#if defined(ARDUINO) && ARDUINO >= 100

#include "Arduino.h"


#include "WProgram.h"

Open and edit the lines in LedControl.h:
//#include <WConstants.h> // This is old line!!!

#if ARDUINO >= 100

#include "Arduino.h"


#include "WProgram.h"



jollifactory (author)nagkiller2014-11-15

You may be using a old library. If you downloaded the latest LedControl library from, there should not be any need to edit the files.

nagkiller (author)jollifactory2014-11-16

Thank you !!!

But I had already solved the problem. Was only edit the files ... inserting the lines I quoted in another message.

What I did was download the Arduino playground (this is outdated).

Now is working perfectly !!!


About This Instructable




More by jollifactory:IKEA Frame Hack > sLOMO (Slow Motion) FrameJolliCube Audio/Music VisualizerJolliCube (8x8x8 LED Cube) with MD_Cubo library
Add instructable to: