Influence by Serial Monitor

Hello Everyone, First time posting on these forums :slight_smile:

Have just recevied a couple of ESC's to start building my own quad copter, Everything is running well and i can spool up the motors from the arduino via the esc YAY :slight_smile:
I then diconnected the usb from the arduino and attempted to run the quad purely from battery..... no luck, esc's just sit there and beep....ok.
Checked wiring and everything is well, plug the Arduino back in via USB, open up Serial Monitor and sure enough everything looks and and i have working motors again.. YAY :slight_smile:
So i disconnect the arduino from the usb connection and have the same problem again, motors beeping with no spin up.... hmmm what is going on here.
Connect the arduino back to the PC, this time not opening the Serial Monitor and sure enough i continue to have the issue. I open up Serial Monitor and start everything again and it all works???

So what i have is a situation were some signal is going weird if i do not have Serial Monitor open. Does not matter if i remove all references to serial.

Any idea what could be causing this?

*Edit - Typo

[ Borrowed Code - Slightly modified (Orig: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1226292633) ]

// this uses the Arduino servo library included with version 0012

// caution, this code sweeps the motor up to maximum speed !
// make sure the motor is mounted securily before running.

#include <Servo.h>

Servo myservo;

void arm(){
// arm the speed controller, modify as necessary for your ESC
setSpeed(0);
delay(1100); //delay 1 second, some speed controllers may need longer
}

void setSpeed(int speed){
// speed is from 0 to 100 where 0 is off and 100 is maximum speed
//the following maps speed values of 0-100 to angles from 0-180,
// some speed controllers may need different values, see the ESC instructions
int angle = map(speed, 0, 100, 0, 180);
myservo.write(angle);

}

void setup()
{
myservo.attach(9);
arm();
Serial.begin(9600);
setSpeed(15);
delay(3000);
}

void loop()
{
int speed;
// Serial.println("Spin Up");
// sweep up from 0 to to maximum speed in 20 seconds
for(speed = 0; speed <= 50; speed += 5) {
setSpeed(speed);
delay(500);
Serial.println(speed);
}
// Serial.println("Spin Down");
// sweep back down to 0 speed.
for(speed = 45; speed > 0; speed -= 5) {
setSpeed(speed);
delay(500);
// Serial.println(speed);
}
setSpeed(0);
delay(5000); // stop the motor for 5 seconds
}

When not on USB exactly how are you powering the Arduino?