Page 253 - The Definitive Guide to Building Java Robots
P. 253

Preston_5564C07.fm  Page 234  Monday, September 26, 2005  5:38 AM



                 234    CHAPTER 7  ■  NAVIGATION


                          IF cmd = 103 THEN ping_ir           ' pings the sonar       (READ-ms) ➥
                        - return after a time
                          IF cmd = 104 THEN ping_all          ' pings the sonar       (READ-ms) ➥
                        - return after a time
                          IF cmd = 105 THEN get_lat           ' gets gps latitude
                          IF cmd = 106 THEN get_lon           ' gets gps longitude
                          IF cmd = 107 THEN get_diag           ' gets diagnostic
                          PAUSE 5
                          GOTO main

                        get_compass:
                            PULSIN cin, 1, heading                          ' Get reading
                            heading = (heading-500)/50                      ' BS2(e) ➥
                        - Calculate Bearing in degrees
                            SEROUT 16,N9600,[DEC heading]                   ' out to PC
                            GOTO main
                        ping_sonar:
                            GOSUB sonar1
                            GOSUB sonar2
                            GOSUB sonar3
                            ' output is s1~s2~s3
                            SEROUT 16,N9600,[wDist1,wDist2,wDist3]
                            GOTO main
                        ping_ir:
                            GOSUB ir1
                            GOSUB ir2
                            ' output is ir1~ir2
                            SEROUT 16,N9600,[dist1,dist2]
                            GOTO main
                        ping_all:
                            GOSUB ir1
                            GOSUB ir2
                            GOSUB sonar1
                            GOSUB sonar2
                            GOSUB sonar3
                            ' output is ir1~ir2~s1~s2~s3
                            SEROUT 16,N9600,[dist1,dist2,wDist1,wDist2,wDist3]
                            GOTO main
                        ir1:
                            LOW dout1
                        ir1b:
                            IF IN3=0 THEN ir1b
                            SHIFTIN din1,dout1,2,[dist1\8]
                            HIGH dout1
                            RETURN
                        ir2:
                            LOW dout2




                   97022d2480fe4a63cfdfa123a6e70098
   248   249   250   251   252   253   254   255   256   257   258