Matrix 10x20 HT16K33

Hi,
i would like to make a big 10x20 led matrix using HT16K33 chip.
i know that with 1 chip you can connect 8x16 leds
I don't understand how to connect them all with 3 chips or just 2 is enough
I found this pattern on the net, is it correct?
Uploading: image.png...

regards

It might be possible this way, but it would be very difficult to wire a matrix like that and very difficult to write code for a matrix like that.

I would consider using 3 HT16K33 boards. 2 boards would drive 8x10 and the third board would drive 4x10. Or perhaps 2 boards driving 7x10 and 1 board driving 6x10.

1 Like

I don't think the software would be difficult to write at all. And anything that saves hardware is something to strive for!

Let's see it then. :slight_smile: Just a setPixel(x,y)...

Multiple HT16K33 modules operating on the same interface, often require a 100uF or similar value capacitor between Vcc and ground, to suppress crosstalk between the scan currents. Without it, the displays can "wobble".

1 Like

I'm perfect, I'll try this.
but the three chips should not be connected to each other...
all three go to the arduino Nano

great, yes I thought about that

Not as difficult if you use a buffer for all the manipulations, then an output routine that handles writing that buffer out to the HT16K33s.

ideas of how to compile the software?
how do I handle the graph according to my needs

All 3 chips will be connected to each other and to the Nano by the i²c bus (SDA+SCL).

Each HT16K33 board will have some pads which you need to solder to give each board a different address on the bus. This allows the Nano to communicate with each board individually.

E.g.
Board #1: leave all pads unsoldered. The address will be 0x70
Board #2: connect "A0" pair of pads with solder. The address will be 0x71
Board #3: connect "A1" pair of pads with solder. The address will be 0x72

1 Like

Whether you use 2 or 3 boards, follow the advice from @david_2018. Make a buffer (probably an array of unsigned int or long) that represents the whole matrix. Have your code update that buffer as required and then calls a function which updates all boards from the buffer.

Maybe not for you or me, but I think @Osiride82 may not have as much skill or experience. When we give advice to a beginner, we must sometimes balance cost against simplicity.

1 Like

A simpler option might be to use addressable LEDs

1 Like

abstract your hardware wiring from the logical layout.
Meaning - set up a logical grid index for example bottom left as 0, top right as 199 and make a function which takes a (locigal) index and converts it to the chip number an matrix position within this chip.

so you could handle all your output logic in a clean 0 - 199 grid and you have one central function which does the rerouting to your hardware layout.

If you prefer a x-y system, no problem, hand over the two parameters x,y to the function and let the function calculate the chip number and position within this chip.

1 Like

Correct.
But the data sheet says that you get a different number of address lines depending how many pins the HT16K33 has.
There are three versions of the HT16K33 with 20, 24 or 28 pins. You need to use the either the 24 or 28 pin versions to allow you any address flexibility. The 20 pin version has just a fixed I2C address.

The HT16K33 is a common acthode driver. The 16 segments sourced (driven high) and the 8 commons are sinked (sunk?), that is driven low. For your LED symbols, that means that the cathode is then top left and the anode bottom right.
image

Provided your allocation of leds to chips/pins has some pattern to it, which in the examples shown, it clearly does, then defining an canvas (X*Y pixels) and a mapping function as already mentioned would seem to be the simplest approach.

thanks to all for the answers, they are good advice for the development, I am currently designing the pcb, I will update you on the development soon

yes, I have to get 3 of 28 pins

Shouldn't you prototype the circuit first?

That seems like asking for trouble. I would make it on strip board first, using sockets for all ICs.

In fact unless you want to make more that say 10 I would stick to that. With a PCB there are so many other considerations of layout and decoupling to consider which can also trip you up. It is best to know your circuit is sound to begin with.