Introduction: DIY LED Dot Matrix Scrolling Display Using Arduino
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
Step 1: Gathering Everything We Need
Components
- Arduino Nano - 1
- Female Headers 15 PIN - 2
- 5 mm Diffused LEDs - 224 (Keep 10-20 more, some faulty may be there)
- 74HC595 Shift Register IC (16 pin DIP Package)- 5
- IC Base 16 Pin - 5
- Transistor (NPN 2N2222)- 7
- Resistor (330 ohm) - 39
- Resistor (1 Kilo ohm) - 7
- Perfboard / Zero PCB - 1
- PCB Wire - Single-stranded
- Voltage Regulator IC (7805) - 1
- Capacitor - 470 uF - 1 & 100 uF - 1
- DC Female Jack - 1
- 9V DC Adapter - 1
Tools Needed
- Multimeter
- Soldering Iron
- Solder
- Soldering Flux (I prefer using solder with flux)
- Desoldering Wick - might be needed
- 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
Schematic click here
- Arduino Code click here
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
- 7805 Datasheet
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.