How can i read a charieplex with arduino

I need to read a seven segment that is drived by chalieplex l dont know how please help me thanks

You can do it this way.

2 Likes

I moved your question to a more appropriate forum section because what you posted is not an introductory tutorial. Do not post in that forum section again. Please read the forum guide in the sticky post at the top of this forum section before you break more rules.

Why do you want to read the display? How do you know that the display you want to read is charlieplexed? Please post a link to details of this display. Reading a 7-segment display is difficult, whether it is charlieplexed or regular multiplexed. It is not a beginner project.

Which way

Which display?

A 3 digit 6 pin chaliplex seven segment

Please provide more information as strongly urged in the forum guidelines:
https://forum.arduino.cc/t/how-to-get-the-best-out-of-this-forum/679966

In case you are Googling it, the spelling is "charlieplex".

What do you know about charlieplexing? What do you know about the display? I guess it can be done but through a lot of pain. I’m not interested in trying.

I suggest that you look at the schematic of your device. If you don't have one, get your multimeter out and start measuring so you can get the schematic.

Once you have the schematic you can decide how to approach your requirement.

I have done a similar project ages ago (although it did not use charlieplexing). I can't remember the exact details but I did intercept the signals that went to the driver IC and used that.

Charlieplexing would not be used to drive a multi digit seven segment display, it would be straightforward multiplexing.

In theory this is simple, you put a resistor in series with each segment and one in each of the common lines. That is either the cathode or anode, because multiplexed displays are either common anode or cathode. Across each of these resistors you put one input of a comparator, with the other input wired to a suitable voltage derived from a voltage divider. One voltage divider is sufficient for all the comparator inputs.

The output of the comparator should be wired each into a separate pin, make it an input and then enable the internal pull-up resistors. Then you take a fast look at all the common inputs using port addressing and when you see one change get the state of the segments, again by direct port addressing. And use a look up table to convert the segment pattern to a number.

When you have gathered a change from each common pin you have all your numbers for your reading.
Note this only works for LED displays not LCD. I have done this process many years ago to convert a multiplexed output from a DVM chip that was meant to drive a multiple digit DVM. But this was done for a project on the BBC micro computer some time in the 80s so I have not got any example code that would help you.

As you can see it is not a beginners project and you would probably need an oscilloscope to be able to see what sort of system you have.

Thanks my dear friend

You say this but

these displays are charlieplexed

Internally, I guess?

no, they are simple 7 pin LED displays with over 40 segments




last one has more segments so more pins, but same principle

Got a datasheet? Charlieplexing would require separate cathodes for each group of anodes, which seems unlikely.

I would think that detecting the hi-impedance states needed for charlieplexing would be pretty difficult.

Not really, my data sheet was a piece of paper I wrote what combination of + and - lit what segment, I can show you that if you want

The problem with reading Charlieplexing is that all but two of the pins are floating at any time. My best guess at a method would be to connect all six pins to a port on the Ardiuno. If you use a Nano, pins 2-7 would be good because they are all on PORT D. I would then turn on Pin Change Interrupts for those six pins and have them all go to the same ISR. Each time any pin changed, record all six in a buffer of at least 30 samples (6-pin Charlieplexing can drive 30 LEDs). Better yet, 60. Look for patterns. Eventually you will be able to determine which of the 30 segments each of the 64 patterns represents. Because most of the pins are floating at any one time, naturally there will be more than one pattern per segment. Once you figure out which segments are lit you can decode that into the three characters on the display.

i can't find my data sheet but did keep this for a 3 dig 6pin display

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.