Skywalker ESC 12a with Arduino problem

I use ESC Skywalker 12A with the Arduino with the below code:
In the setup section, its purpose is to set the operating range of the ESC.
In the loop, it will rotate the motor

For 1 of my ESC, it works fine, however, the other 3, it doesn’t. I have to change the value 800 in the loop() to 1200 to get the motor rotate. Also, the other 3 esc, even with value 1200, seems like their motor rotating speed is equal to the 1st one with 800. I have switched the ESC and motor and certainly this is a ESC problem.

Anyone encounter this or know the solution? It has took me 2 days through

#include <Servo.h>

#define MAX_SIGNAL 1500
#define MIN_SIGNAL 800
#define MOTOR_PIN 9

Servo motor;

void setup() {
  Serial.println("Program begin...");
  Serial.println("This program will calibrate the ESC.");
  while (!Serial.available());//wait for the signal;

  Serial.println("Now writing maximum output.");
  Serial.println("Turn on power source, then wait 2 seconds and press any key.");

  // Wait for input
  while (!Serial.available());;
  // Send min output
  Serial.println("Sending minimum output");
  while (!Serial.available());;

void loop() {  
  //Serial.println("Now writing for writting");
 //   motor.writeMicroseconds(MIN_SIGNAL);

Some ESCs are kinda picky. I use a HobbyKing ESC and it likes a minimum pulse of around 1000us. It may be that your other ESCs don't see 800us as a "minimum signal". BTW, the maximum pulse length for full throttle should be 2000us.

#define MAX_SIGNAL 2000
#define MIN_SIGNAL 1000

OK, I tried it and it seems to work fine. I change the 800 in loop() to 1100 and all the motor rotate! Before, the 3 motors I mentioned never rotate at 1100.

You sir are demi-god!!