About Projects


Released: January 2004
Category: Hardware
Platform: Unix

Ledterm is a device connected to the parallel port of the host computer. With the help of a Linux kernel module it acts as a dumb terminal, on which you can display messages and run just about any text-mode application, such as IRC, for example.

What's special about ledterm, however, is the fact that it has no screen in the traditional sense. Instead, it has a strip of eight regular green LED's (light emitting diodes) mounted on a vertical column. In front of this column is a reflective glass, which in turn is mounted on a VCR motor. In addition, the whole thing is constructed with 100% recycled junk I found lying around my house. :)

Ledterm is a project I built just for the fun of it, and admittedly has no practical use whatsoever. The inspiration came from a bunch of rotational LED clocks (sorry, lost the url) I stumbled on on the Internet.

If you would like to know more about the project, feel free to mail me.

Theory of operation

A reflector is spun around very quickly using the VCR motor. To a stationary observer this makes the strip of LEDs seem to scan rapidly horizontally on it. Simultaneously, the LEDs are toggled on and off to trick the eye into seeing various patterns on the 'screen'. By using special sequences for the lights one can display readable text, among other things.

The fact that the reflector spins around on a vertical axis creates another interesting illusion. The patterns seen by the observer appear on the inside of an imaginary 3D cylinder. Also, the 'screen' is viewable from nearly every planar angle around the device.


The device is operated via a normal PC parallel port. Thanks to the multitude of I/O pins found on the D parallel port interface, the device itself is extremely simple. The 8 LEDs are simply connected to pins 2 through 9 on the port with 220 ohm resistors in between. I found that practically all parallel ports can handle this load without an additional power source. This connection enables us to drive each LED independently with simple port manipulation instructions.

In addition to visual output, input is also needed from the device to syncronize the logic driver to the rotation of the reflector. This is accomplished by attaching a pair of magnets to the rotating base and a magnetic switch to the motor's side. This switch is then connected to pin 10 of the parallel port. Pin 10 was chosen because it can be programmed to generate a hardware interrupt upon activation. This makes the driver program much less CPU-intensive.

Finally, the above cruft was stuffed into a ridiculous excuse for a case (built from LEGO™, actually :)


Above is an MPEG-1 video showing the contraption in action. Note that the display doesn't flicker nearly as much as shown on this clip. This is just due to the camcorder I used.

Below you may download the Linux 2.4 drivers for ledterm. These are only being released in source-code form, since no-one should ever install untrustworthy binary-only kernel modules.

Even if you aren't interested in building the actual hardware, you still might find this code interesting. If you're looking for information on Linux kernel driver programming, IRQ handling, waitqueus, etc., these sources might provide a good reference.

« Back to all projects