Listing 1. The Feeder PBASIC Code


'{$STAMP BS2}
cmd     VAR     Byte
temp    VAR     Word
LineSnsrPwr     CON 10
LineSnsrIn      CON 9
Sense   VAR     Word
SStart     VAR Word

main:
  DEBUG "Waiting for Command", CR
  SERIN 7, 84, [cmd]
  DEBUG "Received Command: ", cmd, CR
  IF cmd = "B" THEN feed
  GOTO main

feed:
  DEBUG "Feed the kitty!", CR
  HIGH LineSnsrPwr ' activate sensor
  HIGH LineSnsrIn ' discharge QTI cap
  PAUSE 1
  RCTIME LineSnsrIn, 1, SStart
  DEBUG "First Reading: ", DEC SStart, CR
  GOTO sensor

feed2:
  IF Sense < (SStart - 200) THEN pastfirst
  IF Sense > (SStart + 200) THEN stopfeed
  FOR temp = 1 TO 100
    PULSOUT 0,600
  GOTO sensor

sensor:
  HIGH LineSnsrPwr ' activate sensor
  HIGH LineSnsrIn ' discharge QTI cap
  PAUSE 1
  RCTIME LineSnsrIn, 1, Sense
  GOTO feed2

pastfirst:
  DEBUG "Past First!", CR
  SStart = Sense
  GOTO sensor

stopfeed:
  DEBUG DEC Sense, CR
  GOTO main

