Page 65 - The Unofficial Guide to Lego Mindstorms Robots
P. 65

54


          examples. If you've programmed in C, NQC will look familiar. If you have never programmed in C, don't worry; NQC is easy
          to  learn.

          Th is chapter presents NQC in  four steps:

          1 . To get yo u started with NQC, this chapter begins with a simple example.

          2. To understand how  NQC works, you need to und erstand the software that's running on the RCX. This chapter describes the
          im portant piec es of the RCX's software architecture.

          3. This chapter provides a detailed listing of NQC's  commands, with examples.

          4.  Finally, t his chapter contains software for Trusty written in NQC.

          A Quick Start

          Let's get right to the good stuff with a working example. First, you'll need to download and install NQC. It's available for
          MacOS, Linux, an d Windows. Navigate to the NQC web site (http://www.enteract.com/~dbaum/lego/nqc/ ), and follow the
          in structions to download and install the latest version. The examples in this book were written with the NQC version 2.0b1.

          O nce it's installed, enter the following program using a text editor. This program operates Hank, the robot from Chapter 2,
          Hank, the Bumper Tank. Save the program in a file called Hank.nqc.

                 #define BACK_TIME 50
                 #define TURN_TIME 80

                 task main() {
                        SetSensor(SENSOR_1, SENSOR_TOUCH);
                        SetSensor(SENSOR_3, SENSOR_TOUCH);
                        OnFwd(OUT_A + OUT_C);
                        while (true) {
                               if (SENSOR_1 == 1) {
                                      PlayTone(440, 50);
                                      OnRev(OUT_A + OUT_C);
                                      Wait(BACK_TIME);
                                      OnFwd(OUT_A);
                                      Wait(TURN_TIME);
                                      OnFwd(OUT_C);
                               }
                               if (SENSOR_3 == 1) {
                                      PlayTone(880, 50);
                                      OnRev(OUT_A + OUT_C);
                                      Wait(BACK_TIME);
                                      OnFwd(OUT_C);
                                      Wait(TURN_TIME);
                                      OnFwd(OUT_A);
                               }
                        }
                 }
   60   61   62   63   64   65   66   67   68   69   70