Page 291 - Hacking Roomba
P. 291
272 Part III — More Complex Interfacing
Listing 13-1 Continued
PAUSE 1000
ELSEIF BUMP_LEFT THEN
GOSUB Spin_Right
PAUSE 1000
ENDIF
GOSUB Go_Forward
PAUSE 100
IF WHEELDROP_C THEN
GOTO Done
ENDIF
GOTO Main
Done:
PAUSE 1000
SEROUT RXD, BAUDSLOW, [R_POWER] ‘ turn off
STOP
Spin_Left:
SEROUT RXD,BAUDSLOW, [R_DRIVE,$00,$c8,$00,$01]
RETURN
Spin_Right:
SEROUT RXD,BAUDSLOW, [R_DRIVE,$00,$c8,$ff,$ff]
RETURN
Go_Forward:
SEROUT RXD,BAUDSLOW, [R_DRIVE,$00,$c8,$80,$00]
RETURN
Go_Stop:
SEROUT RXD,BAUDSLOW, [R_DRIVE,$00,$00,$00,$00]
RETURN
‘ Get sensor packet 1, which is 10 bytes
Update_Sensors:
DEBUG “update sensors”,CR
SEROUT RXD, BAUDSLOW, [R_SENSORS, 1]
SERIN TXD, BAUDSLOW, 2000, No_Data,
[SENS_BUMPWHEEL,SENS_WALL,
SENS_CLIFF_L,SENS_CLIFF_FL,SENS_CLIFF_FR,SENS_CLIFF_R,
SENS_VWALL,SENS_MOTOROVER,SENS_DIRT_L,SENS_DIRT_R]
RETURN
No_Data:
DEBUG “no data!”,CR
RETURN