1. CPU Support

Solder the CPU support hardware from lowest profile part to highest. That way when the board is flipped over, the parts are pushed flush against the board.


RESISTORS: Start by soldering the resistors. The polarity (orientation) does not matter.


  • R22 10K brown-black-orange
  • R31 10K
  • R17 10K
  • R18 10K
  • R19 10K
  • R23 10K
  • R25 1K brown-black-red
  • R26 1K
  • R20 4K7 yellow-violet-red
  • R21 4K7
  • R33 680 blue-grey-brown
  • R30 100 brown-black-brown
    Click to enlarge.

U5 jumper (zero ohm resistor): There is a spot on the circuit board for a voltage regulator: U5 7805. Since we use a 5V wall wart, this part is unnecessary. You will jumper over this part by soldering in a small wire between pin locations 1 and 3 (the outside holes). We used a scrap resistor lead. (See below.)

D3 jumper (zero ohm resistor): This diode slot is to protect against reverse polarity power supplies, but comes at the expense of a fraction of a volt. If you use the included 5V power supply, this diode is not used. If you are using a higher voltage supply with the 7805 regulator, then please use this diode as the fraction of a volt cost is unimportant with a higher voltage supply.


DIODES: Next, install the DBG control diode. Orientation does matter on this part, so be careful! The positive lead of a diode is called the anode and the negative lead is called the cathode. A stripe indicates the cathode lead and must correlate to the stripe on the board.


(Optional) D1 1N4148: This is a fast-switching diode used to flicker the DBG LED when the a new program is loading. Since the row drivers use the pin as the program load flicker, the DBG will be on whenever the clock is in use.  You can safely omit this diode to preserve the independent DBG LED funtionality. 


This diode looks like a brown glass bead with a black strip on one end indicating the cathode. Make sure this strip is aligned with the white stripe on the PCB.

D3 1N4007: This diode IS NOT USED when ClockTHREE is powered using the supplied 5V Wall Wart. This was intended as a polarity protection diode in case of a wrongly connected (reverse) input supply. Connect a jumper / zero ohm resistor instead.


FTDI Header: This right angle header has a low profile and is easiest to solder before the taller parts are in. Apply a small amount of solder on left and right pins, then check that the plastic is flush against the board, reheating the solder if necessary. Then go back and solder the middle pins.


  • P7 : 6-way male header, right angle, FTDI


SMALL CAPACITORS: These come is two styles, brown ceramic labeled 104 and white plastic labeled 1J100. Polarity does not matter on these parts. 

The C7 capacitor is used for auto resetting ClockTHREE for programming (which is nice).  The only problem with this is that plugging in the USB ->serial connection triggers the auto reset which messes up the ClockTHREE GUI interface.  To program ClockTHREE without C7, you have to press reset instead.  This is kind of a pain, but is not really that big of a deal.  If you don't think you will use the PC interface, you can include C7.

C7 is not recommended.


  • C3 100nF
  • C6 100nF
  • C7 100nF [Optional (not recommended, see above discussion)]
  • C9 100nF


