 
 /* Pixy Support */
 Pixy pixy;
+boolean pixyIsInitialized = false;  // Flag to store if pixy.init() has been called.
 boolean pixyIsReporting = false;  // Determines if Pixy data will be sent.
 byte pixyMaxBlocks = 5;  // Sets the maximum number of Pixy blocks to report.
 

 * SYSEX-BASED commands
 *============================================================================*/

void sysexCallback(byte command, byte argc, byte *argv)
{
  byte mode;
  byte stopTX;
  byte slaveAddress;

    case PIXY_CONFIG:
      if (argv[0] == PIXY_INIT) {
        pixy.init();
        pixyIsInitialized = true;
        // mark pins as Pixy so they are ignore in non Pixy data requests
        setPinModeCallback(PIN_PIXY_MOSI, PIXY);
        setPinModeCallback(PIN_PIXY_MISO, PIXY);
        pixyIsReporting = true;
        pixyMaxBlocks = argv[1];
        if (pixyMaxBlocks == 0) {
          pixyIsReporting = false;
        }
      } else if (argv[0] == PIXY_SET_SERVOS) {
        if (!pixyIsInitialized) {
          return;
        }
        int s0 = argv[1] + (argv[2] << 7);
        int s1 = argv[3] + (argv[4] << 7);
        pixy.setServos(s0, s1);
      } else if (argv[0] == PIXY_SET_BRIGHTNESS) {
        if (!pixyIsInitialized) {
          return;
        }
        int brightness = argv[1] + (argv[2] << 7);
        pixy.setBrightness(brightness);
      } else if (argv[0] == PIXY_SET_LED) {
        if (!pixyIsInitialized) {
          return;
        }
        int r = argv[1] + (argv[2] << 7);
        int g = argv[3] + (argv[4] << 7);
        int b = argv[5] + (argv[6] << 7);
