Hard Disk Clock (HDD Clock With Arduino Uno)





Introduction: Hard Disk Clock (HDD Clock With Arduino Uno)

This is a fun project that can be done easily and also cheaply. In this instructable we will explain step by step how to make this beautiful POV clock.

Used material:

  1. Arduino Uno,
  2. Tiny RTC modul,
  3. ULN 2003,
  4. IR diode and IR transistor (used like a sensor, more details in next steps)
  5. 4 pushbuttons (for controling the clock)
  6. TSOP4838 (allows us to control the clock with remote controler)
  7. Temperature sensor (DS18B20)
  8. RGB led strip
  9. Connectors,
  10. Paper,
  11. And of course and old hard disk with working motor.

Step 1: Begining (Disk, RGB, Sensor)

So before we get to the electronic part of this clock I want you to take your hard drive and with a screwdriver to remove the disks from the motor. The most important part of this clock believe it or not is the cut made on the one of the disks. This cut allows us to use POV effect. All this allows us to display the time.

To create this slot we have used the CNC machine. These discs are very difficult to cut, and because of that CNC machine needs plenty of time to get this done. We recomendo that you use a grinder for this cut. On the third picture there is an example how you shuld make this cut. Be sure not to cut entire side of disk, you should leave a few inches as shown in Fig 2.

Before you put the disk back on the motor you shuold mount RGB strip and sensor. Also i noticed that you can better see the time on clock when there is the white backgroud behind the disk.Take a sheet of paper and use one removed disc of the Hard drive to draw a circle. This should help you cut paper precisely. When you do that glue the paper for hard disk

For this clock we have used the photodiode and phototransistor as a sensor. Such a sensor with casing can be found in the printer, so we got one of those from an old printer.The role of the sensor in this clock is to tell microcontroller in which the position cut made on disk is.That way he is able to show time. You should use three wires and solder them for those 3 pins of the sensor.

You have to mount the sensor on the little white fellow marked red on the Fig 5 because the program is made for that position. And to be realistic, this is the easiest place to put him.

Now you can put the disk back.

Step 2: It's Time to Build

So in this step you can download eagle files with PCB. This boards are going to be places up front. One of them is used for powering the sensor and RGB strip. Second board is used for controling the clock with pushbuttons.

First pushbutton is used for entering the programing mode of the clock. After we activate it we can change hours (second pushbutton) and minutes (third pushbutton). When we want to change color of the clocks hand we use fourth pushbutton. Then with second pushbutton we can change color and with third the hand of the clock that we want to change.

You can see how to connect this boards in the eagle files.

Step 3: Connecting the Arduino

So now what you need to do is to connect Arduino. I have put my Arduino on the back of the hard disk as shown in the Fig. All the wires that are coming from the front PCB of the clock connect as explaind in the last Step. In this step you only have to connect tiny RTC modul. You can do that by connecting 5V, GND,SDA, SCL pins.

SDA pin connect to analog pin A4 on arduino, and SCL pin connecto to analog pin A5 on arduino.

It's time to program the Arduino and RTC. You first need to program the RTC. Download the RTC file and upload it to Arduino board. When you do that restart your arudino, start serial monitor and follow the instructions.

When you do that download final.ino and upload it to arduino board, and that is it. You only now have to power the clock and i recomend that you use PSU ( Power supply unit) because you need to power the hard disk circuit (and you need special connector for it) and for the clock you need to have 5V ( Arduino...) and 12V (RGB strip).

Step 4: Optional: Temperature Sensor and Remote Control

If you want to use temperature sensor then you have to use the remote control. Because that is the only way to tell the clock to show temperature (no pushbuttons on the front of the clock that can activate clock so that he show temperature). We used temperature sensor DS 18B20 and we recomend that you use the same. Connect the output of the sensor for pin 4 on the Arduino Board.

For the ir receiver we used TSOP 4838 and you should have some programing skils because in the program you have to define buttons that you want to use.TSOP is connected to pin 3 on arudino board.

In the end, what you really want is that your watch looks great. Create a housing and have fun.

If you have any problem or question feel free to ask.



    • Casting Contest

      Casting Contest
    • Oil Contest

      Oil Contest
    • Make it Move Contest

      Make it Move Contest

    We have a be nice policy.
    Please be positive and constructive.




    Be carefull with cutting the discs. Some discs are made out of something metal like (you can bend these discs easily with pliers. But there are also discs which are glass like, if you try to bend or cut them, they will explode in hundreds of small very sharp pieces.

    1 reply

    I did not know that there are different types of disks, so thank you for this. I hope that people who try to make this clock will pay atention on comments.

    Final.ino is wrong sketch

    Please upload good sketch


    Why i dont get any output for RGB pin 7,6, and 5? connect same circuit. But no connetion for temperature and IR remote.

    1 reply

    I am facing the same problem also. Is there any solution yet?

    Hi aioria of mothi! You can, please send me also the files?

    Also where in the code do you change position of the sensor? I am using the Hall Effect sensor and want to locate it at the 6 position. I like the Hall Effect because you do not have the bulging IR sticking out.

    Awesome project! I made it and everything went smooth Except I noticed that your HD spins Counter Clockwise and Mine spins Clockwise which makes my clock go backwards. Is there a place in the code that we can reverse this?


    is it posible to download the sketch anyware ?

    I had a question, in materials needed you put ULN2003 but the circuit shows a ULA 2803 which one do I need to use? Ty in advance.

    5 replies

    You should use ULN 2003. When i was working on this shematic in eagle i couldn't find ULN 2003 in the eagle part list, so i just used 2083 that has same number of pins, and i just payed attention to the arrangement of pins.

    Also I was wondering what the values of Resistors 1-4 on the push buttons.

    These resistors are pull-down resistors and you can use any resistor in the range of 1k-10k ohm. I used 10k .

    If you define in the arduino he pinMode for the buttons as INPUT_PULLUP, then internally the arduino will pull the button pin HIGH by default. Then you don't need a resistor. You would wire your button to go to GND. When you test the pin, you check for LOW, this indicates button is connected to ground, ie. its being pushed, otherwise its HIGH.

    if (digitalRead(buttonPin) == LOW) //then button is pushed

    Thank you. By the way this is an awesome project.

    Good job on the clock! Also due to the large(wide) cutout on the platter, the image is really blurred. By making a narrow cut, you would be able to achieve higher resolution and make advanced clock faces. I have done one myself with an atmega328 @ 180 step resolution and full color (pwm-driven). It's a tough challenge to make a highly customisable, double-buffered and speed independent program with a 8-bit AVR :D

    1 reply

    I agree.This clock is awesome no matter how you make it. But of course adding that little things makes the clock way better. :)

    please help me, I can't open on my eagle! and can you send it to my email list of components, I want to make for my school project. thank you (wahyu_wahyudi31@yahoo.com)