Bike taillight with a twist using Arduino

Let’s face it. Taillights are boring.

At best they go ‘blink blink – look at me! I’m blinking – woohoo’ all the time. And they’re always red. Very creative. We can do better than that, maybe not much, but still better than just ‘blink blink’. I was riding my bike during new year celebrations and people liked it, and not all of them were drunk 😉

The rest is pretty straight forward: 2x AA cells, boost converter for 5V, some RGB LEDs, the obligatory micro controller, custom printed circuit boards from BatchPCB, perfboard and the usual soldering gear.

Arduino Bike taillight with a twist

Step 1: Main schematic

Really nothing special. If you know how to wire up an AVR chip on a breadboard or an Arduino on a breadboard, if you like that better, you won’t have any problems with this one. I used KICAD for designing the schematic and the printed circuit boards. KICAD is open source and as opposed to eagle, which has a free (as in free of charge) version as well, there are absolutely no limitations in the size of boards you can make. You too get gerber files that work with any fab house you want. E.g. BatchPCB had no problems with them.

In the schematic you’ll just find the cpu, the LEDs, a few resistors and capacitors. That’s all. There’s a few headers too. The boards have an ICSP header for flashing a bootloader and a 6pin header for convenient serial upload. The last 2 headers are mirrored and contain power, I2C and two more GPIO/ADC pins.

3 GPIO pins with 3 current limiting resistors are used to supply current to all 8 anodes of a single color. Individual LEDs are turned on or off using 8 GPIO pins to drive the cathodes. Depending on the type of operation the LEDs are either multiplexed (PWM for more colors) or fully on (higher brightness).

Some info on the packages I used for this board:

– ATmega168-20AU: TQFP32 SMD
– LED: PLCC6 5050 SMD
– Resistors: 0805 SMD
– Capacitors: 0805 SMD, 1206 SMD


Step 2: Dealing with the LEDs

I won’t go into great detail here, as this has been covered elsewhere numerous times. You just have to make sure you don’t exceed the micro controller’s maximum output current per pin (about 35mA or so for AVRs). The same is true for the LEDs current. As you can guess from the picture, I used one of the SMD LEDs to figure out the resistor ratio to get well balanced white light. There are three 2k something potentiometers on the other side. That’s all. In this case I ended up with resistors ranging from 90 to 110Ω, but that depends on the kind of LED you get. Just use a standard multimeter to determine the LED’s forward voltages V_led and you’re in business.

Using Ohm’s Law, you can calculate the values for current limiting resistors for small LEDs like so:

R = ( V_bat – V_led ) / I_led

I_led should not exceed any current limit of the parts you use. Also this approach is only good for low current applications (maybe up to 100mA) and should not be used for Luxeon or CREE LEDs! The current through LEDs is temperature dependent and a constant current driver should be used.


For more detail: Bike taillight with a twist using Arduino

Clip to Evernote

Leave a Comment

(Spamcheck Enabled)

Read previous post:
Mounting a Smapler v0002 step by step

A Smapler is a circuit dedicated to the production of generative sound created by David Cuartielles and Ino Schlaucher from...

Scroll to top