Go Down

Topic: Come fare per muovere un servo di 10° in 10 secondi in modo continuo? (Read 1 time) previous topic - next topic

crystal13

Ciao a tutti,

sto pilotando un servo con arduino 2009. Vorrei fargli fare un movimento di 10° in 10 secondi. Purtroppo però il movimento va a scatti....io vorrei che fosse continuo. E' colpa del servo che non ce la fa a gestire tale movimento? (in realtà scatta anche a 45° e 10 secondi....a 60°, il movimento non è piu cosi scattoso).

Qui c'è parte dello sketch:
...
myservo.write(10);
delay(1000);
...

Avevo letto che si potrebbe usare la funzione:
myservo.writeMicroseconds(X);

Secondo voi è possibile migliorare le prestazioni o devo lasciar perdere?

Grazie!!!

mancio

Io non ho capito sinceramente il problema. Devi far muovere il servo di 10gradi in 10sec. Però è scatto.. Se te scrivi

Myservo.write(10)
Delay(1000)

Vuol dire ke ti sei spostato a 10 e hai aspettato un secondo..

Potresti fare invece,

Count=0;
While((count++)>10){
Myservo.write(count);
Delay(1000);
}

Non so se funziona xo.. Prova

uwefed

Se vuoi fare muovere un Servo a piccoli passi in tempi lunghi devi pilotarlo in piccoli passi.

Code: [Select]
for (int a=10; a>20;a++)
{
Myservo.write(a);
Delay(1000);
}


Ciao Uwe

crystal13

ciao, scusate ma mi sono espresso male.

Il mio obiettivo è muovere un servo motore di 10° (es. da 0° a 10°) con un movimento che sia continuo e non scattoso. Per non scattoso intendo che il delay (che solo ora ho capito essere la pausa tra un movimento e l'altro del servo) dovrebbe essere diciamo...zero. Cioè, non voglio che il servo faccia una pausa tra uno scatto e l'altro (delay=1000 vuol dire che fa pausa di 1 secondo) ma proprio che il movimento sia continuo.

Spero di essermi spiegato.....

Grazie!!

mancio

Code: [Select]
for (int a=0; a>10;a+=0.000001)
{
Myservo.write(a);
Delay(10);
}


Non so se vanno bene decimali x una servo write.. Ma x ora è l'unica idea ke mi viene in mente.. Il processore andando a 16MHz dovrebbe fare più o meno 16 milioni di istruzioni al secondo.. Facendo un loop così forse riesci a fargli fare tutte le istruzioni.. Non potendo dare la velocità del motore devi simulare un "potenziometro" in qualche modo.:-)

Go Up