servo a rotazione continua per braccio

Beh, la libreria servo non fa altro che generare tramite interrupt degli impulsi su un periodo di 10 o 20 ms, non ricordo. Ovvero, un segnale PWM con un duty cycle massimo circa del 10% (cioè 2ms alto e 20ms basso).
La libreria converte il valore in gradi sessagesimali in un valore del duty cycle e, in base alla posizione del servo, quest'ultimo si muove più o meno velocemente in base a quanto sia già vicino a quel valore in gradi e a quanto hai speso per quel servo. :stuck_out_tongue:
Ad es, come credo saprai, se imposti 120° verrà generato un impulso ripetuto di, sparando un numero, 1.7ms. Il servo si fermerà automaticamente alla posizione corrispondente ai suoi 120°, anche se continui con gli impulsi. Da qui hai quindi l'informazione INDIRETTA della sua posizione. E' una misura uguale agli stepper, anche se si pilotano in modo completamente diverso: in base a quanti passi fai, sai di quanto hai girato, conoscendo la rotazione per passo.

Questo significa che, a livello HOBBISTICO quindi senza spendere cifre del tutto inutili, un servo a rotazione continua non può fornirti per deifnizione l'informazione a meno che non usi un encoder che ti fornisce una lettura diretta. Oppure una funzione che manda impulsi per un tempo veramente preciso, ammesso che la meccanica in cui è in gioco sia impeccabile. Ma per fare quello non ti conviene usare la libreria servo(), perché potresti aver bisogno di implementarla in modo del tutto diverso, o comunque la dovresti usare specificando non i gradi ma il dutycycle dell'impulso, che non è il suo utilizzo classico (CREDO :slight_smile: ).

Quindi, il discorso fluidità non è assolutamente correlato con la rotazione continua o meno. Per un braccio che funzioni bene, vanno bene i servo normali ma, come già discusso su questo forum, per farli funzionare hai bisogno di implementare algoritmi "da controllisti" che riducano oscillazioni e ne controllino l'accelerazione.
Tanto, la cosa difficile è la parte meccanica, almeno per me. :~