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.