Program
'{$STAMP BS2}
'{$PBASIC 2.5}
i VAR Word
le VAR Bit
ri VAR Bit
adcBits VAR Word
adcBits1 VAR Word
INPUT 3
INPUT 4
le= IN3
ri= IN4
' -----[ Initialization ]--------------------------------------------------
CS PIN 8
CLK PIN 9
DataOutput PIN 10
CS1 PIN 5
CLK1 PIN 6
DataOutput1 PIN 7
DEBUG CLS 'Start display.
'DO
'GOSUB main
'GOSUB Calc_Volts
'GOSUB Display
'LOOP
' -----[ Subroutines ]-----------------------------------------------------
main:
GOSUB ADC_Data
IF le=0 AND ri=0 THEN uturn
PAUSE 30
IF le=0 THEN left
IF ri=0 THEN right
IF ABS (adcBits1-adcBits) <= 50 THEN forward
IF adcBits > adcBits1 THEN little_right
IF adcBits < adcBits1 THEN little_left
forward:
PULSOUT 12,850
PULSOUT 13,850 'left
PAUSE 30
GOTO main
little_right:
FOR i=0 TO 20
PULSOUT 12,900
PULSOUT 13,900
PAUSE 30
NEXT
GOTO main
little_left:
FOR i=0 TO 20
PULSOUT 13,900
PULSOUT 12,900
PAUSE 30
NEXT
GOTO main
left:
IF ri=0 THEN uturn
GOSUB back
FOR i = 0 TO 60
PULSOUT 12,500
PULSOUT 13,500 'left
PAUSE 30
NEXT
GOTO main
right:
IF le=0 THEN uturn
GOSUB back
FOR i = 0 TO 60
PULSOUT 12,1000
PULSOUT 13,1000
PAUSE 30
NEXT
GOTO main
uturn:
GOSUB back
FOR i=0 TO 100
PULSOUT 12,500
PULSOUT 13,1000
PAUSE 30
NEXT
GOTO main
back:
FOR i = 0 TO 30
PULSOUT 13,1000
PULSOUT 12,500
PAUSE 50
NEXT
RETURN
ADC_Data:
HIGH CS
HIGH CS1
LOW CS
LOW CS1
LOW CLK
LOW CLK1
PULSOUT CLK, 210
PULSOUT CLK1, 210
SHIFTIN DataOutput,CLK,MSBPOST,[adcBits\8]
SHIFTIN DataOutput1,CLK1,MSBPOST,[adcBits1\8]
RETURN
Calc_Volts:
RETURN
'Display:
'DEBUG HOME
'DEBUG "8-bit binary value:", BIN8 adcBits
'DEBUG CR,"Decimal value:", DEC3 adcBits
DEBUG CR,CR,CR,"8-bit binary value:", BIN8 adcBits1
DEBUG CR,"Decimal value:", DEC3 adcBits1
'RETURN