diy 8 x 8 rgb led matrix with controller
Clock, I can make the RGB version of the LED matrix.
Unlike the monochrome LED matrix, the rgb led matrix uses a co-anode or co-cathode LED.
On the one hand, this simplifies the problem to some extent because you don\'t have that much connection and you can control a set of anode (or Cathodes)
Reuse in your LED.
On the other hand, it also means that the rgb led matrix is more than just an extension of the monochrome LED matrix, so I can\'t simply extend the controller to accommodate the extra LED color.
Before I go on, I just want to say that there are many different ways to implement the rgb led matrix, and the method I have taken is by no means the best or the only way.
The method I have adopted is to use the 4 × 74 hc595 shift register to control the switch of the LED.
Initially, this structure can handle the physical structure of the matrix and the controller as a \"recipe\", without any correspondence with the software side of the matrix control.
As a \"conversation\" I will touch on the software and let you know where I am going in terms of hardware.
Later, I will delve into the software that drives the RGB LED matrix.
Parts List all parts are from EBayOptional stuff. This is the other material I use when making the matrix, such as the wood border of the plywood.
You may want to install the motherboard in a different way, so don\'t let me oppress your design id.
When designing the LED matrix, it is a good idea to draw it first, this way you can solve some design problems before putting yourself and your resources into something that might end up hanging in your workshop until you can find the use of it :)
I have several frames in my workshop and they will wither there before I can come up with another project for them.
Supporting the LED matrix is to weld each LED in the matrix into a positive column and a red, green, and blue cathode column (
For co-anode LED).
Arrangement of LED pins for predictable (and functional)
The work of the matrix.
The first picture shows the arrangement of the pins.
My rgb led pinAnode -Green -Blue.
Pins in red, green and blue spread out into three colors (
If you want, or both)fork.
When the anode pin is bent down and then through (
As shown in the following picture).
To do this, I first measured 5mm holes on the plywood.
In my matrix, the holes are 35mm apart and I left a 20mm margin on the board for pasting the border on the panel (
For the sake of beauty, but also to bring some rigidity to the 6mm panel).
I then spray it on the upper part of the panel with glossy white paint to provide a good reflective surface for the light.
The LED is then inserted from the back into the panel and the cathode pins are bent onto their forks.
I put some solid copper wire (
Cable from old phone)
And weld these rows together in their respective colors.
With the welded row, then I bend the anode pin, leaving 3 gaps between the anode pin and the cathode lower layer.
I cut and installed some shrink tubes at the bend so as to prevent short circuit.
Finally, I welded the Post together and heated the Shrink tube to \"set it up.
After welding the rows and columns, the next task is to test each LED and each color to make sure there is no shortcircuits.
Normally, this is seen as two LED lights up when there is only one LED :)
I do have some shorts in my connection, but luckily these are the results of tweezers used to hold copper wires that touch other row/column tracks.
With the LED matrix welding, it\'s time to rest.
I chose to make my RGB LED matrix controller using 74 hc595 shift register.
This handy IC is usually used to control 8 LEDs using Arduino in a very simple chase light circuit.
You can find any number of circuit designs on the chase light circuit on interweb, so I won\'t go into the details here.
The shift register takes a byte of data (
8-bit binary number)
And send each bit to its corresponding data pin (
8 of them).
The shift register can be \"daisy-
Provide the next shift register data input pin along with the serial output.
You should feed a 2-byte (16 bit)
Digital to shift register network, 1st shift register consumes 1st 8 bits, 2nd 8 digits consumes 2nd bits, and so on.
I designed my Daisy.
Shift Register chain to be modular
Interconnect the \"sister\" board, that is, each board has an input and output block of a pin that can be connected together to make a total of 4 boards.
The plates of the cathode are the same as each other, and the only change is that the red cathode plate uses a 330 ohm resistor, while the green/blue cathode plate uses a 220 ohm resistor.
This difference between red and green and blue is due to the difference in the forward voltage of the red element compared to the green and blue elements.
If they all have the same value resistance, the board will have a strong red bias, so balance this by changing the resistance used.
The plate of the anode is different again because it does not have any resistance and there is no output block (
This is the terminal Board).
Another difference is that the anode shift register is not connected to the \"output enable\" pin because it is not used in the output.
The controller will receive a micro-controller with 32-bit binary numbers, which is convenient because the Arduino does not handle> 32 bits directly (AFAIK).
The modularity of the plates also means that I can position them more freely in the case.
One of my controllers
Cutting pieces of plywood and some wooden racks
Cut 12mm x 12mm pine trees from the frame.
There are two purposes for this platform:
Off sticks to the lower side of the matrix and the platform is then screwed into the bracket-offs.
Then connect the linked 74 hc595 module to the platform with 4 M3 nuts and bolts.
I\'m going to make another small size of my atatmegap board to drive the matrix and connect it to the platform.
This task is basically procedural.
It is important to progress in an orderly and patient manner.
I started with the anode (black)
Arrange by measuring each wire in sequence, stripping, coloring and adding Du Pont female connectors at one end, and then soldering the wires to the appropriate row.
When I went, I installed the DuPont connector into an 8-pin DuPont housing and then tested each anode wire as I went.
Because I\'m a little obsessive-compulsive, when I weld the line to the anode row, I make sure there\'s a radiator fixture attached to the row so I can make sure I\'m not going to be working on the LED overheating
This may be a bit overdone as I have not applied for more heat.
My iron was set to 320 degrees for 5 seconds.
The possibility of heat damage is low.
But, again, replacing a burnt LED in this matrix would be a pain in the ass.
After welding the anode row, I continued to weld the columns in red, blue and green.
When I welded the post, I passed through the wire below the anode line so that there was an isolated gasket that separated the anode from the cathode. . .
This, though, does not protect other anode rows.
With the platform, circuit and wire, the gap I need behind the LED matrix is about 30mm.
When I come to build the housing for the LED matrix, I need to take this into account in the design.
I made a small size ATMEGA328P board to control the 4x74 hc595 board and install it on the platform on the back of the matrix.
To connect the ATMEGA328P to the controller board, I made a simple Connector board with a 5-pin Du Pont connector with several pin heads welded to the wire.
This means that the connection to the controller board is as low as possible (
Direct ATMEGA328P plate without welding wire.
I don\'t want to do this because I want to be able to insert my ICSP add-
Program the ATMEGA328P on board, maybe change the sketch, maybe add some other jiggery-pokery (
For example, a WiFi module later).
I have used the PWM/SPI sketch of MadWorm to control the matrix and I am happy to say that it only works at peachy.
The last two images show the 8x8rgb led matrix running with the sketch.
Overall, I am very satisfied with the results.
I hope this statement will be useful to you all.
LED matrix and controller are independent of any software so far.
The matrix does not care about the controller, it will not be disturbed as long as it can send high/low instructions.
The controller does not care about the matrix or the micro controller.
The controller only cares about GND, Vcc (5V)
Data, lock and clock data.
Where did this come from? . .
It doesn\'t care.
This is an example of a typical function abstraction.
Each component manages its own functionality.
I need to make a shell for the LED matrix before I start coding.
The overall design is still an open question.
I build the LED matrix as a fairly simple wall art piece, so the case design I tend to have is a fairly standard square \"shadow box\" frame.
As far as the design goal of the software I run the LED matrix is concerned, initially, I will have simple control where each color is turned on or off.
I will start using pulse width modulation when I work (PWM)
This way I can open each color within a given percentage.
Since Arduino does not allow me to do this via hardware PWM, I have to implement software PWM. . .
Fortunately, there are some really good libraries and examples for me.
Anyway, I will see you soon.