DIY LED Dot Matrix Scrolling Display Using Arduino

About: This is Soumit here. I am an Engineering Undergrad interested in Arduino and Electronics projects

Hello Instru

This is my First Instructable. In this Instructable, I will show how I make a DIY LED Dot Matrix Scrolling Display using Arduino as MCU.

This kind of displays featured on Railway Station, Bus Station, Streets, and many more places. There usually Red LED dots which altogether makes a character. One by one character builds a sentence and the combination of those sentences display a message to the user.

Here I am gonna make a 32 x 7 LED Dot Matrix Display which can show a combination of A-Z character, 0-9 numbers and some special characters.

So, Let's get started

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Gathering Everything We Need

Components

  1. Arduino Nano - 1
  2. Female Headers 15 PIN - 2
  3. 5 mm Diffused LEDs - 224 (Keep 10-20 more, some faulty may be there)
  4. 74HC595 Shift Register IC (16 pin DIP Package)- 5
  5. IC Base 16 Pin - 5
  6. Transistor (NPN 2N2222)- 7
  7. Resistor (330 ohm) - 39
  8. Resistor (1 Kilo ohm) - 7
  9. Perfboard / Zero PCB - 1
  10. PCB Wire - Single-stranded
  11. Voltage Regulator IC (7805) - 1
  12. Capacitor - 470 uF - 1 & 100 uF - 1
  13. DC Female Jack - 1
  14. 9V DC Adapter - 1

Tools Needed

  1. Multimeter
  2. Soldering Iron
  3. Solder
  4. Soldering Flux (I prefer using solder with flux)
  5. Desoldering Wick - might be needed
  6. Wire Cutter and Stripper

Step 2: LED Matrix and Multiplexing

LEDs are creating a Matrix. To display any character in ASCII format we need a 7X5 matrix. Now we will be using common cathode and common anode of the LEDs. So we get 7 Row control line and 5 Column control line, Total 7+5=12 lines. Now the problem is, How we turn on the particular LEDs (rest should be off) in order to display the characters.

Now here we use Multiplexing to solve the issue. Displaying Character through multiplexing is based on Persistence of vision of human eyes. Here we glow only one line at a time with very fast switching speed so that our naked eye consider it as a character. Later shifting that line makes the scrolling happen.

Here in the image section, a GIF file attached which shows how switching line by line makes the complete sign.

For Multiplexing, we will use Shift Register specifically 74HC595. This will shift the incoming data according to the instruction given by the Microcontroller.

Reference

Step 3: Testing the Components

It is always a good practice to test the components before starting the project.

LEDs

It is very important to test each and every LED so that you don't have to desolder faulty one after soldering.

To test the LEDs use a button cell (3.3 v) across the legs. Take care about the polarity otherwise, it will blow up.

Transistors (NPN 2N2222)

Make the connection as per the diagram is given then apply 5V at the Base of the transistor if the LED glows than your transistor is OK otherwise, you need to replace it.

Shift Registers (74HC595)

You can make a simple LED chaser to test the IC. Just Google about it.

You can ignore this step if you believe that all of your components are working.

Step 4: Building the Prototype

First, insert LED legs into the Perfboard holes and determine the perfect distance between two LED. In my case, I left one hole space on both Row and Column side.

Now according to the schematic(common row, common column) start soldering the LEDs into the Perfboard. Make sure that Rows will be Negative and Column will be Positive (of LEDs)

After finishing soldering of every Column (assuming soldering column-wise) check all the connections by Multimeters continuity function. If all are ok then proceeds to the next one. By this way, you can avoid tedious desoldering process (if anything goes wrong).

Again Testing

Construct an 8x7 (row x column) LED matrix first and build a prototype control circuit on a breadboard using Arduino Nano, 2 Shift Register (1 for row and 1 for column) with necessary Transistor and Resistors according to the schematic.

Then Upload the code to the Arduino and run the circuit. If all things are right then the Character 'HELLO WORLD' will scroll through the matrix If not then cross check all your connection with the schematic.

Note: In the schematic 16 x 7 LED matrix is given. To make it 32 x 7 you just have to connect other LEDs like before and cascade the shift register with the next one.

Theoretically, you can make the column as long as you want but practically that should not be the case. Practically there is always a limitation.

The Arduino code is taken from kksjunior and modified by me to add digits and special characters.


References

Step 5: Lets Build It

After testing we can again proceed toward completing this project.

Solder all the LEDs as per the schematic. Then connect 330-ohm resistors in each common columns and connect it to the outputs of the shift register. Each shift register has 8 output so we need 4 shift register in column side and 1 shift register in row side.

Properly connect the transistors in the row side and then connect the 1K-ohm resistor in the Base of each transistor and to the output the shift register (we need 7 outputs only). This transistor works like a switch here as because the 74HC595 can not sink that high current required to drive the LEDs.

Make the proper connections with Arduino as shown on the schematic.

Power supply section

This whole display will draw a lot of currents (nearly 1 Amp) which Arduino's 5V pin can not able to supply. So we make a dedicated power supply section.

A 9V AC-DC adapter is used to supply DC 9V to the board. Then a 5v Linear Voltage Regulator with complimentary component used here to supply regulated 5 V to Arduino, 74HC595, LEDs. whose circuit diagram is given on the schematic.

Note: For my case, I don't use a heat sink on 7805 IC. But if you observe that the IC is heating too much then it will be recommended to use a Heat Sink there.

Reference

Step 6: Finally

After you finish the soldering process upload the code with your customized message and its Done. Give the Power and it should be work like a charm. Congratulation you have created your own display.

Making a housing to cover the circuitry is a good idea. I didn't do but if you make the case feel free to share it.

I hope you enjoyed reading this Instructable. Feel free to leave your feedback in the comment section below.

Thank You.

Epilog X Contest

Participated in the
Epilog X Contest

Be the First to Share

    Recommendations

    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    12 Discussions

    None
    আলঅ

    2 months ago

    i cant download this code
    how to download this code plz
    or plz inbox me code (Word file
    )

    1 reply
    None
    NiechoA

    2 months ago

    trimah kasih sangat membantu,,
    Di tunggu postingan selanjutnya,,!!!!

    1 reply
    None
    curryking

    4 months ago

    Which LED did you use? how much DC Forward Current (mA) do they have?

    1 reply
    None
    soumit_dascurryking

    Reply 3 months ago

    I have used generic 5mm LED. I bought it from the local market and didn't able to find it's datasheet. I assumed the forward current as 20 mA.

    None
    d67uttam

    3 months ago

    Where do you get 12 inch by 6 inch perforated board, can you please provide the address
    so that I can purchase one.

    1 reply
    None
    soumit_dasd67uttam

    Reply 3 months ago

    I bought it from Chandni Chowk Electronics Market, Kolkata

    None
    DIY Hacks and How Tos

    9 months ago

    This is a pretty impressive display. What do you think is the largest display that you could make with a standard Arduino Uno?

    1 reply

    Maybe up to 80x7 (80 columns). I am not quite sure about that.
    But If I have to make the display larger then I need to use high current LED drivers, Power Transistors and high current power supply. I think Arduino Uno will enough to drive that display.
    Thanks