Si tu lisais un peu les docs tu verrais que l'argument attendu par servo.write() est un angle compris entre 0 et 180.
Maintenant, que tu donnes ta consigne sous la forme -90 à +90 ou 0 à 180 dans les 2 cas la fourchette sera la même, c'est juste un offset sur la valeur que tu manipules.
Si tu veux piloter plus finement ton servo, tu peux utiliser servo.writeMicroseconds() qui te permettra de balayer toute la course possible du servo avec un pas assez fin.
Re,
Pour les servomoteurs, il y a un flou sur les caractéristiques techniques données par les constructeurs. Les datasheets des servos n'ont même pas le minimum de données techniques.
Il faut savoir que les servos se pilotent, selon les modèles, en 50 Hz, 120 Hz, 200 Hz, 333 Hz et même 560 Hz.
Position centrale : 1500 us ou 1520 us pour les versions 50, 120, 200 et 333 Hz et 760 us pour la version 560 Hz
Compte tenu du mode d'asservissement de position par bande morte, il est utopique de commander les servos (hobbyistes) avec plus de 100 pas différents.
Mais c'est juste mon avis