Raspberry Pi / Arduino Motor Control

Here is my code:

int pwm_a = 3;  //PWM control for motor outputs 1 and 2 is on digital pin 3
int pwm_b = 11;  //PWM control for motor outputs 3 and 4 is on digital pin 11

int dir_a = 12;  //direction control for motor outputs 1 and 2 is on digital pin 12
int dir_b = 13;  //direction control for motor outputs 3 and 4 is on digital pin 13

int forward = 4;
int backward = 5;
int left = 6;
int right = 7;

int f_val, b_val, l_val, r_val = 0;

int fast = 255;  // motor speed 100%
int med = 175;   // motor speed 75%
int slow = 100;  // motor speed 39%
int stopped = 0; // motor stopped 0%


void moveForward(int speed)
{

   analogWrite(pwm_a, speed);	// set motor speed
   analogWrite(pwm_b, speed);   // set motor speed

   digitalWrite(dir_a, HIGH);  //Set motor direction, 1 low, 2 high
   digitalWrite(dir_b, LOW);  //Set motor direction, 3 high, 4 low

}


void moveBackward(int speed)
{

   analogWrite(pwm_a, speed);	// set motor speed
   analogWrite(pwm_b, speed);   // set motor speed

   digitalWrite(dir_a, LOW);  //Set motor direction, 1 low, 2 high
   digitalWrite(dir_b, HIGH);  //Set motor direction, 3 high, 4 low

}


void turnRight(int speed)
{

   analogWrite(pwm_a, speed);	// set motor speed
   analogWrite(pwm_b, speed);   // set motor speed

   digitalWrite(dir_a, HIGH);  //Set motor direction, 1 low, 2 high
   digitalWrite(dir_b, HIGH);  //Set motor direction, 3 high, 4 low

}


void turnLeft(int speed)
{

   analogWrite(pwm_a, speed);	// set motor speed
   analogWrite(pwm_b, speed);   // set motor speed

   digitalWrite(dir_a, LOW);  //Set motor direction, 1 low, 2 high
   digitalWrite(dir_b, LOW);  //Set motor direction, 3 high, 4 low

}


void stopRobot()
{
    analogWrite(pwm_a, stopped);   // set motor speed
    analogWrite(pwm_b, stopped);   // set motor speed
}



void setup()
{ 
  Serial.begin(9600);
  
  //Set control pins to be outputs

  pinMode(pwm_a, OUTPUT);  
  pinMode(pwm_b, OUTPUT);
  pinMode(dir_a, OUTPUT);
  pinMode(dir_b, OUTPUT);  

  pinMode(forward, INPUT);
  pinMode(backward, INPUT);
  pinMode(left, INPUT);
  pinMode(right, INPUT);
  
  stopRobot();
}


void loop()
{
  f_val = digitalRead(forward);
  b_val = digitalRead(backward);
  l_val = digitalRead(left);
  r_val = digitalRead(right);
  if (f_val == HIGH)
  {
    moveForward(slow);
  }
  if (b_val == HIGH)
  {
    moveBackward(slow);
  }
  if (l_val == HIGH)
  {
    turnLeft(slow);
  }
  if (r_val == HIGH)
  {
    turnRight(slow);
  }
  
}

As I mentioned before, i'm using Google Code Archive - Long-term storage for Google Code Project Hosting. to switch the GPIO (output) pins of my Raspberry on and off which active the INPUT pins on my Arduino.

My Raspberry is currently powered using a 2A 5v USB supply and my Arduino is powered seperately through my motor sheild with 8 AA batteries.

Thanks, Jason.