premessa: ho avuto modo di verificare, con i servo che dispongo al momento, che per ruotare di 90° necessitano di circa 300 ms. Mi spiego, cioè dalla posizione zero do il comando per spostarsi alla posizione 90°; a questo punto se setto nuovamente il comando posizione 0 dopo un intervallo inferiore a 300 ms non arriva a 90 ma ritorna prima.
moveServo(myservo6, 0);
delay(300); // se imposto un valore inferiore la posizione non viene raggiunta
moveServo(myservo6, 90);
delay(300);
Quindi se impartisco il comando per una rotazione completa da 0 a 180 il servo necessità di 600 ms; dopo aver impartito il comando il controllo ritorna all'arduino per poter eseguire altre istruzioni o è una chiama sincrona, cioè il comando all'arduino ritorna dopo che il servo ha completato la propria escursione ?
Nel link da te segnalato parla di shiftPWM; Quando parla di shift register si riferisce allo shift-register dell'arduino stesso o uno shift register esterno ?
Uno di questi è il TLC4950
Mentre gli altri due 74HC595 e il PCF8574AP non sono shiftPWM. EDIT: il 74HC595 è uno shiftPWM.
Quindi è più indicato un TLC4950 piuttosto che gli altri due, se voglio utilizzare uno shft register esterno ?
E' meglio utilizzare i pin PWM dell'arduino o utilizzare i pin PWM di uno sheift register esterno ?
scusate per le banalità, però ho necessità di capire.
praticamente devo comandare 64 servo contemporaneamente, i quali devono cambiare posizione velocemente e non allo stesso modo.
Ho messo su una infrastruttura di tre arduini (al momento, ma possono crescere in base alle esigenze di cui sopra) collegati mediante I2C. Uno fa da master e riceve i dati dal pc e gli altri due (o più) da slave per il comando dei servo, led RGB, sensori e cosi via (distribuzione carico lavoro).
A questo punto devo decidere se utilizzare uno shiftRegister esterno tipo TLC4950 (16 canali PWM a 12 bit), oppure i pin PWM di arduino.
Eventualmente optare per arduino due per avere maggiori performance e una scelta possibile ?