Arming ESC for my Arduino Drone Project

So I am trying to arm this XXD HW30A ESC with a A2212 1000Kv motor with an arduino. I have the ESC connected to pin 9 of my Uno, and then also connected to ground.

I have tried sending a 2000 uS signal with the Servo library to the esc then a 700 to throttle low, but it constantly beeps. I have been toying around with the time sent and every so often at different times I get a quick double beep then its back to the constant beeping and I have no idea what to do.

Coded by Marjan Olesch
Sketch from
Open source - do what you want with this code!
#include <Servo.h>

int value = 0; // set values you need to zero

Servo firstESC, secondESC; //Create as much as Servoobject you want. You can controll 2 or more Servos at the same time

void setup() {

  firstESC.attach(9);    // attached to pin 9 I just do this with 1 Servo
  Serial.begin(9600);    // start serial at 9600 baud


void loop() {

//First connect your ESC WITHOUT Arming. Then Open Serial and follo Instructions


    value = Serial.parseInt();    // Parse an Integer from Serial


That's a really strange bit of code.

The normal arming sequence is in setup() with write(0) or writeMicrseconds(1000), wait for 2 seconds and then carry on into loop(). Starting the ESC up at 2000 will usually kick it into programming mode which is definitely not what you need.

How are you powering the ESC/motor and the Arduino?


This video indicates that the arming sequence is to power on with full throttle, wait some time (1 or 2 seconds?) and then go to zero throttle and wait (1 or 2 seconds?)

I do not see in your code where you do that. I would suggest that you put it in setup.
2000ms is often used for full throttle.
1000ms is often used for zero throttle.

Use the forum search feature for “arm ESC”.