I have in my car 4 LEDs which illuminate in the instrument cluster depending on the gear the vehicle is in. This is a factory standard setup which I have already run feeds from ready for the next part.

I would like to, using those 4 led inputs, build into my dash board a 7 segment LED display to show which gear the car is in, 1, 2, 3 or 4. I'm not really sure where to start with this but I'm ready to do some fast learning!

  • \$\begingroup\$ The canonical way to display a number on a 7 segment display is with a 4511. No Arduino required. \$\endgroup\$
    – Phil Frost
    May 24, 2013 at 11:31

4 Answers 4


If the drivers for the original LEDs can supply enough current you can do this with a diode matrix: route the current from each of the original LEDs to the segments you want to illuminate when that LED would have been on.

In my experience a high-brightness display will be OK with ~ 1 mA per segment. Details will depend on exactly how the current LEDs are wired (to ground, to power; can you get access to the connections behind the resistors).

In general, my first impulse is to throw a micro-controller at any problem I see. But it in this case that seems ridiculous (especially given the uC-hostile environment).


As you already have the 4 (12v) signal lines you can connect up a 7 segment display using a few diodes. The resistors are a few hundred ohms and are there to limit the LED current. The circuit shown is for a common cathode display. No need for (expensive) micro controllers just 16 small signal diodes and 4 resistors. BTW you could just connect up the 4 outputs to the f (1), e (2), b(3) and c(4) segments to give you a mimic display of the gears (up, down, up across, across down). I would leave the g segment permanently powered to indicate the neutral position.
enter image description here

The alternative circuit enter image description here

  • \$\begingroup\$ Almost... In order to share the current equally amongst all the LEDs that are on for each number, you don't need four resistors in series to the four outputs (1, 2, 3 and 4), but seven resistors in series to each LED (a, b, c, d, e, f and g). \$\endgroup\$
    – zebonaut
    May 24, 2013 at 13:02
  • \$\begingroup\$ @zebonaut - no. Each resistor controls the current through the LED segments. Let us assume a current of 10mA per segment. For number 1 the first resistor will drop approx 10V giving a value of 1k0. For numbers 2 and 3 they require 50mA i.e. a resistor value of 200R. For number 4 it requires 40mA or 250R. Obviously you would use the nearest preferred value. I never stated the values were all the same just that they were a few hundreds of ohms. \$\endgroup\$ May 24, 2013 at 14:12
  • \$\begingroup\$ oops that should be 500R not 1k0 \$\endgroup\$ May 24, 2013 at 14:18
  • \$\begingroup\$ @JImDearden No, you need one resistor per diode to equally distribute current. There's a chance that, in your configuration, one LED will draw slightly more current than another, and thus that LED will pull more current than another LED (since it has no dedicated series resistance to limit it), leading to it drawing more current, etc. See: en.wikipedia.org/wiki/Thermal_runaway \$\endgroup\$
    – Shamtam
    May 24, 2013 at 16:56
  • \$\begingroup\$ I'd be extremely surprised if this happened in practice as the LEDs in the same display are pretty well matched. Should one segment start to draw more current the voltage across it and its respective diode would start to increase and limit this value (negative feedback) as their respective real life characteristic is not a right angle to the turn on voltage. However at the cost of three more resistors (and given I have built and run very similar circuits in the past without the universe being destroyed) if you want to use 7 resistors that's fine by me. Just trying to save a few pennies. \$\endgroup\$ May 24, 2013 at 18:33

As a high-level overview, you'll need:

A way to sense the current gear that the car is in. This could easily be done by reading which of the 4 LEDs (or what combination of them) is lit.

A way to control the LEDs and 7segment. The easiest way, for me at least, would be to build in a small Arduino or micro controller. Lighting/reading one, two, three, or all 4 LEDs, along with displaying a number on the display, can easily be done with an Arduino and a BCD decoder (for the display). The nice part about Arduino is that it can handle 12V on the Vin pin, which simplifies setup. You'll need at least 7-8 digital pins; four for the LEDs as inputs and at minimum three for the BCD decoder (the most significant bit of the BCD code can be tied to 0 if you are only displaying 0-7, but four would be standard).

And, of course, you'll need to tie it all together and hide it nicely in the dash. Overall, I think this is a pretty neat project idea.

  • 1
    \$\begingroup\$ Car electrical systems frequently experience transient voltages far above the nominal: 24 volt spikes on a 12 Volt car circuit are not unusual. Result: Fried Arduino. Source: Personal experience. Description: Not pretty. What one needs is some transient voltage suppression mechanism before Vin, or a device like the Ruggeduino, specifically designed to survive 24 Volt input. \$\endgroup\$ May 24, 2013 at 5:33
  • \$\begingroup\$ Ah, excellent point. \$\endgroup\$
    – Jay Greco
    May 24, 2013 at 13:04

I see 2 simple solutions:

1) Get a PLD with 4 inputs and 7 or 8 outputs and program it to output the signals to light up the appropriate segments.

2) Get yourself a small 8-bit PROM/EPROM/EEPROM and program locations 1, 2, 4, and 8 as above.

Note that this is contingent on the LED signals being strong enough to run the devices, but not too strong to destroy them; if not then you may have to buffer them with a transistor each to normalize them.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.