Arduino & Continous Rotation Servos

I am trying to run a VEX servo motor (3-wire) with my Arduino. No matter what I try, I can only get it to run infinitely.
Here are two programs I created to try and get it to work…

#include "Servo.h"
Servo motor;
void setup() {
  motor.attach(9);
  for(int t=0;t<=3000;t+1000){
    motor.write(80);
  }
}
void loop(){
}

and…

#include "Servo.h"
Servo mtr;
void setup(){
  mtr.attach(9);
  mtr.write(80);
  delay(1000);
}
void loop(){
}

The circuit I am using is attached below.

Servo.fzz (4.63 KB)

Servo_bb.png

I think that the 9-volt battery is too weak to power VEX motors. You'll need 7.2V RC battery pack.

I don't see how a 9V would provide less power than a 7.2V, and the battery I had was brand new.

Not sure, if I understand your question, but I spot an error could cause
“hang-up”:

void setup() {
  motor.attach(9);
  for(int t=0;t<=3000;t += 1000){   // <-  "=" sign is missing
    motor.write(80);
  }
}
void loop(){
}

I’m wanting to add 1000 to t, does += add a specific value?

 t += 1000 
 is equivalent to
t = t + 1000

You need add, and save, so next run in cycle variable would progressively increasing.

Your motor may be continuous operating version.
http://www.robotc.net/wiki/Tutorials/Arduino_Projects/Mobile_Robotics/VEX/VEX_Motor_Intro
http://www.robotc.net/wiki/Tutorials/Arduino_Projects/Mobile_Robotics/VEX/VEX_Motor_Intro#What_is_a_Continuous_Rotation_Servo.3F

Yep, the VEX servo is a continuous rotation servo. That is why they have the 2" diameter wheel with a black o-ring around the outside. As compared to a normal servo - 90 degrees is stop. and you have direction control as you move away from 90 degrees along with "some" speed control.

Mine is the one in the middle of the picture on the first link.

Is it possible that it is broken?

I found this library and it seems to work:
http://code.google.com/p/arduino-parallax-continuous-rotation-servo-library/

NEW QUESTION:
Now that I got the motor to run the way I want, how can I get 2 motors to run at the same time?

without seeing the code that you have working I can only guess based on what you posted before.

You have to initialize another servo:

Servo motor2;

Then initialize it to the pin of the second motor, something like this (assuming this code works for your first servo

void setup() {
motor2.attach(XX); // where XX is the pin of the other servo.
for(int t=0;t<=3000;t += 1000){
motor.write(80);
}
}
void loop(){
}

Here is the code I got to work. The question I was asking was a little more general… it can be worded as “How can I run two lines of code at the same time?”
This is my current code to run one servo, based on a library I found online. I just want to run two servos at once, and thought I might be able to get two lines of code to execute AT THE SAME TIME.

#include <ContinuousRotationServo.h>

ContinuousRotationServo Servo;
int distance;

void setup()
{
  Servo.begin(2); // port 2, this library works without PWM
}

void loop()
{
  Servo.rotateLeft(50,100);
  Servo.noMovement(500);
  Servo.rotateRight(50,100);
  Servo.noMovement(500);
}

Not to my knowledge, the processor on the Arduino is only capable of handling one instruction at any given moment in time. But that is a extremely small amount of time. Unless there is a delay or sleep between the 2 calls to the servos will start at the same (human percevable) time.

DCengineer:
Here is the code I got to work. The question I was asking was a little more general… it can be worded as “How can I run two lines of code at the same time?”
This is my current code to run one servo, based on a library I found online. I just want to run two servos at once, and thought I might be able to get two lines of code to execute AT THE SAME TIME.

#include <ContinuousRotationServo.h>

ContinuousRotationServo Servo;
int distance;

void setup()
{
 Servo.begin(2); // port 2, this library works without PWM
}

void loop()
{
 Servo.rotateLeft(50,100);
 Servo.noMovement(500);
 Servo.rotateRight(50,100);
 Servo.noMovement(500);
}

Well first a microcontroller chip is a single core processor that is always capable of only executing one machine instruction at a time, so the whole concept of doing things “AT THE SAME TIME” is something you will have to come to terms with. The processor is very fast so many tasks can be done independently of each other such that from a human point of view it will indeed seem that it can do many things at the same time.

So taking your code example and adding a second servo and giving it the same commands, you would not be able to tell that the micro was not doing two things at the same time even though it is.

#include <ContinuousRotationServo.h>

ContinuousRotationServo Servo;
ContinuousRotationServo Servo2;
int distance;

void setup()
{
  Servo.begin(2); // port 2, this library works without PWM
  Servo2.begin(3);
}

void loop()
{
  Servo.rotateLeft(50,100);
  Servo2.rotateLeft(50,100);
  delay(1000);
  Servo.noMovement(500);
  Servo2.noMovement(500);
  delay(1000);
  Servo.rotateRight(50,100);
  Servo2.rotateRight(50,100);
  delay(1000);
  Servo.noMovement(500);
  Servo2.noMovement(500);
  delay(1000);
}

Lefty

Figured it out: this program works, and it runs two motors at the same time! The key, make sure a delay is after every instance. This program uses the standard Servo.h library.

// successfully runs 2 servos non-continuously
#include <Servo.h>
Servo mtrA;
Servo mtrB;
void setup(){
  mtrA.attach(9);
  mtrB.attach(10);
}
void loop(){
  fwd();
  delay(2000);
  STOP();
  delay(1000);
  turn();
  delay(2000);
  STOP();
  delay(1000);
}
void fwd(){
  mtrA.write(0);
  mtrB.write(180);
}
void turn(){
  mtrA.write(180);
  mtrB.write(180);
}
void STOP(){
  mtrA.write(90);
  mtrB.write(90);
}

Servo2.fzz (6.7 KB)