LEGO MINDSTORMS Robots Manual page 75

Unofficial guide
Table of Contents

Advertisement

if (SENSOR_2 > LIGHT2) {
toggle();
Wait(TIMEOUT);
if (SENSOR_2 > LIGHT2) {
toggle();
Wait(TIMEOUT ∗ 2);
}
}
}
}
sub toggle() {
if (state == LEFT) {
OnRev(OUT_A);
OnFwd(OUT_C);
state = RIGHT;
}
else {
OnFwd(OUT_A);
OnRev(OUT_C);
state = LEFT;
}
}
The main task performs three important initializations which I haven't mentioned yet. First, main initializes the value of the state variable. It just uses LEFT
arbitrarily. Next, main configures input 2 for a light sensor. Finally, it starts the lightWatcher task.
Using Two Light Sensors
In this section, I'll present an NQC program that works with the two light sensor version of Trusty. As you may recall, programming this robot in RCX Code was cumbersome.
The programming is a lot cleaner in NQC. It's pretty straightforward to translate Table 3-1 into source code. The basic strategy is to use a state variable to represent the four states of the robot,
represented by the four lines of Table 3-1. Then one task examines the sensors and updates the state variable. Another task examines the state variable and sets the motors appropriately.
The four possible states are represented by constant values. A fifth value, INDETERMINATE, is used when one or both of the light sensor values is not in the dark or light range:
#define BOTH_ON 3
#define LEFT_ON 1
#define RIGHT_ON 2
#define BOTH_OFF 0
#define INDETERMINATE 255
The main task simply tests the value of the state variable and sets the motors accordingly. No action is taken for BOTH_OFF and INDETERMINATE:
Page 79

Hide quick links:

Advertisement

Table of Contents
loading
Need help?

Need help?

Do you have a question about the MINDSTORMS Robots and is the answer not in the manual?

Questions and answers

Table of Contents