comandare servo con shiedl joystick

ciao! vorrei muovere il servo con il joystick, quindi ho preso spunto da sketch di esempio e adesso sono arrivato al punto di avere 8 posizioni(destra, sinistra, su, giù destra giù/su e sinistra giù/su). in poche parole vorrei che sinistra e destra prendessero valori compresi tra 0 e 180. ma se io metto una variabile con un valore (esempio int destra 90) appena vado a destra lui si muove di 90°, invece vorrei che prendesse i valori in base al tempo che tengo il joystick in quella posizione. non so se sono riuscito a spiegarmi benissimo, in poche parole se il joysick è al centro il servo non si muove se vado a destra deve ''incrementare'' a seconda di quanto lo tego in quella posizione e sinistra viceversa. dovrei quindi fare una variabile che prende valori tra 0 e 180 (il C lo sto imparando non sono esperto) e non so come fare. e poi devo dirgli di incrementare quella variabile a seconda della posizione del joystick. spero che almeno l'idea sia giusta. idee? grazie!

la lettura che fai del joystik è digitale o analogica ?
nel primo caso, devi fare un contatore, che in base al tempo di pressione aumenta una variabile, es millis
nel secondo basta usare una banale map
:wink:

dunque il joystick non è altro che 2 potenziometri ,uno per l'asse x e l'altro asse y. quindi analogico. map non l'ho mai usata se trovo qualcosa vado a vedere di che si tratta. e sai mica se riesco anche a regolare la velocità del servo?

lucadh:
dunque il joystick non è altro che 2 potenziometri ,uno per l’asse x e l’altro asse y. quindi analogico. map non l’ho mai usata se trovo qualcosa vado a vedere di che si tratta. e sai mica se riesco anche a regolare la velocità del servo?

#include <Servo.h> 
 
Servo myservo;  // create servo object to control a servo 
 
int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin 
 
void setup() 
{ 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
} 
 
void loop() 
{ 
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023) 
  val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180) 
  myservo.write(val);                  // sets the servo position according to the scaled value 
  delay(15);                           // qui imposti il tempo di ritardo...
}

perfetto, tra poco provo! ti ringrazio molto!