Tutorials/Getting Started/Getting Started with NXT and TETRIX

< Tutorials‎ | Getting Started
Revision as of 18:52, 17 May 2012 by Bfeher (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Tutorials → Tutorials/Getting Started/Getting Started with NXT and TETRIX

Getting Started with NXT and TETRIX

Download Firmware

ROBOTC requires a different firmware from the other programming languages available for the NXT. This firmware is what unlocks most of the advanced functionality found in ROBOTC.

You can update the firmware on the NXT directly from the ROBOTC application. To update the firmware, follow these instructions:

Prerequisite: Make sure that your NXT is connected to your computer via USB and is powered on with a fully charged battery.

1. Open the "Robot" menu and select "Download Firmware."
Download firmware menu option.jpg

2. Since NXT is set as the Platform Type, the "NXT Brick Download" screen will appear. From this screen you can rename your NXT and update the firmware. Make sure that your NXT appears under the "NXT Bricks Currently Connected via USB" list before proceeding. If the NXT does not appear, make sure it is connected via USB, powered on, and that the NXT USB driver is installed. Then click the "Refresh Lists" button to see if your brick can be found.

3. To start downloading firmware, click the "F/W Download Button."
Nxt select brick.jpg

4. After clicking the "F/W Download" button, you will see the "Select NXT firmware file" file selection screen. ROBOTC will automatically open to the Firmware folder and show you all of the available firmwares available for the NXT. NXT firmware files have the extension ".rfw". Select the highest numbered firmware file that follows the "NXTXXXX.rfw" format. Once that firmware file is selected, click the "Open" button to start downloading the firmware to the NXT.

Note: Always select the highest version number available with the "NXT" prefix.
Nxt select firmware.jpg

5. As the firmware is downloading, your NXT will shut itself off and turn itself back on. Once the firmware has been successfully downloaded, you should see "Firmware download completed" on the "NXT Brick Download" screen, under the "Message Log". Your NXT is now ready to be used with ROBOTC.
Nxt firmware complete.jpg

Sample Programs

OOne of the best ways to start working with ROBOTC is to look at already developed programs. ROBOTC for Mindstorms comes with over 150 sample programs to help new programmers learn how to program their robots.

To access the sample programs, go to the "File" menu and select "Open Sample Program".

The sample programs folder is organized by topic. ROBOTC will automatically open the sample programs folder for the robot platform you have selected.

Just double click on one of the sample programs to open it up and learn more about ROBOTC programming.

Compiling and Downloading

ROBOTC is an "Integrated Development Environment." ROBOTC has a custom text editor to assist the programmer by color coding different potions of code to differentiate between integers, reserved words, functions and parameters.


ROBOTC also contains a compiler for turning user generated code into a byte-code language that the different robot platforms can understand. To run the compiler, go to the "Robot" menu and select "Recompile Program" or hit F7 on your keyboard.

When the compiler runs, ROBOTC will check your program for errors and warnings that would cause it to run improperly on the robot. Rather than send broken code to your robot, ROBOTC informs you of these errors.

In the example below:

  • The reserved word 'motor' was incorrectly typed as 'Motor', generating a warning. A warning tells the user that they've created an error, but ROBOTC is able to correct it when the program is sent to the robot. A program with warnings will compile successfully, but users should use good programming practice to avoid warnings. Warnings are denoted by a yellow "X".
  • The code on line 5 is missing a semicolon, which is generating an error. An error will prevent the program from being sent to the controller. In this example, ROBOTC is informing the user they left a semicolon out of their program which is preventing the program from being compiled. Errors are denoted by a red "X".


Once your program has successfully compiled, you can send the program to the controller by selecting the "Compile and Download Program" option under the "Robot" menu or hitting F5 on your keyboard.
Compile download.png

Once the download starts, a "Download Progress" window will appear. This window shows the transfer status of the compiled byte-code to the robot.

Once the download finishes, the built-in debugger launch. Some windows will launch, such as the "NXT Device Control Display" and the "Program Debug" window. Others may launch docked into the interface, such as the "Global Variables" screen. You can start your programs execution by clicking the "Start" button on the "Program Debug" window. Learn more about these windows in the 'Debugger' section of the help file.

Test I2C

ROBOTC has a very powerful utility for testing digital sensors on the NXT. Digital sensors are those that support the industry standard I2C protocol for communications between the NXT and the sensor. The utility allows you to easily test an I2C sensor on the NXT. A screen shot of the utility is shown below.

I2C Overall.gif

SensorPort Config.gif

Sensor Port Configuration Use these drop down menu items to set the sensor type and sensor mode for each of the four sensor ports. When this utility is first opened, it will interrogate the NXT to get the current settings of these values. The “Fast I/O” check-mark is read-only. It is calculated from the type of sensor. If you want to test a LEGO ultrasonic tester with this utility, do not set the type to “SONAR”. This will activate the built-in firmware device driver which will periodically poll the value of the ultra-sonic sensor. The device driver does not expect any other application to send I2C messages to the sensor! Instead set the type to “I2C Custom Slow”.
Firmware AllSensors.gif

All I2C Fast Sensor/All I2C Slow Sensors Use either of these two buttons to quickly configure all four sensor ports as a custom I2C sensor. “Fast” sensors will use the ROBOTC firmware capability to transmit I2C messages at five times the speed found in the standard LEGO supplied firmware. Fast mode generally works with all third party sensors, slow mode is required for the LEGO ultrasonic sensor. The difference is that most 3rd party sensors include a microprocessor that has I2C messaging support in hardware and can keep up with the faster ROBOTC messaging rate. Slow sensors have a “bit-banged’ implementation and cannot keep up.

Firmware Version Configure these parameters for either standard LEGO firmware or ROBOTC firmware. Standard firmware does not support fast mode signaling and will always try to send a I2C message three times before reporting failures. Trying three times can easily mask intermittent transient errors. The number of total tries can be user configured in the ROBOTC firmware. The default value is a total of three tries. Setting the number of retries to zero is useful to ensure transient errors are not masked.

I2C message.gif

Port Selects which of the four ports on the NXT the message will be sent to.

Output Message The hexadecimal bytes of the message to be sent to the sensor

Reply Len (Length) The length of the reply expected from the sensor in bytes

Reply The reply returned from the sensor in hedadecimal (and converted to ASCII)

Select A checkbox to determine if the selected message should be included or excluded from the test cycle.
Verify Once Stats.gif

Once/Continuous Buttons These buttons select whether a single test cycle or continuous testing should be performed.

Verify Write If checked, the NXT will send an ACK message to check if the I2C message was successfully sent to the NXT. The "Failed" text box will return a count of the number of failed messages.

Count A text box containing the number of messages sent in total.

Bus Errors Number of bus errors encountered during error transmission. Bus error is detected by the I2C firmware and usually indicates an attempt to send an I2C message to a sensor that does not support I2C messaging.

No Reply Number of messages sent to the I2C message that did not recieve a reply from the sensor.

Diff Msg (Different Message) Number of different messages recieved from the I2C sensor... this counter will not increment when the same message is recieved from the I2C sensor in succession.