The software is written to enable the user to configure the clock at run-time using only two buttons: the '+'-button increases the current setting, the 'adv'-button saves the current setting and allows one to setup the next.
If the microcontroller is fresh from the programmer, the firmware doesn't yet know what the hardware looks like, so stuff like the type of fan and the angles the hands are on should be set up first. After that, the user can input the current time and after that's confirmed, the clock will start running.
The software mainly works by using three interrupts: the first one kicks in 500 times a second and is used for button debouncing and keeping time. The second one is dynamically adjusted to kick in 60 times per rotation of the fan and handles the showing of the hands by enabling and disabling the three colors of the RGB-led. The third one kicks in every time the fan generates an RPM-pulse. When that happens, the microcontroller will evaluate the speed at which the rotation-timer happens and adjust it when necessary.
The software for the clock is written in avr-gcc and released under the GPL v3, so if you want, you can modify it to display a clock on anything rotating quickly enough. If you come up with something interesting, please let me know!
Video of the led-fan-clock in action: