Common Cathode vs  Anode in design of LED display

Hello everyone,

I have been enjoying my time reading the wonderfully informative posts on this forum. I am a proud new owner of an ArduinoMega. I have had a great time with it since its arrival on Saturday. I am amazed by the amount of information and code available for it.

I am thinking of creating a custom designed led display. It would be similar in concept to a 7-segment display with a small PCB and smt LEDs. My question to the group is this: Would it be more beneficial to make the display a common cathode or a common anode? Does it really matter? My other hope would be to string up to 6 of these together to create a clock interface (HH:MM:SS). So if an arduino couldn't drive all of the leds then I would need to add some sort of multiplexing IC. I could see that in one scenario I would need to drive both the data pin and the ground pin to be HIGH in order for no voltage to be created and thereby deactivating that segment. I think this would require more current to flow through my circuit. This leads me to believe that I should design it so that I only need to set the pin HIGH to create the voltage difference. Am I correct in my assumption?

My current design has 10 leds in it and would have 11 pins. So I don't think a BCD->7 Seg chip would work for my plan.

My knowledge is based more in the software and mechanical side of things and not so much in the electronics side. (Think calculus based physics, but no actual electronics classes)

Thank you for your time and please keep up the fantastic work everyone!


A common anode display is more common as many LED driver chips expect to sink current (from the LED cathodes) rather than source current.

If you want to connect it directly to your board, You would tie all the anodes to +5V and each cathode to an I/O pin through a resistor (like 220 ohms or so). To turn an LED on you set the digital pin LOW, to turn it off you would set the pin HIGH or make it an input instead of an output.

I am not sure what you are thinking but:-

I would need to drive both the data pin and the ground pin to be HIGH

You can't drive a ground high, that's why it is called a ground. If you could drive it it would be called an output.

You'll probably want to multiplex the display to minimize the amount of wiring and Arduino pin usage (although you could just do a long string of shift registers in series, since you don't need to update the display very often for a clock).

My suggestion: go shopping for driver chips first, then build the display for the one(s) you like. Years ago, common cathode was more popular, but common anode seems to be more so now.

I have some MC14489s left over from a long-ago project, which are nice SPI-based 5-digit common cathode drivers that I think are still available cheap. I just picked up an SAA1064 that I haven't tried out yet. It's I2C, common anode, that only muxes 2 digits, so I'm hoping it'll be brighter than chips that multiplex several digits.

Somebody posted about the AS1106 a few days ago. It looks like a nice inexpensive 8-digit common-cathode driver, but I haven't tried one out yet.


If you are going to build a shift register-based solution, then you could use either common anode or common cathode, depending on what you have. You could even make that configurable with a jumper.

Thank you all for the responses. I see that I have alot to learn. I will start looking at the chips you all suggested before I build my boards.

Thank you Grumpy_Mike. When I read your response it was one of those “Well duh, that makes sense moments” I appreciate it.

I will post the results of my work.