I have a seven-segment LED module which contains two ‘digits’ pulled from some old circuit board which is really confusing me. Instead of having one ground and 16 pins (one pin for each segment plus decimal), the module has two grounds and 8 pins. Therefore when power is applied to one pin and both grounds are connected, it lights up the same segment of both ‘digits’.
Since all the grounds are tied on the Arduino, I figured I could set pin 13 and 12 as digitalWrite pins, and make them LOW to act as a ground so I could turn on and off ‘digits’ when I want to. That doesn’t work. The problem is that I can’t have one segment powered on one side and have a different one powered on the other. The only solution I could come up with is flashing the LEDs on both sides rapidly so the eye can’t tell a difference. Is there any easier way?
I checked for datasheets and could find none. Sorry for the bad photoshop job.
The only solution I could come up with is flashing the LEDs on both sides rapidly so the eye can't tell a difference. Is there any easier way?
That display is designed to be multiplexed. This is very common.
Flashing back and forth is how they're made to work
Cathodes pick which digit
Anodes pick which segments (shared info across both digits)
If you want to write the number 23, for example, all of the anodes for "3" would turn HIGH but only the cathode of the right side digit turns LOW. Then all of the anodes for "2" would turn HIGH but only the cathode of the left side digit turns LOW (other side cathode goes back to HIGH). It cycles back and forth quickly. No other way to do it with that display.
Default all off is anodes LOW, cathodes HIGH.
The segments are usually labelled A-G, DP or backwards of that. Here's a pic I made when I was futzing around with these things.
For more info, just google for something like "2 digit 7 segment common cathode display". They're all going to be identical.