 
 void setupSerial()
 {
+  Wire.begin(); // start up I/O expanders
+  
   Serial.begin(SERIAL_SPEED);
   Serial.println();
   Serial.flush();

  }

  delay(DELAY_LOOP);
  Serial.flush();
}


#define DELAY_OP 100

// misc
#define OPS (sizeof(opPin) / sizeof(uint8_t))

#define ANALOG_MAX (float)1023 // these two are for converting 0-1023 to 0-100
#define THOTTLE_MAX (float)INT8_MAX
#define RAMP_MAX 125
#define RAMP_MIN -125
#define DIR_MAX 1023
#define DIR_MIN -1023

enum dir { full, half, zero };


// helm control variables
int16_t pitch, yaw, roll;
uint8_t throttle;
int8_t pitch_adj, yaw_adj, roll_adj; // for ramping the directional input
boolean pitch_stick = true, yaw_stick = false, roll_stick = false;

// op control variables
// state == 0 to DELAY_OP-1 -> off / debounce, state == DELAY_OP -> on
uint8_t opState[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
// operation pins set to zero are skipped
uint8_t opPin[] =
{
  0,             // null
  0,             // action group 1
