     See details in the comments for the startMotor() function below.
 
  Note: This was adapted (a little bit) from the example code for the SparkFun
-    (2-chip, 2-motor) Monster Moto Shield.
+    (2-chip, 2-motor) Monster Moto Shield.  However, that code is barely workable and
+    has glaring errors (e.g. calling analogWrite with a value > 255 in spite of
+    the comment that says otherwise).
  Date: 2016/10/10
  Author: R Thomas
  

        }
    }

    // on full back and forth (4 seconds total)
    programs[0][0]->addProgramStep(new ProgramStep(FORWARD, 255, 2000));
    programs[0][0]->addProgramStep(new ProgramStep(REVERSE, 255, 2000));
    // on lower power back and forth (6 seconds total)
    programs[0][0]->addProgramStep(new ProgramStep(FORWARD, 127, 3000));
    programs[0][0]->addProgramStep(new ProgramStep(REVERSE, 127, 3000));
    // off for a few seconds
    programs[0][0]->addProgramStep(new ProgramStep(BRAKEGND, 0, 2000));
    // back and forth 3 times quick
    programs[0][0]->addProgramStep(new ProgramStep(REVERSE, 127, 250));
    programs[0][0]->addProgramStep(new ProgramStep(FORWARD, 127, 250));
    programs[0][0]->addProgramStep(new ProgramStep(REVERSE, 127, 250));
    programs[0][0]->addProgramStep(new ProgramStep(FORWARD, 127, 250));
    programs[0][0]->addProgramStep(new ProgramStep(REVERSE, 127, 250));
    programs[0][0]->addProgramStep(new ProgramStep(FORWARD, 127, 250));
    programs[0][0]->addProgramStep(new ProgramStep(REVERSE, 127, 250));
    
    programs[0][1]->addProgramStep(new ProgramStep(FORWARD, 200, 500));
    programs[0][1]->addProgramStep(new ProgramStep(BRAKEGND, 0, 3000));

    programs[1][0]->addProgramStep(new ProgramStep(BRAKEGND, 0, 1000));
    programs[1][0]->addProgramStep(new ProgramStep(REVERSE, 200, 200));
    programs[1][0]->addProgramStep(new ProgramStep(BRAKEGND, 0, 1000));
    programs[1][0]->addProgramStep(new ProgramStep(FORWARD, 200, 200));

    programs[1][1]->addProgramStep(new ProgramStep(BRAKEGND, 0, 10000));
    programs[1][1]->addProgramStep(new ProgramStep(FORWARD, 200, 1000));
    
    // Initialize stopped/braked
    stopMotor();

    
    pinMode(PIN_PROGRAM_SWITCH_1, INPUT_PULLUP);
    pinMode(PIN_PROGRAM_SWITCH_2, INPUT_PULLUP);
    pinMode(PIN_PARK_TRIGGER, INPUT_PULLUP);
    pinMode(PIN_PARK_FEEDBACK, INPUT_PULLUP);

    motor1State = new MotorState();
    for (int i=0; i<2; i++) {
