LilyPad Arduino Binary Clock



Introduction: LilyPad Arduino Binary Clock

LilyPad Arduino Binary Clock instructions!

List of materials:

LilyPad Arduino 328 Main Board - $21.95

LilyPad FTDI Basic Breakout - $14.95

Mini USB cord - $3.95
May already have one of these from a cell phone or camera

LilyPad Power Supply - $14.95
I used the Power Supply for a AAA battery but it only lasts about 4.5 hours. My suggestion is to use the mini USB and a wall charger

LilyPad Slide Switch - $3.95

Three different colored lights: four of one color and six each of two other colors
In my case: Four blue LEDs, Six Green LEDs and Six Pink LEDs - $4.95/5 LEDs

Conductive Thread - $39.95

Picture frame or photo box – I bought mine on clearance at the craft store for around $4.00. The size is 8" X 8"
Make sure there is space between the glass and the back of the frame so your LilyPad board, lights, and battery will fit

Cardstock or Cardboard
Make sure its thick enough that the light doesn’t shine through. I glued a couple pieces of cardstock together to make it thicker
Suggestion: I used cardstock to sew the LilyPad and the LEDs to, but it might be better to use a piece of felt, the paper tends to cut the circuit when moved around.

X-Acto Knife
I used this to cut the numbers out of the cardstock for the light to shine through

Vellum Paper
To cover the number openings so you can’t see the LEDs through the holes

Let's get started!

Step 1: Design and Sew

Create basic front to the clock

To begin with, design what you want the front of your clock to look like. I chose to go with the traditional round look of normal clocks and positioned hours in the top left, minutes in the top right, and seconds on the bottom (I'll get to labeling them later). The reason this is the very first step is because you need to know where to sew your lights so they are positioned under the numbers. Find a font you like and for the numbers and print it out on cardstock. I then glued a purple piece of cardstock to the back so that the light of the LEDs didn't shine through the paper. Using an X-acto knife, cut our the numbers. After all the numbers are cut out, trace them onto either another piece of cardstock or felt (suggested) so you know where to position the LEDs.

Sew the lights and battery to the LilyPad

Using the conductive thread, position the lights on the numbers you stenciled on and sew them to the correct pins on the LilyPad (I included my diagram in the images). Also add the battery and the switch. The negative line can connect all the lights in a circle. I would suggest using come clips or wires of some kind to test the connections of the lights.

Step 2: Programming


The code I used was from the book, "30 Arduino Projects for the Evil Genius" by Simon Monk. But I tweaked it a little to fit my specific design. The first thing you need to do is download the "Time" file from the arduino library.

Make sure "time.h" is in your Libraries folder in the Arduino program.

The switch pin is so you can set the time. When turned off, the clock moves faster so you can run it through the cycle until it reaches the time you want to set it at. When you flip the switch again, it slows down to normal and keeps time from there.

Here is the code I used:

#include <Time.h>

int hourLEDs[] = {4, 3, 2, 1};     //list in order of with 1 first
int minuteLEDs[] = {A4, A3, A2, A1, A0, 13};
int secondLEDs[] = {11, 10, 9, 8, 7, 6};
int loopLEDs[] = {A4, A3, A2, A1, A0, 13, 11, 10, 9, 8, 7, 6, 4, 3, 2, 1};
int switchPin = 0;

void setup()
for (int i = 0; i<4; i++)
  pinMode(hourLEDs[i], OUTPUT);
for (int i = 0; i<6; i++)
  pinMode(minuteLEDs[i], OUTPUT);
for (int i = 0; i<6; i++)
  pinMode(secondLEDs[i], OUTPUT);

void loop()
if (digitalRead(switchPin))  //when switch is activated, time speeds up so you can set time
else if (minute() == 0 && second() == 0)


void updateDisplay()
time_t t = now();
setOutput (hourLEDs, 4, hourFormat12 (t));
setOutput (minuteLEDs, 6, minute(t));
setOutput (secondLEDs, 6, second(t));

void setOutput (int *ledArray, int numLEDs, int value)
for (int i = 0; i < numLEDs; i++)
  digitalWrite (ledArray[i], bitRead (value, i));

void spin (int count)  //spins the lights for each hour
for (int i = 0; i < count; i++)
  for (int j = 0; j < 16; j++)
                        digitalWrite (loopLEDs[j], HIGH);
   digitalWrite (loopLEDs[j], LOW);

Step 3: Finish Design and Put It Together

Finish the front

Once all the programming is done and working, you can focus back on making the front look good! I noticed once the LEDs were functional that you could see the bulbs right through the number openings so I used vellum paper to cover them. Now you can't see the bulbs but the light easily shines through. Also, I didn't want the light shining through the other openings when it wasn't supposed to, so I folded up small tubes out of dark colored cardstock to isolate the lights behind the front.

To make it easy to read which numbers represented hours, minutes, and seconds, I used colored paper that matched the colored lights to label the numbers with an "H", "M", and "S".

Good luck and enjoy!

Be the First to Share


    • For the Home Contest

      For the Home Contest
    • Big and Small Contest

      Big and Small Contest
    • Game Design: Student Design Challenge

      Game Design: Student Design Challenge