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

Preston_5564C03.fm  Page 69  Wednesday, October 5, 2005  7:21 AM



                                                                                  CHAPTER 3  ■  MOTION    69



                            // construct with JSerialPort
                            public SpeedDiffDrive(JSerialPort serialPort) throws Exception{
                                super(serialPort);
                            }

                            // accessor for speed
                            public int getSpeed() {
                                return speed;
                            }

                            // setter for speed
                            public void setSpeed(int speed) throws Exception {
                                // keep speed between min and max
                                if (speed < 1 || speed > 10) {
                                    throw new Exception("Speed out of range 1-10.");
                                }
                                // set speed
                                this.speed = speed;
                                // get high for left
                                setLeftHigh(getSpdHI());
                                // get low for left
                                setLeftLow(getSpdLO());
                                // get high for right
                                setRightHigh(getSpdHI());
                                // get low for right
                                setRightLow(getSpdLO());
                            }


                            // get speed as fraction of 127 (half of MiniSSC)
                            private int getSpd() {
                                double s = (double) 127 * (speed / 10.0);
                                return (int) s;
                            }
                            // return high speed
                            private int getSpdHI() {
                                return getSpd() + 127;
                            }

                            // return low speed
                            private int getSpdLO() {
                                return 127 - getSpd();
                            }


                            // sample program
                            public static void main(String[] args) {
                                try {
   83   84   85   86   87   88   89   90   91   92   93