Citazione:
Originalmente inviato da faustog_2 ciao Romoloman..
sei un grande! ..scusa ma te lo devo dire... seguendo i tuoi preziosi consigli, ho voluto osare di più.. dunque ho fatto la tua prova, e inoltre ho fatto la prova del 9, ovvero ho messo i servo! quindi nel caso dell'uso della pulseIn i servo tremano, troppo diciamo inutilizzabili. invece nel caso in cui uso l'interrupt i servo tremano molto meno... sono piu stabili e sicuramente utilizzabili.... nel caso di voler realizzare un drone o un sistema di miscelazione... la soluzione è ARDUINO LEONARDO e l'uso degli interrupt . di seguito il codice che legge dalla ricevente e invia ai servo senza un'elaborazione, diciamo che è il software di base. una riflessione.. secondo me occorre comunque aggiungere un circuito che porta i 4 canali in un unico bus.. dopo aver letto i 4 canali, il software può approfittare della lunga pausa di 20 mS per compiere tutte le elaborazioni e poi applicare eventuali modifiche ai segnali entranti.. per poi inviarli ai servo-
void loop()
{
myservo1.write(map(ch1_val, 1000 ,2000, 0, 180));
myservo2.write(map(ch2_val, 1000 ,2000, 0, 180));
myservo3.write(map(ch3_val, 1000 ,2000, 0, 180));
myservo4.write(map(ch4_val, 1000 ,2000, 0, 180));
delay(15);
|
Ecco, permettimi pure di dirti che generare il PPM utilizzando myservo.write nel main loop non è comunque accettabile...
Anche la generazione del PPM verso i servi andrebbe fatta in un interrupt con una temporizzazione fissa, altrimenti il periodo complessivo dell'impulso ppm dipende troppo da quanto valgono i canali...
Con 4 canali ci sono 4ms che ballano.