How to control remote controlled lawnmower with Arduino board and a PC

You can view a video and pictures of my remote controlled lawnmower at:

Currently, the mower is controlled by a Futaba 4YF transmitter. The 2 receivers mounted on the mower receive signals from the Futaba transmitter and send commands via 2 Astro-flight 208d Reversing Controllers to 2 12volt wheel chair motors, which drive the mower.

I want to interface my Windows 7 PC to allow the following 2 steps:

Step #1-Learn Mode
Control the 2 Astro-flight 208d Reversing Controllers on the mower via the PC keyboard or PC joystick and record the sequence of commands to the PC.

Step #2-Playback Mode
Place the mower in the same start position and send commands recorded on the PC in Step #1 to the mower.

Is there a way to plug the 2 Astro-flight 208d Reversing Controllers into an Arduino board that can be controlled by my Windows 7 PC?

Thank you,
Bob Bowie

P.S. Specs on the Astro-flight controllers can be viewed at:
http://www.astroflight.com/208d.html

Is there a way to plug the 2 Astro-flight 208d Reversing Controllers into an Arduino board that can be controlled by my Windows 7 PC?

The controller should be able to be controlled by an arduino just as if it is a servo. For communication you might make a wireless serial setup between the pc and arduino.

I just heard about the Arduino board last week, but have no knowledge of how to send commands from my Windows 7 PC to it and ultimately to the AstroFlight controllers. Any guidance you can provide would be appreciated.

i am still a newbie in this forum but I agree to zoomkat, there are many ways to connect the PC to Arduino,

can be wired or wireless but of course we prefer the wireless ones...

You can connect it via bluetooth or wifi.. :slight_smile:

http://forum.arduino.cc/index.php/topic,40287.0.html

Since your bot is fairly large, you might make a web based inexpensive router bot setup. Below are some ideas from a while back. An IP cam could be added for ~live video.

I do not know C++ and was hoping to send commands to the Arduino board via the serial port using IBM Basic programming language. If this is possible, then give me an example that controls 2 servos (each servo is actually an Astro-flight board which then drives a wheel chair motor). Where should the 2 Astro-flight boards be plugged in to the Arduino board? Specs on the Astro-flight controllers can be viewed at: http://www.astroflight.com/208d.html

Below is some multi servo test code for use with the arduino serial monitor. The Astro-flight controller three wire connection probably can be connected to the arduino with the center red wire to the 5v pin, brown wire to the arduino ground, and the outside orange wire to the arduino control pin. The controller may be expecting 6v instead of 5v, but would be worth checking to see if 5v will work.

//zoomkat 11-22-12 simple delimited ',' string parse 
//from serial port input (via serial monitor)
//and print result out serial port
//multi servos added 

String readString;
#include <Servo.h> 
Servo myservoa, myservob, myservoc, myservod;  // create servo object to control a servo 

void setup() {
  Serial.begin(9600);

  //myservoa.writeMicroseconds(1500); //set initial servo position if desired

  myservoa.attach(6);  //the pin for the servoa control
  myservob.attach(7);  //the pin for the servob control
  myservoc.attach(8);  //the pin for the servoc control
  myservod.attach(9);  //the pin for the servod control 
  Serial.println("multi-servo-delimit-test-dual-input-11-22-12"); // so I can keep track of what is loaded
}

void loop() {

  //expect single strings like 700a, or 1500c, or 2000d,
  //or like 30c, or 90a, or 180d,
  //or combined like 30c,180b,70a,120d,

  if (Serial.available())  {
    char c = Serial.read();  //gets one byte from serial buffer
    if (c == ',') {
      if (readString.length() >1) {
        Serial.println(readString); //prints string to serial port out

        int n = readString.toInt();  //convert readString into a number

        // auto select appropriate value, copied from someone elses code.
        if(n >= 500)
        {
          Serial.print("writing Microseconds: ");
          Serial.println(n);
          if(readString.indexOf('a') >0) myservoa.writeMicroseconds(n);
          if(readString.indexOf('b') >0) myservob.writeMicroseconds(n);
          if(readString.indexOf('c') >0) myservoc.writeMicroseconds(n);
          if(readString.indexOf('d') >0) myservod.writeMicroseconds(n);
        }
        else
        {   
          Serial.print("writing Angle: ");
          Serial.println(n);
          if(readString.indexOf('a') >0) myservoa.write(n);
          if(readString.indexOf('b') >0) myservob.write(n);
          if(readString.indexOf('c') >0) myservoc.write(n);
          if(readString.indexOf('d') >0) myservod.write(n);
        }
         readString=""; //clears variable for new input
      }
    }  
    else {     
      readString += c; //makes the string readString
    }
  }
}

Thanks for the plug info on the Arduino. Hopefully 5 volts will work. I do not know C++ and was hoping to send commands to the Arduino board via the serial port using IBM Basic programming language. If this is possible, please give me an example of what the typical bytes look like that control the 2 servos. I am assuming the serial port settings are: 9600,NoParity,8 Data bits,1 stop bit,no flow control(9600N81).