Controlar un motor brushless con variador esc con arduino mediante un pulsador

Buenas,

Os comento el proyecto que quiero hacer, quiero modificar un quad a bateria para mi hijo de 3 años montado un motor brushless.

Ya tengo el motor junto al esc quiero accionarlo mediante un pulsador usando un arduino uno.
Mi idea es programar una velocidad cuando se accione el boton y ottra velocidad mas baja cuando se suelte en boton durante unos segundos para frenarlo.

he buscado por todos lados y no hay nada que me guie en como hacerlo.
El esquema de conexion lo tengo baste claro, me pierdo en la programacion.
Para que el esc se inicie cuando lo enciendo tengo que decirle que esta en velocidad cero si no el esc me da error.
Lo mas que he llegado hacer es arranque de modo aleatorio y lo unico que se que esta bien son estas lineas de programa:

Servo myservo;

const int buttonPin = 2;
int val;
int buttonState = 0;

void setup() 
{ 
 // Iniciamos el monitor serie para mostrar el resultado
 Serial.begin(9600);
 myservo.attach(9);
 pinMode(buttonPin, INPUT); 
 // Inicializamos al ángulo 0 el servomotor
 myservo.write(0);      
}

En el voip loop me pierdo, si me echarais una mano compartiría el proyecto por si a alguien le interesa realizar algo similar.

Saludos.

Te pongo el código que yo uso para una sierra de mesa. Espero te sirva de guia para hacer lo que quieres.

#include <Servo.h>   
       
Servo myservo;  
int potpin = A5;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin 
int listo = 13;
    
void setup() {  
 pinMode(listo, OUTPUT);  digitalWrite(listo, LOW);  
 myservo.attach(10);   //pin de control al ESC
 arm();  // Usamos la función creada abajo para armar el esc  
 }   
       
void loop() { 
 digitalWrite(listo, HIGH);   //Sierra preparada LED intermitente
 delay(200);               
 digitalWrite(listo, LOW);    
 delay(200);              
 val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023) 
 val = map(val, 0, 1023, 55, 100);     // scale it to use it with motor. Limitado a 100.      
 myservo.write(val);          
}   

void arm() {           //Función de armado  
 myservo.write(0);  
 delay(1000);  
 myservo.write(30);  
 delay(3000);
}

Muchas gracias!!!
A ver si soy capaz a modificarlo usando el pulsador.

Saludos.

Alguien me podría echar un cable?
No se como podría programarlo con un pulsador, con el potenciometro no hay problema pero necesitaría que alguien me orientara