I'm doing a LED matrix design and it's a cathode row design. Attached is a picture of my matrix design.

The design works ok and I can show any pattern in the matrix.

The problem is when a leak LED is there, the OFF LEDs also lights up dimly. Even a small leak is there in a LED the remaining row LEDs lits slightly.

How can this happen? How to overcome this situation?

Mostly this situation happens in Green, Blue, White LEDS (3V Ones).

enter image description here

  • \$\begingroup\$ have you tried putting the resistors on the row lines instead of the column lines? \$\endgroup\$
    – jsotola
    Feb 13, 2019 at 5:49
  • 1
    \$\begingroup\$ No I did not do that.Because it may show brighter LEDs when one or two LEDs lit.But when it show all row then the LEDS may get dim.Not sure but I will also check that. \$\endgroup\$
    – Joseph143
    Feb 13, 2019 at 6:22
  • \$\begingroup\$ Your 15R resistors seem very low, especially for the red row. You probably should connect the resistors to the Rows and calculate the correct resistors for the LEDs. \$\endgroup\$
    – HandyHowie
    Feb 13, 2019 at 7:58
  • \$\begingroup\$ What are the specifications for each color LED you are using? You might want to have different current limiting resistor values for each color (I think this is what jsotola and HandyHowie are alluding to). Dimly lit LEDs in a multi- or Charlie-plex design is a phenomenon often referred to as "ghosting." \$\endgroup\$
    – JYelton
    Feb 13, 2019 at 14:50
  • 1
    \$\begingroup\$ Have you turned off all the drivers (statically) and confirmed it is actually leakage? \$\endgroup\$ Feb 13, 2019 at 15:17

3 Answers 3


Usually this sort of thing (ghosting) is caused by timing issues rather than leakage. You should have dead time between changing the column driver and enabling the row driver, and similarly should turn off the row driver before changing the column data. A few microseconds should suffice.

But if it really is leakage then add pullups to the row driver (collectors to +5), 10K is sufficient.

Your 15 ohm resistors are basically doing nothing- the current is being limited by the poor abused 74HC595 outputs. You're probably exceeding their maximum ratings and thus long-term reliability will be suspect.

  • \$\begingroup\$ I have a leakage issue & not a ghosting.I used my analog multi meter to X1K range & check the LEDs in the matrix grid.When it moves both sides then that LED is leak.When I replaced that particular LED, the slightly dim issue is solved. I think I must use pullups as you all suggested and also increase the column resisters. \$\endgroup\$
    – Joseph143
    Feb 14, 2019 at 4:16

Add pullups to "Row A", "Row B", and "Row C". That will keep the undriven rows off.


There are two effects that cause ghosting in LED matrices like the one you designed. The first the the switching time of the row transistor you use, and the second is the parasitic capacitance of the LEDs themself.

Every transistor takes a finite amount of time to turn on or turn off. If you turn off Row A at the same moment you turn on Row B, the reality is that for a very small amount of time, Row A and B are both on as you are waiting for the Row A transistor to fully turn off. In most situations, you will not notice this because it's such a small amount of time. But if you are repeatedly scanning through the rows in order to multiplex an image, this small amount of time becomes an appreciable percentage of the total amount of time any given row is intended to be on, and thus your eye can see it. For example, let's just say the turn off time of the the transistor is 1 micro-second, and you are scanning through the rows such that each row is on for 1 millisecond (which means 125 FPS for an 8-row matrix), that means your unwanted row power due to slow transistor turn off times will be 0.1% of the total time, effectively translating into the brightness level for the ghosting.

There are two ways to deal with this transistor off time. One is to do as previously suggested is to put a small delay between turning off Row and and turning on Row B (and so on for other rows), effectively giving Row A's transistor some time to turn off. Review your transistor's specification to determine how much time you need. The other technique is to use a Schottky diode between the base and the collector to cause a little back current to the base when the transistor is on, preventing the transistor from getting saturated. Preventing the transistor from being fully saturated significantly reduces its off time.

The other cause is parasitic capacitance, though this is more prevalent in RGB LEDs. With parasitic capacitance, the LED build a small charge while it is on, that get's discharged when it is off. That discharge will follow the column to the row that has its sink open (basically, the row that's currently on), thus effectively illuminating the row's LED for a short period of time what the capacitance charge is dissipated. The way to deal with parasitic capacitance is to create a discharge path for each row by adding a 1K to 2K resistor to ground on each row. Yeah, this increases current when the row is on, but not by much. Then, add a small delay between turning off one row and turning on the next row. This gives the row that was turn off some time to discharge the parasitic capacitance it's LED's built up while they were on.

I go into more detail on these topics in my LED Matrix Instructable here.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.