Parallel-port LED driver
The LedActor sends a data byte out the parallel port (/dev/lp1) of the PC which
VSS is running on. It is intended for sending to a particular homebrew
circuit which sends 2+3+3 bits of brightness data to a red, green and blue
LED respectively. It's been tested only under Linux as of 1/5/2000.
Don't create more than one LedActor; it wouldn't make sense, since you
don't have more than one /dev/lp1.
To use the LedActor, load ledlpt.so and create an actor of type LedActor.
LedActor messages
In addition to the messages understood by all actors, the LedActor understands the following message:
- SetBrightness hActor x
- Scale the overall brightness to x: 0 is dark, 1 is full brightness.
- SetHue hActor x
- Set the hue to x. As x varies from 0 to 1,
hue moves smoothly through six regions:
- 0.00 red
- 0.17 red+green
- 0.33 green
- 0.50 green+blue
- 0.67 blue
- 0.83 blue+red
- (1.00 red again, wrapping around)
- SetBlink hActor period dutycycle
- Blink the LED. Alternate its current hue-and-saturation settings
with darkness. A blink happens every period seconds,
and the relative length of the lit portion compared to the length
of the period is dutycycle (in the range 0 to 1).
So if dutycycle is 0, it stays dark no matter what the hue or
brightness or period is.
And if dutycycle is 1, it stays lit no matter what the period is.
If the period is 0 (the default), no blinking happens (the LED
stays on).
If the period is less than 0.05, it is rounded down to 0:
blinking at faster than 20 Hz is doubtfully meaningful.
Examples
LoadDSO ledlpt.so;
rgb = Create LedActor;
- Display a very bright green, followed by a faint purple-blue:
SetHue rgb 0.33;
SetBrightness rgb 1;
sleep 1;
SetHue rgb 0.79;
SetBrightness rgb 0.4;
sleep 1;