Lo standard per i servo RC è che la loro posizione deve essere aggiornata ogni 20 ms (50Hz), questo vuol dire che è inutile cercare di aggiornarla molto più velocemente, p.e. 10 ms, ed è deleterio aggiornarla molto più lentamente, p.e. 1s, se si vuole ottenere un movimento fluido alla velocità desiderata.
Nel tuo caso devi creare un ciclo con un timing di 20ms che aggiorna la posizione del servo del corretto numero di step ogni volta utilizzando la myservo.writeMicroseconds() che consente una risoluzione maggiore rispetto alla myservo.write(), con la prima puoi impostare variazioni di 1us sul comando PPM, pari a circa 0.09° ciascuna (1 ms = 90°), con la seconda imposti movimenti di grado in grado, molto meno precisa e il servo si sposta tra le varie posizioni alla massima velocità.
Dato che anche la myservo.writeMicroseconds() accetta solo numeri interi compresi tra 500 (-90°) e 2500 (+90°) va da se che il suo incremento deve avvenire in accordo con tale range di valori e non è detto che puoi incrementare il valore ad ogni ciclo di 20 ms, sopratutto nel caso di movimenti molto lenti, quindi dovrai prevedere un contatore che ti permette di incrementare di una unità ogni tot cicli servo in accordo con l'escursione e il tempo desiderato.
Se tutto questo ti sembra complicato hai visto giusto, far muovere in modo fluido, e controllato, un servo non è una cosa semplice da fare come il farlo passare da una posizione all'altra con movimenti sempre alla massima velocità ![]()