Here's a brain teaser for you:

I have the following 3 digit 7 segment display that has only 6 wires

Experimentally I found out how it works, even though I don't understand it, but anyways every segment is lit by a combination of HIGH and LOW of certain two pins, the combinations are below:

So I tried to make it work, but encountered the following problem (as you can see in the first picture): if, for example, I want to activate the segment that requires pin 5 high and pin 6 low, it also activates the other segments that require 5 to high, because apparently if a digital output is not high, it's automatically pulled to ground, and that's a problem. I tried by setting the other pins I don't use in a segment to high, but then the segments that require 6 low are being activated, so that didn't work.

Other option I have would be transistors or a tri-state buffer, but for that I need all 12 digital inputs of arduino for the two states of each pin of the display.

Hope you understand what my problem is and maybe you have some advice on how to solve it.

Thanks in advance!

Edit: I managed to drive every segment individually using a small delay, and it works if the sketch has only the code for the display, but as soon as I add more code (for the temperature sensor I want to use) it starts to malfunction. You can find the code below.

LE: I managed to make it work by leaving only the display function in the loop and calling every 5 seconds the function for the temperature sensor. It still refreshes the display when it is called, but that doesn't bother me.

Here's the code: http://www.mediafire.com/file/2bs5r8u5rkzpu8g/6w_3D_7S_display.rar

  • 2
    You can emulate tri-state by setting a pin to INPUT. That gives you your three states that you need: OUTPUT & HIGH, OUTPUT & LOW, and INPUT.
    – Majenko
    Mar 23, 2018 at 21:28
  • Sometimes the simplest solution is the best solution, thanks Majenko! Mar 23, 2018 at 21:41
  • The link to your code is not working.
    – VE7JRO
    Mar 25, 2018 at 14:34
  • I changed the upload site, try now. Mar 25, 2018 at 17:00
  • 1
    It’s a hassle because I split the code into tabs and would mean to upload everything individually. Anyways, I solved the issue. Mar 26, 2018 at 15:13

1 Answer 1


What you have is a Charlie-Plexed display like the one in the picture below. You need one more wire than this example because your display also includes the decimal point. If you go through the electrical paths where for each pair one line is driven high, the other is driven low and all other lines are set to input, only one LED at a time will be forward biased.

enter image description here

  • Yes, that’s exactly how i did it, glad to find out how it works, thanks ! Mar 28, 2018 at 4:40

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.