Trusty Revisited - LEGO MINDSTORMS Robots Manual

Unofficial guide
Table of Contents

Advertisement

If you pass int by value, the parameter's value is copied into a temporary variable (from the pool of 31) and used in the inline. const int passes by value, but the value must be a constant at
compile time.
If you pass by reference, the variable that is passed in can actually be modified in the inline. In this code, for example, a count variable is incremented in the body of an inline:
task main() {
int count = 0;
while (count <= 5) {
PlaySound(SOUND_CLICK);
Wait(count ∗ 20);
increment(count);
}
}
void increment(int& n) {
n++;
}
The last option, const int &, is used when you want to pass a value that should not be changed. This is great for things like Sensor() and Timer(). For example, you might have an inline
like this:
void forward(const int& power) {
SetPower(OUT_A + OUT_C, power);
OnFwd(OUT_A + OUT_C);
}
With this inline, you can do normal things, like passing a variable or constant:
int power = 6;
forward(power);
forward(OUT_HALF);
But you can also do trickier stuff, like this:
forward(Message());
You can basically accomplish the same stuff with int parameters and const int& parameters. The advantage of const int& is that no temporary variables are used.

Trusty Revisited

You've seen some small examples of NQC code. Now I'll show you how Trusty can be programmed using NQC. You'll be able to compare the NQC programs to the RCX Code programs from
Chapter 3.
New Brains For Trusty
As you may recall, we used a counter to keep track of Trusty's state. The counter value was used to decide if Trusty would turn left or right the next time the light sensor left the black line. In
NQC, we can store Trusty's state in a real variable. Plus, we'll use symbolic constants to represent state values.
int state;
#define LEFT 0
#define RIGHT 1
Trusty's program has two tasks. The first task (main) tests the value of the light sensor. If it is over the black line, the robot is set to move forward:
Page 77

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