Main content

Alert message

Surprisingly, only one rule deviation was required for our team to compete in FLL. We needed a line oriented programming language that can work with the braille display so that blind students can program and large print so our visually impaired students can read the screen. The visual-only programming environment of LEGO® MINDSTORMS® (NXT-G) does not accommodate visual impairment with the exception of screen enlargement. However, even modest screen enlargement makes MINDSTORMS practically unusable for the visually impaired. We sought and received a deviation from FLL game designer Scott Evans to use a the line oriented programming language called NXC. It is a "C" like language that works well with our 80-cell braille displays and screen reader software (JAWS®) and also supports LEGO MINDSTORMS. In practice, we usually turned off JAWS and used the braille display only.

Coding without a Visual Language

Coding with the required visual programming environment (image below) and language NXT-G turned out to be impossible for our blind student and nearly so for all but one of our visually impaired students. One of our VI students had actually used NXT-G when he still had good vision, but as his sight was now such that it was very difficult for him to make any decent progress programming with screen magnifiers. Without screen magnification, he too could not use NXT-G.

Visual programming environment with icons for commands

Our Programming Environment

Programming with NXT-G was really not an option for us, even with our most visually capable student. We also had the goal to have everyone on the team to be able to do every role. This meant we had to choose an environment that was line oriented and worked with JAWS® instead of a visual environment. As we found over time, the best setup was using JAWS with the sound turned off and using an 80-cell braille display. In the attached picture, you will also see that we "disabled" the touchpad cursor control by covering it with an index card. Low tech, but effective.
programmer workstation, laptop with braille display

With the evidence in hand that we required a deviation from the rules on the programming environement, we went ahead and sought a deviation. Kay wrote a letter to Scott Evans, head FLL game designer at FIRST. Scott answered quickly and gave us clearance to go ahead and compete with whatever software environment worked for us. That turned out to be the Notepad++ and the NXC programming language.

We had a couple of choices of text oriented coding languages and settled on NXC. Other line oriented languages like RobotC would most likely work fine, but are not free. NXC is totally free. We made some initial tests of the environent, specifically with screen magnifiers and JAWS and decided to use NXC. Later, we introduced the braille displays, which also worked well, so we feel the choice of NXC was perfect for us.

There is a development environment for NXC called Bricx Command center which we tried and found cumbersome. We switched to Notepad++ which is a highly customizeable environment which worked well for us. The primary thing we did was to simplify the environment giving fewer bells and whistles for the kids to get confused on. We also used the Notepad++ macro capability to have a simple way of compiling and loading out code on the NXT. Here are some Notepad++ setup notes here.

We started using a JAWS workstation only without the use of the braille display. This turned out to be somewhat of a disaster. Most of the students were attempting to learn NXC, Notepad++ and programming all at the same time. Trying to instruct and have the students attempt to "find" their place in code was frustrating for them and me. It was definitely no fun and not a good learning environment. When we added the 80-cell braille display and turned off the sound from JAWS, things went extremely well. The students could be scanning through the program on the braille display while we talked and know exactly where they were. A neat feature of the braille display is also that once you know where you are, there are "Some important keys/key sequences:
"JAWS Key" - Ins-"J" - on desktop
Ins-F4 - unload JAWS
Ctrl-Alt-"J" - hot key JAWS
Ctrl - "quiet" JAWS key

JAWS Settings
> Braille General
Active Crsor follows braile (check)
Contracted braille (off)
> Advanced
Status cells (none)

hot insert" keys that allow direct insertion of characters at that point. Efficiency and confidence in coding went up dramatically.

NXC offers a larger set of commands and capbilities than is available in NXT-G. For fairness and to simplify the programming task for our new to programming students, we created a subroutine library which mimicked the coding blocks of NXT-G. We had commands like

Move, Right, Left, RightSpin, LeftSpin, ArmDown and ArmUp.

In our code, we use the prefix "tsb" (Texas School of the Blind) to avoid name space collisions, so Move was tsbMove, etc. A sample move command would be:

     tsbMove(50, 360, COAST);

This would use the builtin NXT encoders to move both wheels 360 degrees at 50% power and then COAST to a stop (instead of BRAKE).

Sample Programs

I'm going to include some sample programs here. They range from simple standalone programs that are accessed as normal through the NXT menus, to a single "chooser" program which will run a set of missions and give voice feedback to the user. All mission related programming per FLL rules must be done by the students and we followed that rule. Accomodation tasks, like the "Chooser program", the "include file" and the "roller program" were obviously written by the coach.