Three transistors, three LEDs, one lit at a time, and nothing that runs code. No Arduino sketch, no 555, no microcontroller. Power it and it does the thing. Everything below is what you need to build the version I last measured: v4.
Two transistors facing each other will blink. That is the oldest trick in hobby electronics: each one's collector holds the other one's base down through a capacitor, so they take turns turning each other off. Add a third and you get a ring.
The trick nobody tells you is that all three base resistors must go to ground, not to the positive rail. Wire them to positive and three stages settle into two lit and one dark, with the dark one walking around. Wire them to ground and each LED turns on as the one before it turns off. The whole difference is which end those three resistors are plugged into. I simulated both to be sure.
| Qty | Part | Marking / note |
|---|---|---|
| 3 | 2N2222A or 2N3904 | TO-92, E-B-C left to right with the flat facing you. Same pinout for both; 2N2222A just handles more current. |
| 3 | LED, any colour | Long leg is the anode. One red/orange/yellow is happiest on 5 V; blue and white want more. |
| 3 | 1 kΩ collector resistor | brown, black, red |
| 3 | 10 kΩ base resistor | brown, black, orange |
| 3 | 100 µF electrolytic | 16 V or more. The stripe marks the negative leg, and the negative leg goes toward the base. |
| 1 | breadboard | 40 columns is enough. 63 is comfortable. |
| ~20 | jumper wires | 18 for the circuit, 2 for power. |
| 1 | 9 V battery + clip | or 5 V / 3.3 V off an Arduino. See the note on power below. |
Substitutions that work: 560 Ω or 470 Ω for the 1 kΩ (LEDs get brighter, nothing dies). 47 kΩ for the 10 kΩ (blinks much slower). Any 100 µF µF-ish cap between 10 and 1000 will shift the speed, not the logic.
Not a clean third each. A third would be 0.51 s. What actually happens is 0.44 s on, 0.07 s of everything dark while the next cap comes up to threshold. That gap is the mechanism, not a defect, and it is why the three LEDs never overlap.
9 V is what the simulation used: about 15 mA per LED, so a battery gets warm-ish and lasts a long time. It also runs fine on 5 V or 3.3 V. The LEDs get dimmer and the rate barely moves, because the timing is set by resistance times capacitance, not by voltage. On an Arduino's 3.3 V pin, remember the whole pin can only give about 50 mA; two LEDs taking turns at roughly 8 mA each is fine, a third load on that pin is not.
Every tutorial says the period of this circuit is 2.2 x R x C, or 0.69 x R x C per half. With 10 k and 100 µF that predicts 1.38 s. The simulation measures 1.27 s. It is not a rounding problem, it is about 10%, and the cause is worth knowing because it is the difference between doing the arithmetic and measuring.
0.69 comes from assuming the capacitor starts a half cycle charged to the full supply, so the base begins at −9 V and has to climb to about +0.6 V. It does not begin at −9 V. The collector it is tied to cannot reach +9 V either: the LED sits above it, so the collector parks at 7.46 V. When that collector falls, the cap yanks the base down by the size of that fall, and the base lands at −6.66 V, not −9 V. Less distance to climb means a shorter half cycle.
The honest constant is k = ln((Vcc + |Vbase,min|) / (Vcc − 0.62)), where 0.62 V is roughly where the base turns the transistor on. Plug in the numbers the simulation actually shows:
| Load per branch | Collector high | Base kicked to | k | Half cycle predicted | Cycle measured |
|---|---|---|---|---|---|
| 1 k + one LED | 7.46 V | −6.66 V | 0.63 | 0.63 s | 1.27 s |
| 100 Ω + two LEDs in series | 5.91 V | −5.10 V | 0.52 | 1.04 s | 1.05 s |
Two things fall out of that table. First, the constant is not a constant, it moves with the LED. Second, the LED's forward drop sets the speed as surely as the capacitor does, which is why swapping in a different colour can shift the timing more than you expect. If you want to reproduce the second row, drop the collector resistor to 100 Ω: two LEDs in series with 470 Ω starve the branch until the LEDs barely conduct, and that run is not the same experiment.
Corrected on the page 2026-11-07. The earlier version of this page stated the cycle time without explaining the constant; the circuit did not change.
Every symptom below has one cause family. Work down the list in order; the first two are what actually go wrong.
| Symptom | Most likely cause | Fix |
|---|---|---|
| All LEDs sit steady. Nothing blinks. | A capacitor is not actually in the circuit. Both legs landed in the same column, so they are shorted by the board's own strip and the cap is a wire. Second most common: cap in backwards. | Pick up each cap: its two legs must be in different columns. Then check the stripe is on the base side. |
| Nothing lights at all | LEDs in backwards, or the 1 k/LED chain never reaches the +9 V rail, or the emitters are not on the ground rail. | Any LED whose anode sees +9 V through its 1 k will light when you short the transistor's collector to ground. Test that first. |
| Two lit, one dark, and the dark one moves around | This is v1-v3 wiring in a v4 shape: the three 10 k base resistors are on the positive rail. | Move all three 10 k's to ground. Nothing else changes. |
| One LED bright, the other two never | That stage is saturated on. Its base is held high, usually a 10 k to +9 V on that one transistor only. | Check that one base resistor's far leg goes to the ground rail, not the red one. |
| Blinking too fast to see clearly | Cap value too small. 100 µF gives roughly the numbers above. | Go up: 220 µF or 470 µF is about 2x and 5x slower. Or the base resistor up to 47 k. |
| It blinks, then slows down and stops after a minute | Battery sag, or the base current is too small to keep the transistor hard on. | Fresh power. If it happens on a bench supply, the base resistors are too big: about 80 µA of base current at hFE 200 cannot switch 16 mA of LED with any margin. |
| One LED holds much longer than the others | Mismatched base resistors. On this topology a stage's on-time is set by the next stage's base resistor, so one odd resistor shifts two steps. | Match all three. Measure them, do not trust the bands. |
| Version | What changed | What it bought | What it taught |
|---|---|---|---|
| v1 | Two transistors, two LEDs, 10 k bases to +9 V, 100 µF cross-couples. | A working blinker, built and photographed on a real board. | It ran. A cap leg not straddling the centre gap looks exactly like a dead circuit. |
| v2 | One 47 k in series with the common base feed, and a jumper to short it. | 5.6x slower, 1.2 s to 6.8 s per cycle. | Speed is roughly R x C per half cycle (about 0.63 x R x C, see the timing section). And it has a ceiling: push it to 100 k and the transistors can no longer saturate, so it stops switching cleanly. |
| v3 | One half 47 k, the other 10 k. | A 4.5x on-time split, the uneven "police" look. | Your long on-time is set by the other half's base resistor. Asymmetry is not local. |
| v4 | Third transistor, third LED, third 100 µF. Three 10 k from the bases to ground. 1 k collector resistors. | Three-way chase, one at a time, 1.52 s per lap. | Two lit and one dark is what you get with three stages and pull-up bases: a low collector holds the next base down through its cap, so whoever has a low neighbour is off. Ground the bases and the cap only fires on the edge, so the ring takes turns properly. |
This is exactly what was simulated. Run it with ngspice -b v4.cir and you get the trace above.
* BENCH 001 v4: three-transistor ring chase Vcc 1 0 9 R1 2 0 10k ; base 1 to ground R2 3 0 10k ; base 2 to ground R3 7 0 10k ; base 3 to ground Q1 4 2 0 QN Q2 5 3 0 QN Q3 6 7 0 QN D1 1 10 DL ; LED anode at +9, cathode into 1k Rl1 10 4 1k ; 1k into collector 1 D2 1 11 DL Rl2 11 5 1k D3 1 12 DL Rl3 12 6 1k C1 4 3 100u ; collector 1 to base 2 C2 5 7 100u ; collector 2 to base 3 C3 6 2 100u ; collector 3 to base 1 .model QN NPN(IS=1e-14 BF=200) .model DL D(IS=1e-14 N=1.8 RS=10) .options method=gear reltol=1e-3 .ic V(2)=0.7 V(3)=0 V(7)=0 V(4)=0.2 V(5)=8.4 V(6)=8.4 .control tran 0.002 10 0 uic wrdata v4.txt v(4) v(5) v(6) .endc .end
Two gotchas if you try to reproduce this. The .ic line is not optional: without an unbalanced start the ring sits at a symmetric operating point and never breaks symmetry, so it looks like a bad topology when it is only a missing nudge. And count threshold crossings yourself rather than trusting .meas, which miscounts near the switching point.
Part four, whenever it happens: a speed control that does not need a pot, then a photo of v4 on a real board. If you build this before I get that photo, yours is the one that counts.
Written from the bench, simulated before written up. Numbers measured, not estimated. This page has no trackers, no email capture, and no product behind it.