I'm designing a driver / controller board for 8x8 RGB LED Matrices that then can be daisy chained to e.g. make an 16x64 Matrix or so.

So I came up with a couple of designs that I've tested and so on,.. but as I wanted to purchase all the LEDs ( in packs of 1000 ), I realized that my designs all require either common anode or common cathode RGB LEDs...

I was wondering if there is a way to switch between two "modes".

One for using common anode LEDs and one for common cathode LEDs.

I've sketched this circuit that is using two opto-isolators and a pin strip ( 3 pin ) with a jumper as a switch. ( I could also use an on-on-switch instead )

enter image description here

If I bridge the top and the middle pin, I can use common anode RGB LEDs. If I bridge the bottom and the middle pin I can use LEDs with common cathode. Can't I ?

I am a Software engineer / developer, so bare with me if this is totally wrong and please tell me the correct / better way of achieving this functionality.

Thank you.


Here's a second image that shows my idea in a better way.

enter image description here

Between the LEDs ( ! ) and that "mode switching circuit" there will be transistors that are switched via decoders and shift registers.

enter image description here

The Matrix "module" will only contain the transistors and the 3 to 8 decoder with an enable bit ( latch ? ) and all the other parts will be on the driver board, shared by all the other matrix modules...

enter image description here

Much shown, but I hope it helps to imagine / understand my original problem / question.

Thank you again.

  • \$\begingroup\$ Based on your other questions, it looks like you are considering an ATTINY processor. Have you considered eliminating the MUXes and shifters and instead connecting the LEDs directly to processors? The ATTNYs have bi-directional output ports so you could select which way to drive connected LEDs via software. The ATTINYs are likely as cheap as, if not cheaper than the chips they would replace and be much more flexible. \$\endgroup\$
    – bigjosh
    Feb 19, 2015 at 2:06

1 Answer 1


enter image description here (source)

When looking at the connections for common Cathode / Anode LEDs you can see that once you connect the common node appropriately (i.e. Vdd/Gnd) then you just need to drive the RGB lines High for Common Cathode and Low for Common Anode to illuminate the LEDs.

UPDATE: If (as OP states) you're prepared to wire-link the common node to Vdd or Gnd then you just need to make the RGB drive signals selectable positive/negative logic (i.e. 1= ON or 0=ON).

You can do this easily with an XOR gate or a MUX.


enter image description here

Here the MUX selects line selects A or !A to so you can drive common Cathode / Anode respectively.

Looking at the XOR version you can see B is inverted if A=1 .

(source) enter image description here

  • \$\begingroup\$ I want my driver board to be able to deal with both LED types wired the same way. ( The connections for the LEDs will be the same ) I've edited and uploaded a second image that shows what I actually want to do. \$\endgroup\$
    – Ace
    Feb 17, 2015 at 16:42
  • \$\begingroup\$ Please see my update. I think this answers your question, giving you a selectable way of driving either type of LED. \$\endgroup\$
    – akellyirl
    Feb 17, 2015 at 17:09
  • \$\begingroup\$ Thank you for that quick answer. But i didnt underst that methode somehow. Would you mind to edit my drawing(s) by implementing your solution ? That would really hell me. Also do you think that my design approach for the driver is OK (good / bad ) ? \$\endgroup\$
    – Ace
    Feb 17, 2015 at 17:23
  • \$\begingroup\$ Also I should have mentioned that I want the switching to be mechanically. There shouldn't be any changes required in the hard coded software. \$\endgroup\$
    – Ace
    Feb 18, 2015 at 9:18

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.