IC SOCKETS : All of the large ICs have sockets. This avoids the risk of having to de-solder an IC (ick) and also eliminates the possibility of overheating the IC. Technically speaking, polarity does not matter with the sockets (although the IC's themselves have polarity). There is, however, a preferred orientation. The small notch on one end indicates the pin 1 slot for the IC. The correct orientation will reinforce the correct orientation when you insert the IC.

GOTCHA!!! BEFORE YOU SOLDER, check that every leg has come through the PCB.  Trust me, you don't want to  notice twenty pins in that a leg got bent. 


  • U1 12x2 pin wide (600 mils) : Row Driver, rowBoB 1
  • U2 12x2 pin wide (600 mils) : Row Driver, rowBoB 2
  • U4 12x2 pin wide (600 mils) : Column Driver, 74HC154
  • U3 14x2 pin skinny (300 mils) : CPU, ATMega


BUTTONS, RIGHT ANGLED : These buttons pop into place with a small squeeze on the back pins.


  • Sw1 : Inc
  • Sw2 : Dec
  • Sw3 : Mode
  • Sw4 : Reset
  • Sw5 : Enter


SPEAKER (Optional) : The polarity matters on some speakers. If there is a plus sign on the speaker, it must coincide with the plus sign on the board. The board will accommodate two different speaker pin spacings. Use the bottom pin and either of the top two pins, whichever is a better fit.  The code does not support a speaker at this time.  


  • SP1


POWER JACK: Only fits one way.


  • J1 V_IN


LED's : Use any color you like. One each of red and blue LED is included in the kits. Polarity matters. The long lead is the anode; the short lead is the cathode. The flat side on the silk screen image and LED indicate the cathode (short lead).


  • D4 PWR
  • D2 DBG

You can do a mini-smoke test after this LED is installed. Power up the board by plugging in the wall wart into J1. The LED should light. If not check the connectivity of all components in the power LED circuit.

J1+ -> D3 -> U5 jumper -> R25 -> D4 -> J1-


RESONATOR, 16 MHz: Polarity does not matter. This is a small three-pin part in either blue or brown. Solder in either orientation.


  • X1


HEADERS and SOCKETS and LDR : There are several of these around the board. The LDR is soldered so that it can see out the bottom of the board.  Keep it high enough to stay out of the way of the buttons.


  • CD1: 4-way female header, straight, rtcBoB
  • CD2: 4-way female header, straight, rtcBoB Insert CD1 and CD2 into the female headers on rtcBoB then solder them into place. This ensures the alignments are copatible.
  • K1: 3-way male header, straight, PWR_SEL
  • K2: 3-way male header, straight, LED_ENABLE
  • LDR, light sensor (OPTIONAL, not included, code does not support LDR at this time).

After completing K1 (PWR SEL) and K2 (LED_ENABLE), install a jumper on the right two pins of K1 for USB power, and the top two pins of K2, to isolate the LED array for the time being. We will change both of these arrangements before the clock is complete.


ELECTROLYTIC CAPACITOR : These are polarized capacitors. The negative terminal of the component is marked and also has a shorter lead.

TRANSISTOR : Transistors are polarized too. The flat edge of the transistor goes with the flat side of the white silkscreen marking. Spread out the leads to install it. Either middle pin can be used, but we find the center hole easier to solder to than the offset hole.


  • C8, 100uF, 16V / 63V
  • Q17, 2N5401


Smoke test: Insert remaining ICs (U3 and U4).  Bend the leads a tad so that they are parallel and will fit into the socket.  Orientation matters.  The pin-1 end is marked on the board with a small rectangle on the silk screening.  This should correspond with a notch in the chip. 

Plug the wall wart in to the power jack.  See if PWR LED comes on.  If it does, put a jumper over the left two pins of PWR SEL header.  If any ICs get hot, unplug the power.  If there is no smoke, congratulations, you've passed the smoke test.

Step 14

Blink test:  From Arduino, upload the File->Sketchbook->libraries->ClockTHREE->Blink.pde.  This is just like Blink.pde that comes with Arduino except pin16 is used instead of pin13.  If you chose the option to include D1, either pin13 or pin17 will work.

See HOWTO set up Arduino.

Step 15
From Arduino, upload the File->Sketchbook->libraries->ClockTHREE->Test09_rtcBOB.pde.  This takes a minute to set and unset the alarm on the real time clock.  It verifies that rtcBOB is working.

After the program is loaded. start the serial monitor at a baudrate of 57600 (the default for all ClockTHREE programs).    You should see a series of lines that look like this:
rtc time:946685834 =? Arduino time:2000/1/1 00:17:14 1 =? alarm time:00:17:14 1
rtc time:946685836 =? Arduino time:2000/1/1 00:17:16 0 =? alarm time:00:17:16 0
rtc time:946685837 =? Arduino time:2000/1/1 00:17:17 1 =? alarm time:00:17:17 1
rtc time:946685838 =? Arduino time:2000/1/1 00:17:18 0 =? alarm time:00:17:18 0
rtc time:946685839 =? Arduino time:2000/1/1 00:17:19 1 =? alarm time:00:17:19 1
rtc time:946685840 =? Arduino time:2000/1/1 00:17:20 0 =? alarm time:00:17:20 0


After 60 seconds you should get this prompt:
Type R to reset time to 2011/2/23 18:26:16
Enter "R" into the input line in the serial monitor.  You will be told to disconnect the power.  This double checks the battery backup.  This time when it starts you should see the new time in the serial promt (not Jan 1, 2000).

rtc time:1298485579 =? Arduino time:2011/2/23 18:26:19 0 =? alarm time:18:26:19 0
rtc time:1298485581 =? Arduino time:2011/2/23 18:26:21 1 =? alarm time:18:26:21 1
rtc time:1298485582 =? Arduino time:2011/2/23 18:26:22 0 =? alarm time:18:26:22 0
rtc time:1298485583 =? Arduino time:2011/2/23 18:26:23 1 =? alarm time:18:26:23 1

It works!

Step 16
Test Buttons.

From Arduino, upload the File->Sketchbook->libraries->ClockTHREE->Test15_Buttons.

Pull up the serial monitor and press the buttons one at a time and in various combinations.  Use the following decoder ring to see if they match up to your presses:


Next: RowBOBs