CS 444 - Week 4 Lecture 1 - 2015-02-10
...another task of the regulator thread in the
NXTRegulatedMotor class:
...to control the motor speed;
* to go straight, when 2 wheels each attached
to a different motor -- the 2 motors need to
rotate at the same speed;
* standard Lego software:
directly synchronize the 2 motors;
* NXJ (leJOS) doesn't do this --
it keeps the motor ROTATION synchronized
to the system clock;
the regulator thread compares the tachometer
count (minus its reference count) with
the speed (multiplied by) elapsed time;
...and adjusts the power to keep the two
quantities closely matched;
(and this regulator thread resets its
reference count and its elapsed time to
zero whenever you call any of the methods
we've been using here)
* let's see this in action:
GoStraight1.java (and please put the names
of all on your team in class today
in an
@author impl'd by name, name, name
* SOMETIMES you DON'T want constant speed --
you may want frequent speed adjustments
(say, based on sensor readings) --
regulator thread is NOT of benefit here,
you'd use an NXTMotor class instance instead
of NXTRegulatedMotor;
...no regulator thread is set up by that class
(and so you can't call rotate/rotateTo)...
you CAN call:
setPower(int aPower)
...aPower is a value between 0 and 100
used to control motor power directly;
* you can create an NXTMotor instance by
calling its constructor with a MotorPort
instance:
NXTMotor motorB = new NXTMotor(MotorPort.B);
* playing with this a LITTLE:
NXTMotorTest.java