Ledterm
keywords: hardware, linux
icon: ledterm/ledterm.jpg
attach: ledterm/*
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.
--- More
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.
Hardware
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 :)
Downloads
See below for 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.
Here 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-onle 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.