LEGO Mindstorms EV3


Line Follower

Example program


*/

UBYTE     prg[] =                       //  p5.c
{                                       //
  PROGRAMHeader(0,1,0),                 // 0    VersionInfo,NumberOfObjects,GlobalBytes
  VMTHREADHeader(0,3),                  // 12   OffsetToInstructions,LocalBytes
                                        //
                                        // 24   VMTHREAD1
                                        //      {
  opUI_WRITE,LC0(PUT_STRING),LCS,           //        UI_WRITE(STRING,"    LineFollower\r\n")
    ' ',' ',' ',' ',                    //
    'L','i','n','e','F','o','l',        //
    'l','o','w','e','r',                //
    '\r','\n',0,                        //
  opUI_FLUSH,                           //        UI_FLUSH
                                        //
  opINPUT_READ,LC0(0),LC0(1),           //        INPUT_READ(0,0,2,LV0)       // Read light sensor
    LC1(2),LC0(1),LV0(0),               //
  opDIV8,LV0(0),LC0(2),LV0(0),          //        LV0 /=  2
  opADD8,LV0(0),LC0(15),LV0(0),         //        LV0 +=  15
                                        //
                                        //        do
                                        //        {
  opINPUT_READ,LC0(0),LC0(1),           //          INPUT_READ(0,0,2)         // Read light sensor
    LC1(2),LC0(1),LV0(1),               //
  opSUB8,LV0(1),LV0(0),LV0(1),          //          LV1    -=  LV0
  opDIV8,LV0(1),LC0(2),LV0(1),          //          LV1    /=  2
  opADD8,LC1(40),LV0(1),LV0(2),         //          LV2     =  40 + LV1
  opSUB8,LC1(40),LV0(1),LV0(3),         //          LV3     =  40 - LV1
                                        //
  opOUTPUT_POWER,LC0(0),LC0(1),LV0(3),  //          OUTPUT_POWER(0,0x1,LV3)   // Motor 1 = LV3
  opOUTPUT_POWER,LC0(0),LC0(2),LV0(2),  //          OUTPUT_POWER(0,0x2,LV2)   // Motor 2 = LV2
                                        //
  opOUTPUT_START,LC0(0),LC0(3),         //          OUTPUT_START(0,0x3)
                                        //
                                        //        }
  opJR,LC1(-39),                        //        while (TRUE)
  opOBJECT_END                          //      }
};

/* 

LEGO® Robotics Firmware Documentation
Confidential Information © 2013 The LEGO Group