Motor control with Adafruit shield.

I’m working on a simple robotic arm that has six DC motors controlled by two clones of the Adafruit V1 motor shield (I still need to figure out how to account for two of the motors). So far I’m getting some weird issue where no matter what I do it just moves one motor constantly.

Below is an incomplete version of my code. Can anybody tell me what might be causing the problem?

#include <Servo.h>
#include <AFMotor.h>

#define MOTOR1_A 2 //Motor pins with shield
#define MOTOR1_B 3
 #define MOTOR2_A 1
 #define MOTOR2_B 4
 #define MOTOR3_A 5
 #define MOTOR3_B 7
 #define MOTOR4_A 0
 #define MOTOR4_B 6
// Arduino pins for the PWM signals.
 #define MOTOR1_PWM 11
 #define MOTOR2_PWM 3
 #define MOTOR3_PWM 6
 #define MOTOR4_PWM 5
 #define SERVO1_PWM 10
 #define SERVO2_PWM 9
// Codes for the motor function.
 #define FORWARD 1
 #define BACKWARD 2
 #define BRAKE 3
 #define RELEASE 4

// Declare classes for Servo connectors of the MotorShield.
 Servo servo_1;
 Servo servo_2;
 //Establish code
void setup()
  Serial.println("Hi, my name is Scorbot.");

void loop() {
  char cmd=0;
  Serial.println("Hi I'm Scorbot! \t What would you like to do?");
  Serial.println("0 - Turn on my base?");
  Serial.println("1 - Raise or lower my claw?")
  Serial.println("2 - Bend my elbow?")
  Serial.println("3 - Rotate my claw?");
  Serial.println("7 - Open or close my claw?");

  while  (Serial.available() == 0);
  cmd =;
  switch (cmd) {
  case '0':
  case '1':
  case '2':
  case '3':
    break ;  
  // Select the motor (1-4), the command, 
// and the speed (0-255).
 // The commands are: FORWARD, BACKWARD, BRAKE, RELEASE.
 void motor(int nMotor, int command, int speed)
   int motorA, motorB;
  if (nMotor >= 1 && nMotor <= 4)
     switch (nMotor)
     case 1:
       motorA   = MOTOR1_A;
       motorB   = MOTOR1_B;
     case 2:
       motorA   = MOTOR2_A;
       motorB   = MOTOR2_B;
     case 3:
       motorA   = MOTOR3_A;
       motorB   = MOTOR3_B;
     case 4:
       motorA   = MOTOR4_A;
       motorB   = MOTOR4_B;
    switch (command)
     case FORWARD:
       motor_output (motorA, HIGH, speed);
       motor_output (motorB, LOW, -1);     // -1: no PWM set
     case BACKWARD:
       motor_output (motorA, LOW, speed);
       motor_output (motorB, HIGH, -1);    // -1: no PWM set
     case BRAKE:
       // The AdaFruit library didn't implement a brake.
       // The L293D motor driver ic doesn't have a good
       // brake anyway.
       // It uses transistors inside, and not mosfets.
       // Some use a software break, by using a short
       // reverse voltage.
       // This brake will try to brake, by enabling 
      // the output and by pulling both outputs to ground.
       // But it isn't a good break.
       motor_output (motorA, LOW, 255); // 255: fully on.
       motor_output (motorB, LOW, -1);  // -1: no PWM set
     case RELEASE:
       motor_output (motorA, LOW, 0);  // 0: output floating.
       motor_output (motorB, LOW, -1); // -1: no PWM set

Below is an incomplete version of my code.

Below is an incomplete version of my answer.

The problem...

Are all motor pins supposed to match one pwn pin? All but one do