Instructables
Picture of Pc robot in progress.
images.jpeg
F4P47WXGAPV3G4W.LARGE.jpg
Original media moved to : http://www.instructables.com/id/PC-robot-revisited/


Robot os. The infinite loop.

While true%

    ' set or reset values

    ' input sensor values

    ' Other jobs

    ' Do what is needed based on input values.
wend


Part I. Set or reset values.

Part II Get sensor values.

Reading the Input pins

The command to read from ports in qbasic is INP. The address you need to read from is the address of the parallel port (usually 378h) + 1; so the usual address is 379h. As i mentioned before, the pins used for input are 10-13 and 15. Reading the different pins is little harder than writing to the ports, as you have to mask out the pins your not interested in. When you read the port, the first 3 bits returned are not used. For example, the qbasic code below would read pin 12 (out of paper). When this port is high, "Out of paper / pin 12 toggled" will be displayed:
data = inp(&h379)
IF (data and 32) = 32 then print "Out of paper / pin 12 high"
The table below list the pin input pin number, its normal purpose, and the number required to read it (eg 32 was used in the above example):

Pin Number Normal Purpose Number to read
10 Ackowledge 64
11 High when not Busy 128
12 High when out of paper 32
13 High when printer online 16
15 High when no error 8

If you understand binary, you should immediately see where these numbers are coming from, and why they are used to mask out all of the other pins we aren't trying to read. The simplest thing you can use to test this is to just connect a switch between an input pin and a ground pin (18-25). For example, if you connect a switch between pins 15 and 20, you could use the following code to monitor when the switch is pushed:
start:
res = INP(&H379)
CLS
IF (res AND 8) = 8 THEN PRINT "Button pushed" ELSE PRINT "Button NOT pushed"
FOR delay = 1 TO 500: NEXT delay
GOTO start
I know this code is a little messy, and will flicker, but it's written for clarity. The same code can be used to monitor the other four input lines by changing to the '8' to another number from the table.


Part III Other jobs.

Part IV
We can use programs such as parcon to set values at the parallel port for such jpbs as controlling the power train. see also: http://www.instructables.com/id/Mini-parallel-port-break-out-cable/
http://www.instructables.com/id/No-solder-parallel-port-break-out/
parcon.c764 bytes