Propeller Clock

Author admin    Category All projects, Gadjet     Tags ,


I got this idea by browsing the web. I found by hazard  Mr. Bob Blick's page who make the first propeller clock.  I began to check how can I build one myself.  Base on AVR AT90S2313 I saw rapidly that my MCU must be clocked very fast to make all the calculations needed to light the leds at the right place.  The speed is at 16Mhz,  4 times faster than Atmel's specifications. It's working without any problems.

Each time the PCB passed at 12h00 an hall effect sensor sensed the magnet and generated an interruption. At this time, we have to check the counter to se how many ticks had been passed from this rotation since  the last rotation tooks this value and divide it by 360. This calculation will gives you the time between each degree.  Now, you have to set an interruption to occur at each degree and after you will be able to light leds whenever you want at any of 360 degrees.  At this MCU speed, there is no jitter everything is just FIXED!!!

A simple IR sensor is used to take the signal from the remote control (set to a Sony protocol).

Don't forget to use HIGH BRIGHTNESS LEDS 1600mcd.  Leds are not lighted very long so the mcd's power must be high.


  • Analog clock mode
  • Digital clock mode
  • Infrared clock setting with a standard universal remote control






Source Code

145 Comments to “Propeller Clock”

  • mani September 12, 2012 at 2:50 am

    please send me hex file of analog Propiler clock& what kind of remote for use it ? plz reply me soon

  • Chris October 7, 2012 at 7:23 pm

    Hi, I was just wondering what order the LEDs should be placed. Should R1 and D1 be placed closest to the centre then go outwards up to R18 and D18 or the other way around. 

  • admin October 7, 2012 at 11:22 pm

    Very good question, I don’t remember. In the worst case you juste have to change the mapping in the code


  • nero October 12, 2012 at 12:16 pm

    if we remove ir sensor circuit how the code will change so that it still displays both analog and digital clock

  • admin October 12, 2012 at 1:05 pm

    It will be only analog

  • rahul October 21, 2012 at 10:21 am

    i am not able to find AVR AT90S2313 controller,  Is there any option to implement this concept in 8051. help me sir.

  • admin October 21, 2012 at 4:45 pm

    I can’t do anything for you

  • Jeck October 31, 2012 at 3:34 pm

    What can be put in place VN300?
    what type of hall effect???


  • Jeck October 31, 2012 at 3:34 pm

    What can be put in place VN300?
    what type of hall effect???

  • admin October 31, 2012 at 3:41 pm

    vn300 or any small signal n-mosfet
    Any hall that output 0 or 5v output

  • Jeck October 31, 2012 at 3:44 pm

    DN6848 can use??
    This source code is correct???

  • admin October 31, 2012 at 3:47 pm

    I'm not shure that DN6848 could work it's a open collector output,  Compare the datasheet and you will see if it's good,

    The source should work but everything is "as is"

  • ali November 3, 2012 at 3:52 pm

    hi sir
    i want to make a pov like u with 1 .5 meter shaft but i do not have experience in motor could you please help me what to choose beacuse i have this project this term and my teacher said i should use just dc motor

  • admin November 4, 2012 at 3:34 am

    I can’t really help you

  • yiğit November 6, 2012 at 12:06 am

    hi , i'm student in electronic highschool , and really i need help with this one . 
    we taked a project homework , we cant do it , we need shematic design of printed circuit board . 
    i cant do it with ares . if you help me i will be so happy . 
    We taked bought all components .  we need help …. i 'm really happy to see you.

  • Jeck November 8, 2012 at 3:23 pm

    which fuse to exhibit???

  • Sylvain November 8, 2012 at 3:34 pm

    Send me the fuse bit list I will check that

  • Jeck November 8, 2012 at 7:12 pm

    You can send a compiled source code???

  • Jeck November 9, 2012 at 4:15 pm

    fuse list

  • Jeck November 9, 2012 at 4:20 pm


  • Sylvain November 9, 2012 at 4:51 pm

    Take the default value and modify 
    CKSEL all programed
    CKDiv unprogramed

  • Jeck November 9, 2012 at 5:16 pm

    you can send source code in "*. hex" file??

  • sagar November 12, 2012 at 5:17 am

    which type of motor is usedto make propeller LED display??….plese help

  • admin November 12, 2012 at 5:31 am

    a old dc motor but I don’t know where it came from,….

  • Jeck November 15, 2012 at 1:14 pm

    file to compile Clock.s or Clock.c???

  • Sylvain November 15, 2012 at 1:24 pm


  • Jeck November 15, 2012 at 5:24 pm

    You can compile this file?
    if not then please Tell me how to do it, because I did not go.

  • Sylvain November 15, 2012 at 6:18 pm

    You need ICCAVR C compiler at,  The file in this project is very old and it may not compile without changes,

  • andre November 16, 2012 at 3:34 pm

    hello .. I can not translate the code without any error message you can send me the hex file to my e mail thank you … andre Germany from brunswick…

  • admin November 16, 2012 at 3:35 pm

    I don’t have the hex file I only have the .C file

  • andre November 16, 2012 at 5:02 pm

    …ok thank you…

  • paulo February 13, 2013 at 11:45 am

    hi mr sylvian :
    i should to thank you for your useful project .
    i decided to make your propeller clock . but with some changes . so i need to analyse its program . i could do it somewhat . but still i dont have an exact percipience about making interrupt for each five minutes to be able to show each hours ( i mean showing each hours position 1,2,3,4…12 ) .
    i can't undrestand how to make an interrupt for each degree
    would you please describe that for me ?
    thanks so much sir …

  • admin February 13, 2013 at 12:25 pm

    That’s make long time I wrote this code, I think it’s there

    if (Lap > 250)
    Adder = TotalCount / 378;
    Lap = 0;

    The 378 is for 360 degree because of the lag executing the code

  • paulo February 13, 2013 at 1:36 pm

    thank you for fast answering sir …
    so i will work on this code … but i know that  i'll have some questions more . so excuseme if i will ask again next time …
    sorry for disturbing you sir …
    thanks a lot …

  • admin February 13, 2013 at 1:37 pm

    No problem when ask like you do…

  • paulo February 21, 2013 at 11:01 am

    Hi Mr Sylvain  again :-)
    i'm changing your codes for using in codvision compiler . so would you please tell me the meaning and the tasks of these codes in your compiler ?
    #pragma interrupt_handler Crossing_interrupt:2
    #pragma interrupt_handler IR_interrupt:4

    #pragma interrupt_handler Degre_interrupt:5

    #pragma interrupt_handler Ticker_interrupt:7
    also i've read your written program many times :
    you didn't  use any crystal to make 1s . is your time accurate like that ?
    and finaly :
    there are 7 functions :
    void Crossing_interrupt(void);
    void Degre_interrupt(void);
    void Time(unsigned char);
    void IR_interrupt(void);
    void Ticker_interrupt(void);
    void Display(void);
    void CopyData(int Value);
    void CopyDot(void)
    how is the sequence of running each functions after any rotation ?   would you please indicate those just with numbers infront of them (ie : 1,2,4,6,3,7 )
    ( i'm so sorry &  thankful )

  • ali February 25, 2013 at 2:23 pm

    i read the code it's interesting but i couldn't understand this part.
    Pos = ((WeelPosition-100) / 3);
       if (Pos < 49)
          PORTB = TimeString[48-Pos];
    what is pos's work?

  • admin February 25, 2013 at 2:33 pm

    It's a very old project,  I don't remember, but this project work fine

  • ali March 2, 2013 at 10:46 pm

    hi i used ur code but i already had a led board with 3 shift latch register
    i'm wondering that can tmega8 with 8mhz clock run code right becuse i used delay but it didn't work .do have any idea that help.
    tank u

  • admin March 3, 2013 at 5:16 pm

     I don't know,  if it could work

  • rehman March 11, 2013 at 1:22 pm

    Anyone have complete hex file of this project plzzzz send me…….
    i've problem with this when try to build an unknown error accured  "<library>(43):{linker} area "func_lit" not large enough.  need 0 bytes.   
    plzzzzzzzz solve my problem send me solution on
    i'll be vary thankfull…..

  • ali April 1, 2013 at 4:50 am

    The 378 is for 360 degree because of the lag executing the code
    how u take 378
    can u please say what u do if code was alright but it does not work!

  • Hari Hendaryanto July 1, 2013 at 4:36 am

    i'm sorry i didn't mean to criticize, i also have the same project based on your code, it works as it should, i'm using atmega16 runinng at 16Mhz, i translated your iccavr code into avr studio with little modifications.
    great project :)

  • Hari Hendaryanto July 11, 2013 at 12:20 am

    oh anyway this is my same project as your.  based on your original code using AVR studio, in case someone interesting.

Post comment

Please note

All my source codes were taken from my personal projects.

Everything is for your information only. The C/C++ codes have been written
with ICCAVR. You can find the header and source CRT files by downloading their compiler.

All is for your information and everything is AS IS without any warranty of any kind. No other files are available and I don't make any modification for any body.



Electronic Links


AGC Anemometer AVR AVR Bootloader Bootloader Capacitence Capacitor Clock Color Control DCC Debugger Devices Digital driver Function Generator High Gain Microphone Humidity Inductance Inductor Laser LCD LED 3W Library Lightning Detector MegaLoad Meter Moodlight Mood Light MS5534 Nixie OscilloScope projector Rain Fall Sensor rgb RGB LED Scop Sensor SHT75 Temperature Terminal Tipping Bucket Train Modeling Vintage Water Detector