 const unsigned char MIDDLE_RIGHT_DRIVE_MOTOR_ADDRESS = 129;
 const unsigned char REAR_LEFT_DRIVE_MOTOR_ADDRESS = 128;
 const unsigned char REAR_RIGHT_DRIVE_MOTOR_ADDRESS = 128;
+// Articulation motor addressing
+const unsigned char FRONT_LEFT_ARTICULATION_MOTOR_ADDRESS = 000;
+const unsigned char FRONT_RIGHT_ARTICULATION_MOTOR_ADDRESS = 000;
+const unsigned char MIDDLE_LEFT_ARTICULATION_MOTOR_ADDRESS = 000;
+const unsigned char MIDDLE_RIGHT_ARTICULATION_MOTOR_ADDRESS = 000;
+const unsigned char REAR_LEFT_ARTICULATION_MOTOR_ADDRESS = 000;
+const unsigned char REAR_RIGHT_ARTICULATION_MOTOR_ADDRESS = 000;
+
 
 // Motor addressing offset: If a motor is connected to M1, 
 // This will be 0. If the motor is connected to M2, this should

const unsigned char MIDDLE_RIGHT_DRIVE_MOTOR_COMMAND = 0;
const unsigned char REAR_LEFT_DRIVE_MOTOR_COMMAND = 0;
const unsigned char REAR_RIGHT_DRIVE_MOTOR_COMMAND = 4;

// shorthand that will allow us to use the motor ID as an array index to access
// the relevant constants.
const unsigned char DRIVE_MOTOR_ADDRESS[6] = {
  FRONT_LEFT_DRIVE_MOTOR_ADDRESS,
  FRONT_RIGHT_DRIVE_MOTOR_ADDRESS,
  MIDDLE_LEFT_DRIVE_MOTOR_ADDRESS,
  MIDDLE_RIGHT_DRIVE_MOTOR_ADDRESS,
  REAR_LEFT_DRIVE_MOTOR_ADDRESS,
  REAR_RIGHT_DRIVE_MOTOR_ADDRESS};
const unsigned char DRIVE_MOTOR_COMMAND[6] = {
  FRONT_LEFT_DRIVE_MOTOR_COMMAND,
  FRONT_RIGHT_DRIVE_MOTOR_COMMAND,
  MIDDLE_LEFT_DRIVE_MOTOR_COMMAND,
  MIDDLE_RIGHT_DRIVE_MOTOR_COMMAND,
  REAR_LEFT_DRIVE_MOTOR_COMMAND,
  REAR_RIGHT_DRIVE_MOTOR_COMMAND};
  
  
// Track current motor status so we don't overload our serial lines

// Function to drive a specific motor backwards. 
// Packet format: Address Byte, Command Byte, Value Byte, Checksum.
void driveBackwards(char speed, char motor){
  unsigned char address = MOTOR_ADDRESS[motor];
  unsigned char command = MOTOR_COMMAND[motor] + 1;
  unsigned char checksum = (address + command + speed) & 0b01111111;
  Serial3.write(address);
  Serial3.write(command);
