Electrical Equipment Control
UsingPC 
Here
is a novel idea for using the printer port of a PC, for
control application using software and some interface
hardware. The interface circuit along with the given
software can be used with the printer port of any PC for
controlling up to eight equipment. 
The interface circuit shown in the figure is
drawn for only one device, being controlled by D0 bit at
pin 2 of the 25pin parallel port. Identical circuits
for the remaining data bits D1 through D7 (available at
pins 3 through 9) have to be similarly wired. The use of
optocoupler ensures complete isolation of the PC from
the relay driver circuitry. 
When
the program is loaded and run, the monitor will show the
control panelwith the control bar at the extreme left.
The bar can be moved using the right and left arrow
keys. Switching on/off of bits D0D7 is done by bringing
the bar over the appropriate square and then pressing
the ‘Q’ key for ON and ‘W’ key for OFF operation. The
monitor will show the status of the relevant switch by
indicating ‘1’ for ON and ‘0’ for OFF status of the
switch. In addition, the current date and time is also
displayed on the screen. 
Program Listing in Basic 
CLS
: SCREEN 2 KEY(1) ON: ON KEY(1) GOSUB FINIS
KEY(5) ON: ON KEY(5) GOSUB RETIRE KEY(10) ON: ON
KEY(10) GOSUB ALLON PORT% = &H378 OUT PORT%,
0 LOCATE 8, 10: PRINT "< >" V$ =
STRING$(27, "²") LOCATE 5, 6: PRINT V$; SPC(1);
"CONTROL PANEL"; SPC(2); V$ LINE (40, 31)(600,
180), 1, B LINE (40, 40)(600, 180), 1, B LINE
(40, 100)(600, 120), 1, BF LINE (140, 40)(460,
110), 1, B LOCATE 8, 65: PRINT "ONQ" LOCATE
12, 65: PRINT "OFFW" LOCATE 19, 15: PRINT "F1";
SPC(24); "F5"; SPC(27); "F10" LOCATE 21, 10: PRINT
"EMERGENCY OFF"; SPC(16); "LOGOUT"; SPC(24); "ALLON"
D$ = DATE$ J$ = MID$(D$, 1, 3) K$ = MID$(D$,
4, 3) L$ = MID$(D$, 9, 2) LOCATE 5, 7: PRINT SPC(1);
K$; J$; L$; SPC(1); "" STAT: PSET (145, 85):
DRAW "R20U10L20D10" PSET (185, 85): DRAW
"R20U10L20D10" PSET (225, 85): DRAW "R20U10L20D10"
PSET (265, 85): DRAW "R20U10L20D10" PSET (305,
85): DRAW "R20U10L20D10" PSET (345, 85): DRAW
"R20U10L20D10" PSET (385, 85): DRAW "R20U10L20D10"
PSET (425, 85): DRAW "R20U10L20D10" T$ =
TIME$ Y$ = MID$(T$, 1, 2) Y = VAL(Y$) IF Y
< 12 THEN PP$ = "AM" ELSE PP$ = "PM" IF Y > 12
THEN Y = Y  12 U$ = MID$(T$, 3, 3) LOCATE 5, 64:
PRINT SPC(1); Y; U$; PP$; SPC(1); "" LOCATE 9, 20:
PRINT "1"; SPC(4); "2"; SPC(4); "3"; SPC(4); "4";
SPC(4); "5"; SPC(4); "6"; SPC(4); "7"; SPC(4);
"8" LOCATE 12, 19: PRINT AA; SPC(2); SS; SPC(2); DD;
SPC(2); FF; SPC(2); GG; SPC(1); SPC(1); HH; SPC(2);
JJ; SPC(2); KK X$ = INKEY$ X$ = RIGHT$(X$,
1) N = INP(PORT%) IF X$ = "K" THEN J = J 
40 IF X$ = "M" THEN J = J + 40 PSET (J + 105,
85): DRAW
"R20U10L20D10R2U10R2D10R2U10R2D10R2U10R2D10R2U10R2D10R2U10R2D10"
FOR T = 1 TO 400: NEXT PRESET (J + 105, 85):
DRAW "R20U10L20D10R2U10R2D10R2U10R2D10R2U10R2D10R2U10R2D10R2U10R2D10"
IF J + 105 < 105 THEN J = 0 IF J >= 360
THEN J = 360 IF (J = 40) AND (X$ = "Q" OR X$ = "q")
THEN GOSUB APPLE IF (J = 40) AND (X$ = "W" OR X$ =
"w") THEN GOSUB APPLEOF IF (J = 80) AND (X$ = "Q" OR
X$ = "q") THEN GOSUB BAT IF (J = 80) AND (X$ = "W"
OR X$ = "w") THEN GOSUB BATOF IF (J = 120) AND (X$ =
"Q" OR X$ = "q") THEN GOSUB TALE IF (J = 120) AND (X$
= "W" OR X$ = "w") THEN GOSUB TALEOF IF (J = 160)
AND (X$ = "Q" OR X$ = "q") THEN GOSUB FLAT IF (J =
160) AND (X$ = "W" OR X$ = "w") THEN GOSUB FLATOF IF
(J = 200) AND (X$ = "Q" OR X$ = "q") THEN GOSUB FAT
IF (J = 200) AND (X$ = "W" OR X$ = "w") THEN GOSUB
FATOF IF (J = 240) AND (X$ = "Q" OR X$ = "q") THEN
GOSUB SILK IF (J = 240) AND (X$ = "W" OR X$ = "w")
THEN GOSUB SILKOF IF (J = 280) AND (X$ = "Q" OR X$ =
"q") THEN GOSUB SEVEN IF (J = 280) AND (X$ = "W" OR
X$ = "w") THEN GOSUB SEVENOF IF (J = 320) AND (X$ =
"Q" OR X$ = "q") THEN GOSUB LAST IF (J = 320) AND (X$
= "W" OR X$ = "w") THEN GOSUB LASTOF GOTO STAT
'ALL THE SUBROUTINES ARE
BELOW APPLE: SOUND 500, 2 AA = 1
LOCATE 6, 50 Q = 1 OR N OUT PORT%, Q
RETURN BAT: SOUND 500, 2 SS = 1 W = 2 OR
N OUT PORT%, W RETURN TALE: SOUND 500, 2
DD = 1 Q = 4 OR N OUT PORT%, Q RETURN
FLAT: SOUND 500, 2 FF = 1 Q = 8 OR N OUT
PORT%, Q RETURN FAT: SOUND 500, 2 GG = 1 Q
= 16 OR N OUT PORT%, Q RETURN SILK: SOUND 500,
2 HH = 1 Q = 32 OR N OUT PORT%, Q RETURN
SEVEN: SOUND 500, 2 JJ = 1 Q = 64 OR N OUT
PORT%, Q RETURN LAST: SOUND 500, 2 KK = 1
Q = 128 OR N OUT PORT%, Q RETURN TALEOF:
SOUND 400, 1 IF DD = 0 THEN RETURN DD = 0 IF
N = 4 THEN P = 0 IF N < 4 THEN P = N IF N
> 4 THEN P = N  4 OUT PORT%, P RETURN
APPLEOF: SOUND 400, 1 IF AA = 0 THEN RETURN AA
= 0 IF N = 1 THEN I = 0 IF N > 1 THEN I = N 
1 OUT PORT%, I RETURN BATOF: SOUND 400, 1 IF
SS = 0 THEN RETURN SS = 0 IF N = 2 THEN U = 0
IF N > 2 THEN U = N  2 IF N < 2 THEN U =
N OUT PORT%, U RETURN FLATOF: SOUND 400, 1
IF FF = 0 THEN RETURN FF = 0 IF N = 8 THEN E =
0 IF N < 8 THEN E = N IF N > 8 THEN E = N 
8 OUT PORT%, E RETURN FATOF: SOUND 400, 1
IF GG = 0 THEN RETURN GG = 0 IF N = 16 THEN Y
= 0 IF N < 16 THEN Y = N IF N > 16 THEN Y =
N  16 OUT PORT%, Y RETURN SILKOF: SOUND 400,
1 IF HH = 0 THEN RETURN HH = 0 IF N = 32 THEN Y =
0 IF N < 32 THEN Y = N IF N > 32 THEN Y = N
 32 OUT PORT%, Y RETURN SEVENOF: SOUND 400,
1 IF JJ = 0 THEN RETURN JJ = 0 IF N = 64 THEN
U = 0 IF N < 64 THEN U = N IF N > 64 THEN U
= N  64 OUT PORT%, U RETURN LASTOF: SOUND
400, 1 IF KK = 0 THEN RETURN KK = 0 IF N = 128
THEN Z = 0 IF N < 128 THEN Z = N IF N > 128
THEN Z = N  128 OUT PORT%, Z RETURN ALLON:
SOUND 500, 4 OUT PORT%, 255 AA = 1: SS = 1: DD =
1: FF = 1: GG = 1: HH = 1: JJ = 1: KK = 1
RETURN FINIS: SOUND 400, 2 OUT PORT%, 0
AA = 0: SS = 0: DD = 0: FF = 0: GG = 0: HH = 0: JJ =
0: KK = 0 RETURN RETIRE: OUT PORT%, 0
END
  
Click on the Image for its larger version
