ciao
riporto qui il tuo quesito arrivatomi in PM
Ciao Pippo,
sto studiando il tuo sketch e cercando di adattarlo alla mia esigenza.
Tuttavia ,ovviamente per mia inesperienza, ti chiedo se mi puoi dare una mano a comprendere meglio il funzionamento software per gestire il servoSG90.
Al tuo sketch ho aggiunto :pausa2 = (2500 - (11 * angolo)); ( indicando pausa2 prima del setup)
subito dopo il delay (20) che ho aumentato a 2000 (2 sec.)
In effetti il servo ruota avanti ed indietro come previsto ma vorrei capire :
1)Non mantiene la posizione in modo preciso ( ad ogni rotazione "sgarra di qualche tic" e vorrei sapere come ovviare.
In base alla formula che mi hai citato ,pausa = (500 + (11 * angolo)); ho modificato il byte angolo = 1 anziché 90, vorrei capire come portarmi a specifiche posizioni, nella fattispecie a 50 e 100 gradi, riportando poi a posizione zero il servo.
perché moltiplichi *11 ?
Ti ringrazio già in anticipo.
Chiariamo intanto che non è permesso dal regolamento (punto 12) inviare richieste tecniche tramite messaggio privato.
Detto questo cerco di spiegare meglio il mio sketch:
pausa = (500 + (11 * angolo));
questo determina la durata dell'impulso da dare al servo. Sappiamo che un servo ha bisogno di un impulso positivo della durata variabile tra i 500 us (-90°)e i 2500(+90°) us ogni 20 millisecondi. -90° e +90° sono i gradi che il servo gira (in positivo o in negativo) assumendo come 0° la posizione centrale del servo.
La variabile angolo nel mio sketch è invece intesa come 90° posizione centrale, 0° tutto da una parte e 180° tutto dall'altra quindi con angolo = 0 abbiamo 500 +(110) quindi 500 microsecondi; con angolo = 90 abbiamo 500+(1190) quindi 1490 microsecondi e con angolo = 180 abbiamo 500+ (11*180) quindi 2480 microsecondi ecc.
Sarebbe effettivamente più corretto moltiplicare per 11.1 ( oppure anziché 500 usare 510 tanto per "centrare" il servo) ma vista la precisione del servo (SG90) non credo sia influente.
Il delay(20) serve a dare questo benedetto impulso ogni 20 millisecondi; questa tempistica è necessaria al funzionamento del servo (anche se non critica) e come ho spiegato del mio precedente post il mio sketch non fa niente quindi quel delay ci può anche stare, ma per le tue esigenze sarebbe ( è ) da eliminare e sostituire con un altro modo di misurare il tempo ( leggi millis ). Ti consiglio anche di cercare " macchina a stati finiti" nel forum, è un concetto che sicuramente ti servirà per il tuo sletch.
Spero di essere stato più chiaro.
ciao
pippo72