Trying to read external device's 4-digit 7-segment LED?

I have an audio switcher (Pyle PLV-SC44) with four inputs/four outputs in my home theater setup. This allows for simultaneous routing of any source to any device (quite a useful piece of equipment).

The device uses a simple 4-digit 7-segment LED to show which source (1-4) is routing to each destination. I'd like to use an Arduino with a 20x4 LCD module to create a much more user-friendly display showing which source is going to each destination. The built-in 4-digit LED is very unfriendly and also is in my stack of AV equipement.

I've spent (probably way too much) time thinking about the logic to determine the number being shown for each destination. I'm thinking that I can determine if it's a 1, 2, 3, or 4 by looking at segments C, G, and F for each of the 4 digits. If F is lit, then it must be a 4. If only C is lit, it must be a 1. if G is lit, but not C, then it must be a 2, etc. As said, I have the logic figured out and I'm confident I can figure out the coding for the logic.

Here's my challenge: How do I read the signal that's going to the 12-Pin 4-Digit LED on the Pyle device? I have determined that I only need to read 3 of the "segment" pins (to determine the digit), but all 4 of the common pins (to determine the position). I can easily disassemble to Pyle device to get to the header connectors used to connect the LED with ribbon cables. I'm just perplexed on how to connect this to the Arduino to read it. Also, what would the coding be to read?

To heighten the challenge, the LCD module I want to use for the "new" display will require 6 digital lines on my UNO, if I'm not mistaken, that will leave 8 available. Of course, all 6 of my analog lines are available, but I don't think that will help.

Thanks for any help to figure this out!

Is your display a multiplexed or direct connected display?


The Pyle audio router's 4-Digit LED display appears to be multiplexed since it's a 12-pin LED unit. From my lay perspective, this increases the complication.

The Pyle audio router's 4-Digit LED display appears to be multiplexed since it's a 12-pin LED unit. From my lay perspective, this increases the complication.

That's an understatement! You would need the data sheet on the driver chip. Of course, it might ALL be imbedded in the display unit.


Really? It's that complicated? I assumed I'd just need to "hijack" the signal going to the LED module.

Assuming that the LED module has the common pinout for 4-digit 7-segment LED, I figure I need to check for voltage going to the pins for segments F (upper left), G (middle), and C (lower right). These would be pins 10, 5, and 4, respectively (again, on a common pinout unit).

I've already figured out the logic required to determine if the digit being displayed is a 1, 2, 3, or 4.

Where I'm hung up is how to determine which of the four Common pins are being addressed so that I can determine which of the four LEDs is being addressed.

Again, assuming that my Pyle device has and LED module with common pinouts, the commons D1, D2, D3, and D4 would be on pins 12, 9, 8, and 6, respectively.

Knowing all of this, and which pins I want to look at, I don't think it's simply a matter of connecting the segment pins (10, 5, and 4) and the common pins (12, 9, 8, and 6) all to their own digital I/O on my Arduino.

Thanks for your help so far, Paul - this has been an invigorating thought experiment.

How would you handle the LED voltage drops? The voltages that you can sample on the LED module are not logic levels.

Honestly, I'm not sure. I wasn't even aware that was a concern.

I'm toying with the idea of using optical isolators (fed by hijacking the appropriate pins on the LED module) and NAND Gate ICs to isolate the voltages and reduce the number of digital inputs needed. I can get the data I need with this approach using only 2 digital inputs per LED digit. (for a total of 8)

I just feel like I'm over-engineering this, similar to rolling down your car window to open the door from the outside -- sure it will work, but it's a lot of trouble. In this context, I'm simply not familiar enough to reach for the handle on the inside of the car.


today's pedantry for accuracy's sake;

the subject should be "Trying to read output to external device's 4-digit 7-segment LED? "

you are bypassing/replacing the 4-digit 7-segment LED so you are not reading anything from it - your eyes do that by looking at the "LED output" :stuck_out_tongue:

I theory/practice you could decode a 4 digit 7 seg LED display.

You have 4 inputs looking at the common pins of each 7seg display.
You have 7 inputs looking at the 7 segment pins on the display.

You interupt on RISING or LOWERING edge and look at which of the 4 commons is HIGH or LOW, depending on the type of display.
Then poll the 7 segment inputs to see what segments are active.

You then know which digit is active and what it is displaying.

Just a thought, as I did it many many years ago to interface a mechanical flip display from a digital display of a temperature controller, only use digital gates etc, no software.

Tom... :slight_smile:

You have 4 inputs looking at the common pins of each 7seg display.
You have 7 inputs looking at the 7 segment pins on the display.

They would not see logic levels due to the LED voltage drops. You would have to disconnect the display.

They would not see logic levels due to the LED voltage drops. You would have to disconnect the display.

Yes, but if it is common cathode, then the segment lines would be Vcc with segment OFF.
When ON if not low enough for a logic LOW, drive a BJT with a couple of forward biased diode in series in the base circuit to get a HIGH/LOW out of the BJT cathode.
If common cathode then the cathode lines will be at near 0V when digit ON, or Vcc - VLED when OFF.
It has posibilities. :slight_smile:

Tom... :slight_smile:
This depends on the OPs display of course.

If you can decipher 1-4 with only 3 segments, you could place 12 LDR’s in front of the display. It’s not that many.

Did your Pyle device come with a remote control? Do you use it? Is it IR? If so, it might be easier to have the Arduino receive the signals from the remote and interpret them, or use the Arduino to replace the remote altogether.

Post a good, sharp picture of the Pyle's circuit board(s)

Maybe the display is connnected to a seperate driver chip (that also reads buttons on the front?) - in that case it would be easier to look at the communication going between that and the main CPU.

// Per.

Really? It's that complicated

The main source of complexity is that you know diddly squat about your display, how it is wired and how it is driven. Without this information it is impossible for us to tell you what to do because there are so many different combinations of how things can be wired on the display, each one needing a slightly different approach.

What you will need eventually is to use pins from the same port so you can read all the signals simultaneously. That is all the common drives and the segments you need.

"I'm toying with the idea of using optical isolators..."

think comparator/s

Thanks all for the help so far.

aarg: I like your idea of just using LDRs. It would certainly be electronically isolated. I have a variety (resistance values) pack on order to experiment. It’ll be interesting to test their sensitivity and potential for bleed-thru. Hot-glued to a clear piece of thin plastic would make the “reader” portable.

PaulRB: Yes, the unit did come with a remote. Better, I have the discrete IR codes for each of the buttons on the remote. This is a clever idea that’s way outside of anything I’d even considered.

Zapro and Grumpy_Mike: I’ve attached images of the LED board as well as the ATMEL AT89S52 that’s running the show. I have little hope of gaining access to the embedded code in any meaningful way.


LED Module - Front.JPG


Pyle unit interoir.JPG

I've attached images of the LED board

Thanks. Where?

(had trouble attaching - Just attached to previous message)

Interesting board.

Care to show a closeup of the actual switching IC's or some part numbers? Maybe it would be easiest just to see which IC's are being enabled by the CPU.

// Per.