Mechanically scanned LED display

Bob Blick's Propeller clock inspired me to build this extremely cool display. Bob's clock has 7 LEDs and is axially scanned. My display features:

  • radial scanning
  • a diameter of 1 meter across
  • a rotation speed of (currently) 300-400 rpm
  • a led bar with 35 rectangular dual LEDs, 32 green, 3 yellow
  • a PIC16F876-20 microcontroller
  • synchronization in the form of a 480-pulse optical shaft encoder
  • power transfer to the PCB through 3 ball bearings (2 grounds, 1 supply voltage 12V)
  • a separate DC motor to drive the rotor

The display can do the following:

  • an analog clock: seconds, minutes, hours, and hour markers. The hands run through all other display data.
  • a digital clock: time, weekday, date, year. The date is displayed in Dutch, hence the strange day name in the picture above. Most month names happen to be the same as in English. Time/date format is of course European style.
  • a 64x32 or full size logo
  • the logo changes over to a 96 bit wide scrolling message every 4 minutes. While the scrolling message is active, the year display runs around.


This picture viewer requires a browser extension called Macromedia Flash. Click here to get Macromedia Flash.
If you have Flash installed, click here to try again.

From the pictures you can see there's a motor on the rotor shaft (with the blue housing), and an additional one below the mounting plate. The first motor turned out have too little power to give the rotor enough speed. So I added another motor and a gear, and put stream line wings on the LED bar. The first motor had the rotary encoder attached, so I left it where it was. The second motor came from a tyre pump that runs from a car cigarette lighter outlet. When I first connected the motor to a 6V lead acid battery, it drew 20 amperes and the rotor almost took off like a helicopter! I figured the motor would run hot in less than a minute and burn out. 6 volts, 20 amperes, that gives you 120 watts! So now it's running from a power supply on a 3 A current limit, and the supply voltage is around 3 volts.

The PCB contains - among minor other things - the PIC microcontroller, 4 HC573 latches, 5 ULN2003A 7-fold darlingtons, power supply stuff, a MOSFET to drive the first motor (not used), and 2 push buttons to set the date and time. You can download the schematic from the link below. The schematic does not include both the 5 volts logic power supply (7805 etc.) and the LED power supply. I used an LM317 adjustable voltage regulator for LED brightness control. The main power supply should be at least 12 volts, because the ball bearings will not always conduct perfectly. Use a 1 ohm 1 watt series resistor and a 4700 uF cap on the arm to suppress noise. You'll need PkUnzip or Winzip to unzip the BMP file.

The software is more complicated than one would think. Partly because I was still learning to program at the time I wrote it and didn't exactly take the shortest route, and partly because the PIC is a somewhat limited microcontroller. Especially the setting of the date and time were a programmer's nightmare. I resorted to a paper strip that fit over the LED bar that had the function of all LEDs printed on. One button would jump to the next setting, and the second would increase the setting. Settings are, in order:

  • year, last digit [0..9]
  • month, first digit [0..1], second digit [0..9]
  • date, first digit [0..3], second digit [0..9]
  • day of week, first digit [0], second digit[0..6]
  • hours, first digit [0..2], second digit [0..9]
  • minutes, first digit [0..5], second digit [0..9]
  • seconds, first digit [0..5], second digit [0..9]

The basic idea of the software is pretty simple, though: an interrupt is generated for each of the 480 frames and the LED buffers are loaded with the right data and gated. Outside the interrupt loop the time is kept and the different display functions (logo/scroller etc.) are switched. Wanna see all that? Download the program listing from the link below, then. The listings are kind of a mess, though. I was just learning to program with PIC assembler. So gimme a break.

The display served the following purposes:

  • as a new year's "best wishes" sign and clock at the new year's party 2001-2002 at Para
  • at the Para closing party on May 25, 2002
  • as a moving ad (see image viewer above) at the Dinaf Traffic Control InterTraffic stand

The listing and schematic can be downloaded here:


",$entry); $fp = fopen("comments/scandisplay.txt","a"); fwrite($fp,$entry."\n"); fclose($fp); mail("","Fuzzcraft comment",$nm.$ml." posted a comment on\n\n".$ms."\n\n","Reply-to: ".$nm." <".$em.">"); $_POST["nm"]=""; $_POST["ur"]=""; $_POST["ms"]=""; $_POST["cd"]=""; $status="Your message has been posted and the admin has been notified. Thank you."; }; $fields=explode('|',file_get_contents('comments/scandisplay.txt')); $i=0;while($i".$fields[$i]."   "; if($fields[$i+2]==""){echo $fields[$i+1];}else{echo "".$fields[$i+1]."";} echo "


\n"; $i=$i+4; }; ?> ".$status."

";$status="";} ?>

 Post a new comment 

No signing up, no censoring, no hassle, no strings attached, no nothing.

Please, English or Dutch only. If you don't really want your message to appear in public, consider contacting me privately.

Name:"> (If left blank, you'll be "Anonymous")
Website:"> (Optional)
You cannot post HTML or BBcode, it will appear as plain text.

Email:"> (Not required)
Your email address will not be stored, nor will it be visible in any way; it will only be known to the admin personally (I promise), so he can reply to you in person.

Please answer this simple question before posting:
What's the name of this website? (without the .com)