# RCX VLL

An NQC library to enable a LEGO RCX to send Visual Light Link (VLL) commands to a LEGO MicroScout.

## MicroScout Direct (Immediate) VLL commands

When sent, the MicroScout will respond directly to these commands by executing them.

    port: set to the RCX output port where the light source for sending VLL
          is attached; either OUT_A, OUT_B or OUT_C.
    MsInit(port) - Initialize communication.
          Run this once before starting your first commands, and again if
          MsOff() has been used and you want to start sending new commands.
    MsOff(port) - Turn off communication
    MsFwd(port) - Motor forward
    MsRev(port) - Motor reverse
    MsStopMotors(port) - Stop motor
    MsBeep1(port) - Play beep 1
    MsBeep2(port) - Play beep 2
    MsBeep3(port) - Play beep 3
    MsBeep4(port) - Play beep 4
    MsBeep5(port) - Play beep 5
    MsRunScript(port) - Run a previously programmed script (see below)
    MsDeleteScript(port) - Delete a previously programmed script

## MicroScout VLL Scripting Commands

A sequence of up to 15 of the following commands can be sent to the MicroScout, which will together form a script. The MicroScout will subsequently execute them when pressing the “run” button or sending it the direct command MsRunScript().

    port: set to the RCX output port where the light source for sending
          VLL is attached; either OUT_A, OUT_B or OUT_C.
    MsScriptFwd05(port) - Run motor forward for 0.5 seconds
    MsScriptFwd10(port) - Run motor forward for 1.0 seconds
    MsScriptFwd20(port) - Run motor forward for 2.0 seconds
    MsScriptFwd50(port) - Run motor forward for 5.0 seconds
    MsScriptRev05(port) - Run motor reverse for 0.5 seconds
    MsScriptRev10(port) - Run motor reverse for 1.0 seconds
    MsScriptRev20(port) - Run motor reverse for 2.0 seconds
    MsScriptRev50(port) - Run motor reverse for 5.0 seconds
    MsScriptBeep1(port) - Play beep 1
    MsScriptBeep2(port) - Play beep 2
    MsScriptBeep3(port) - Play beep 3
    MsScriptBeep4(port) - Play beep 4
    MsScriptBeep5(port) - Play beep 5
    MsScriptWaitLight(port) - Wait until the light sensor detects a light source
    MsScriptSeekLight(port) - Turn on the motor if a light source is detected
    MsScriptCode(port) -
    MsScriptKeepAlive(port) -

## Usage

Include rcxvll.nqh in your NQC program, then the Ms commands can be used. Example program using direct commands:

    #include "rcxvll.nqh"
    task main()
    {
       MsInit(OUT_A);  // Lamp attached to Output A

       //move motor forwards and backwards once
       MsFwd(OUT_A);
       Wait(20);
       MsRev(OUT_A);
       Wait(20);

       //now produce all five beeps
       MsBeep1(OUT_A);
       Wait(150);
       MsBeep2(OUT_A);
       Wait(150);
       MsBeep3(OUT_A);
       Wait(150);
       MsBeep4(OUT_A);
       Wait(150);
       MsBeep5(OUT_A);
       Wait(150);

       // Always turn off the lamp when done, to save batteries.
       MsOff(OUT_A);
    }

References

- Original Documentation Source
- Author’s Usage Example