I'm trying to make a LED Progress bar circuit with 8 LEDs. Basically, the first lights up, then the first and second and it continues till all 8 light up. Working with 5V, would be nice it this could function with even lower voltages.

I have a SN74AHCT138N active low decoder. After which I criss cross shotky BAT42 diodes so that if for example the second is low, the first is low as well.

Afterwards I send the signals through inverters so that I can use those signals to power on 2n2222 transistors which in turn turn on the LED's.

I've managed only to get so that 4 can light up and scroll to the end. I understand that that is because of the diodes the voltage drop becomes too large for the path from 1 to 5 to work for example.

Is there a better way to make this? Or am I doing something completely wrong here?


the circuit

  • \$\begingroup\$ Yes there is a better way, and there are many things that raise questions why it's made like it is. But answering this requires knowledge what circuit is driving the 138 and can it be changed. Is it a MCU and can you reprogram how the pins are used? \$\endgroup\$
    – Justme
    Jun 14, 2023 at 18:02
  • \$\begingroup\$ I'm confused. If the chip is active low then shouldn't D1 - D9 be pointing the other way? \$\endgroup\$
    – Transistor
    Jun 14, 2023 at 18:05
  • 1
    \$\begingroup\$ If you're interested in doing it the "fun" way, why drive a bunch of digital circuits with 555? why not just go "full analog" and let the progress time be based on an RC time constant; switch each LED on in turn with its own 2-transistor Schmitt trigger? \$\endgroup\$
    – Theodore
    Jun 14, 2023 at 19:30
  • 2
    \$\begingroup\$ Try putting the LED's above the NPN collectors, and increasing the resistors from 10 to somewhere between 100 or 1K ohms. 2N3904 NPN's would have lower Vce, which may help. Need VCC and forward voltage of LED's to better suggest resistances. If you don't have enough voltage headroom, you may need a boost converter. On Wikipedia, there's a regulated Joule Thief you can develop if you want more fun. \$\endgroup\$ Jun 14, 2023 at 20:17
  • 1
    \$\begingroup\$ Do you know good old LM3914? \$\endgroup\$
    – Jens
    Jun 15, 2023 at 0:16

2 Answers 2


It is a bit of a cheat, since a high-voltage supply is required to get all eight LEDs to light up. Too bad 74HC138 outputs were not active high (inverters not required then).
Assumed that each LED takes 2V to turn on. This might work for RED LEDs. If they're blue, the high voltage source would need to be even higher, and resistor values R2-R8 would need scaling....it is assumed that each LED gets 10mA.


simulate this circuit – Schematic created using CircuitLab

There are other ways to do this with one ROM (Read-only-memory) chip, but you need a programmer.


I know this question has already been answered and accepted, but can't help offering another solution.

A shifter register is the natural choice to implement a progress bar function. The circuit below uses a '299 shifter to shift a '1' bit to the right (and optionally a '0' to the left to reverse the progress bar) on every clock pulse. The '299 can directly drive LEDs (3-5mA) without transistors.

A negative-pulse on the reset pin resets all outputs to zero.

The accepted answer has the additional feature that any of the 8 states can be directly accessed. This solution only progresses in one direction or the other.

enter image description here

  • \$\begingroup\$ Thank you very much for an alternate solution! \$\endgroup\$ Jun 17, 2023 at 8:08

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.