libreria servo.h con servo hitec hs-785hb

Ciao,
prima di tutto ti ringrazio dell'aiuto ...

non riesco a capire come possa trasformare la write in writemicroseconds ... ti allego il codice forse riesco a farmi capire :

// library:
#include <LiquidCrystal.h>
#include <Servo.h>

// Define object:
LiquidCrystal objLcd( 12 , 11 , 5 , 4 , 3 , 2);

Servo objOschi_1;

// set pin numbers:

const int OSCI_1 = 46;
const int SET = 32;
const int PIU = 33;
const int MENO = 34;
const int CONF = 35;

// variables will change:
int StatoBottone=0;
int val;
int posizione = 10;
int Numero_Pompa = 1;
int Angolazione_min = 1;
int Angolazione_max = 360;

char buffer[11];

boolean Sommo = true;

void setup() {

objOschi_1.attach(OSCI_1);

pinMode(SET, INPUT );
pinMode(PIU, INPUT);
pinMode(CONF, INPUT);
// attachInterrupt(0, SettingMode, RISING );
InitLcd();
Serial.begin(9600);
}

void loop() {

if (digitalRead(SET) == HIGH) { SettingMode(); } ;

objOschi_1.write(posizione);

if (Sommo){

posizione++;

if (posizione >=Angolazione_max) { Sommo=false; } ;
}
else {

posizione--;
if (posizione <=Angolazione_min) { Sommo=true; } ;
}

delay(15);

};

void InitLcd() {

objLcd.begin(16, 2);

objLcd.print("Connecting ...");

delay(1500);

objLcd.clear();
objLcd.setCursor(0, 0);
objLcd.print("OsciMotion Italy");

}

void SettingMode()
{

boolean setMode = true;
boolean setNotConfirmPompa = true;
boolean setNotConfirmAngoloMin = true;
boolean setNotConfirmAngoloMax = true;
int setModeLevel = 0;
int AngoloMin = Angolazione_min;
int AngoloMax = Angolazione_max;

Numero_Pompa=1;

while ( setMode )
{

if ( setModeLevel == 0 )
{

sprintf(buffer, "Pompa N. %d", Numero_Pompa);

objLcd.clear();
objLcd.setCursor(0, 0);
objLcd.print("Scegliere Pompa");
objLcd.setCursor(0, 1);
objLcd.print(buffer);

delay(15);

while ( setNotConfirmPompa )
{
if (digitalRead(PIU) == HIGH)
{
Numero_Pompa++ ;

if (Numero_Pompa > 5) {Numero_Pompa=1;};

sprintf(buffer, "Pompa N. %d", Numero_Pompa);

objLcd.setCursor(0, 1);
objLcd.print(buffer);

delay(400);
}

if (digitalRead(MENO) == HIGH)
{
Numero_Pompa-- ;

if (Numero_Pompa < 1) {Numero_Pompa=5;};

sprintf(buffer, "Pompa N. %d", Numero_Pompa);

objLcd.setCursor(0, 1);
objLcd.print(buffer);

delay(400);
}

if (digitalRead(CONF) == HIGH)
{
setModeLevel++;

setNotConfirmPompa=false;

delay(200);
}
}
}

if ( setModeLevel == 1 )
{

sprintf(buffer, "Angolo %d", AngoloMin);

objLcd.clear();
objLcd.setCursor(0, 0);
objLcd.print("Angolo Minimo");
objLcd.setCursor(0, 1);
objLcd.print(buffer);

objOschi_1.write(AngoloMin);

delay(15);

while (setNotConfirmAngoloMin)
{
if (digitalRead(PIU) == HIGH)
{
AngoloMin++ ;

if (AngoloMin > 170) {AngoloMin=1;};

sprintf(buffer, "Angolo %d", AngoloMin);

objLcd.clear();
objLcd.setCursor(0, 0);
objLcd.print("Angolo Minimo");
objLcd.setCursor(0, 1);
objLcd.print(buffer);

objOschi_1.write(AngoloMin);

delay(250);
}

if (digitalRead(MENO) == HIGH)
{
AngoloMin--;

if (AngoloMin < 1) {AngoloMin=170;};

sprintf(buffer, "Angolo %d", AngoloMin);

objLcd.clear();
objLcd.setCursor(0, 0);
objLcd.print("Angolo Minimo");
objLcd.setCursor(0, 1);
objLcd.print(buffer);

objOschi_1.write(AngoloMin);

delay(250);
}

if (digitalRead(CONF) == HIGH)
{
setModeLevel++;

setNotConfirmAngoloMin=false;

Angolazione_min=AngoloMin;
posizione=AngoloMin;

Sommo = true;

delay(200);
}
}
}

if ( setModeLevel == 2 )
{

sprintf(buffer, "Angolo %d", AngoloMax);

objLcd.clear();
objLcd.setCursor(0, 0);
objLcd.print("Angolo Massimo");
objLcd.setCursor(0, 1);
objLcd.print(buffer);

objOschi_1.write(AngoloMax);

delay(15);

while (setNotConfirmAngoloMax)
{
if (digitalRead(PIU) == HIGH)
{
AngoloMax++ ;

if (AngoloMax > 360) {AngoloMax=1;};

sprintf(buffer, "Angolo %d", AngoloMax);

objLcd.clear();
objLcd.setCursor(0, 0);
objLcd.print("Angolo Massimo");
objLcd.setCursor(0, 1);
objLcd.print(buffer);

objOschi_1.write(AngoloMax);

delay(250);
}

if (digitalRead(MENO) == HIGH)
{
AngoloMax--;

if (AngoloMax < 1) {AngoloMax=1;};

sprintf(buffer, "Angolo %d", AngoloMax);

objLcd.clear();
objLcd.setCursor(0, 0);
objLcd.print("Angolo Massimo");
objLcd.setCursor(0, 1);
objLcd.print(buffer);

objOschi_1.write(AngoloMax);

delay(250);
}

if (digitalRead(CONF) == HIGH)
{
setModeLevel++;

setNotConfirmAngoloMax=false;

Angolazione_max=AngoloMax;
posizione=AngoloMax;

Sommo = false;

delay(200);
}
}
}

if ( setModeLevel == 3 ) {

objLcd.clear();
objLcd.setCursor(0, 0);
objLcd.print("Saving ...");

delay(600);

objLcd.clear();
objLcd.setCursor(0, 0);
objLcd.print("OsciMotion Italy");

setMode = false;

}

}

delay(600);

}

Come vedi ho dei valori iniziali ed il servo fa da valore minimo a valore massimo poi successivamente da valore massimo a minimo ...

Se premo il tasto Setting posso impostare il valore minimo attraverso i bottoni più e meno (man mano che premo vedo il servo che si muove) ... stessa cosa per valore massimo ...

come posso trasformare il valore posizione 1 in microseconds ?

il mio servo dovrebbe fare al max 360° mentre il servo gira 3,5 volte ...

please help