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.begin(9600);
  Serial.println("Program begin...");
  Serial.println("This program will calibrate the ESC.");
  while (!Serial.available());//wait for the signal
  Serial.read();
  motor.attach(MOTOR_PIN);

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

  // Wait for input
  while (!Serial.available());
  Serial.read();
  //delay(1000);
  // Send min output
  Serial.println("Sending minimum output");
  motor.writeMicroseconds(MIN_SIGNAL);
  while (!Serial.available());
  Serial.read();
}

void loop() {  
  //Serial.println("Now writing for writting");
  motor.writeMicroseconds(800);
 //   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!!