# Robot esapode con molti servi ; software

**URL:** <https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386>\
**Category:** Software\
**Created:** [July 7, 2024, 9:58pm UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386 "2024-07-07T21:58:41Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![trunk](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/trunk/32/1084694_2.png) [@trunk](https://forum.arduino.cc/u/trunk)\
**Post date:** [July 9, 2024, 7:51pm UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/25 "2024-07-09T19:51:17Z")

</div>

Per rispondere ad Ale " guargua se deduco giusto dai tuoi conti ne deduco che SERVOMIN 200 E SERVOMAX 400 percio io posso ridurre un pelo questi valori cosi da non sbattacchiare i servo ..tanto nn mi serve la max escursione ! Giusto Ale ?? per voi e minestra di tutti i giorni .. per me che sono denutrito !!🥴 Sono sapori nuovi !!

---

<div class="post-metadata">

**Author:** ![ilguargua](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/ilguargua/32/901053_2.png) [@ilguargua](https://forum.arduino.cc/u/ilguargua)\
**Post date:** [July 10, 2024, 6:17am UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/26 "2024-07-10T06:17:18Z")

</div>

Esatto. Nota che i valori erano già nel codice che avevi postato, solo che non li avevo notati, e mi sono rimesso li come un cretino con foglio, penna e calcolatrice a rifare tutti i calcoli, vabbè, se non altro spero che aiuti per capire come si arriva a quei numeri...

Ciao, Ale.

---

<div class="post-metadata">

**Author:** ![nid69ita](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/nid69ita/32/901258_2.png) [@nid69ita](https://forum.arduino.cc/u/nid69ita)\
**Post date:** [July 10, 2024, 7:07am UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/27 "2024-07-10T07:07:42Z")

</div>

Molte cose sono spiegate sul sito di Adafruit  
"[Using the Adafruit Library | Adafruit PCA9685 16-Channel Servo Driver | Adafruit Learning System](https://learn.adafruit.com/16-channel-pwm-servo-driver/using-the-adafruit-library)"  
c'e' anche come calcolare SERVOMIN e SERVOMAX  
Però non sò aiutarti, non conosco quella lib e leggendo non ho capito molto.  
Ad esempio la setPWM(canale, on, off) non ho capito perchè ci sono 2 valori pwm, on e off

---

<div class="post-metadata">

**Author:** ![trunk](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/trunk/32/1084694_2.png) [@trunk](https://forum.arduino.cc/u/trunk)\
**Post date:** [July 10, 2024, 9:21am UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/28 "2024-07-10T09:21:13Z")

</div>

Grazie Ale mi spiace tu abbia impiegato del tempo x fare questi conti .. ma tranquillo dai qui su queste cose ..per inutile a volte che possa essere concentrarsi su certe cose ..alla fine e' pur sempre una ripassata .. 😀 ..io ci sono diventato un po matto ma poco alla volta ...! Ora mi sto divertendo a diventar matto con il codice di Nid !!😂 Ahahaah ! E' corto ma e' prezioso perche si puo allungaaaaare.. basta aggiungere delle sezioni in coda e poi mi piace ..e' abbastanza chiaro 😂 piano piano raga ce la faccio ne !! Arrivo arrivo anchio 😁 ahahaaha ciao grazie Nid e Ale

---

<div class="post-metadata">

**Author:** ![trunk](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/trunk/32/1084694_2.png) [@trunk](https://forum.arduino.cc/u/trunk)\
**Post date:** [July 10, 2024, 11:37am UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/29 "2024-07-10T11:37:12Z")

</div>

```arduino
void loop()
{ gradi=0;
  impulso=map(gradi,0,180,SERVOMIN,SERVOMAX);
  pwm.setPWM(1, 0, impulso); // femore 1 ??
  delay(2000);
  gradi=90;
  impulso=map(gradi,0,180,SERVOMIN,SERVOMAX);
  pwm.setPWM(1, 0, impulso); // femore 1 ??
  delay(2000);
}

```

---

<div class="post-metadata">

**Author:** ![trunk](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/trunk/32/1084694_2.png) [@trunk](https://forum.arduino.cc/u/trunk)\
**Post date:** [July 10, 2024, 11:47am UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/30 "2024-07-10T11:47:32Z")

</div>

Qui nel loop nn riesco a capire come sia gestibile l indirizzo delle adafruit ..oppure devo aggiungere una sezione per muovere il terzo motore ma l indirizzamento nn e' chiaro !

---

<div class="post-metadata">

**Author:** ![nid69ita](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/nid69ita/32/901258_2.png) [@nid69ita](https://forum.arduino.cc/u/nid69ita)\
**Post date:** [July 10, 2024, 1:00pm UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/31 "2024-07-10T13:00:07Z")

</div>

> [@trunk](#):
>
> `setPWM(1`

Questo sai che è femore 6 giusto?  
Fai delle prove cambiando solo quel numero 1.  
Crea delle costanti esempio  
`#define K_FEMORE_6 1`  
Piano piano individua i vari servo e crea le varie costanti

---

<div class="post-metadata">

**Author:** ![trunk](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/trunk/32/1084694_2.png) [@trunk](https://forum.arduino.cc/u/trunk)\
**Post date:** [July 10, 2024, 1:15pm UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/32 "2024-07-10T13:15:54Z")

</div>

Ok ci provo 😁 grazie Nid

---

<div class="post-metadata">

**Author:** ![gpb01](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/gpb01/32/830685_2.png) [@gpb01](https://forum.arduino.cc/u/gpb01)\
**Post date:** [July 11, 2024, 5:25pm UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/36 "2024-07-11T17:25:44Z")

</div>

@trunk: ... quante volte lo devo ripetere ...

... fosse anche per una sola riga, come richiesto al **punto 7** del [REGOLAMENTO](https://forum.arduino.cc/t/regolamento-come-usare-questo-forum/145566), il codice va racchiuso tra i tag CODE, per cui, cortesemente edita il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita ✏ che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona \<code/\> nella barra degli strumenti per contrassegnarla come codice. Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (_questo lo si fa premendo ctrlT su un PC o cmd T su un Mac, sempre all'interno del IDE_).

Guglielmo

_P.S.: Ti ricordo che, purtroppo, fino a quando non sarà sistemato il codice come indicato, nel rispetto del regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farlo al più presto. 😉_

---

<div class="post-metadata">

**Author:** ![trunk](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/trunk/32/1084694_2.png) [@trunk](https://forum.arduino.cc/u/trunk)\
**Post date:** [July 12, 2024, 9:33am UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/37 "2024-07-12T09:33:50Z")

</div>

buongiorno ho trovato questo codice di cui ho decommentato molte righe per poterle sperimentare una alla volta ,quindi l'unica cioe la prima cosi com è sarebbe il numero del servo e poi le altre due cifre potreste spiegarmi come le devo usare per favore ? perche impostando a 0 la seconda e a 90 la terza il servo in questione parte in picchiata .. ora posso anche ammettere di aver probabilmente sbagliato il punto di riposo ..ok ma almeno riuscissi a muovere per pochi gradi alla volta ogni singolo servo sarebbe un grande traguardo per me .. poco alla volta ... posto il codice di seguito..non so scriverne di mio vago come un disperato dovunque per trovare una riga con cui poter muovere un servo alla volta, sara' pure deplorevole da parte mia nn saperlo scrivere "e pochissimo leggerlo " difatti cerco di modificarlo per quel che capisco ! sto studiandomi un libro arrivatomi da poco ..consigliatomi da uno di voi .. molto bello interessante e dettagliato ! ma purtroppo per ora devo rompervi le scatole con le mie inezie ..mi spiace ..grazie comunque a tutti!

---

<div class="post-metadata">

**Author:** ![trunk](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/trunk/32/1084694_2.png) [@trunk](https://forum.arduino.cc/u/trunk)\
**Post date:** [July 12, 2024, 9:35am UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/38 "2024-07-12T09:35:16Z")

</div>

```arduino
#include <Wire.h>

#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm1= Adafruit_PWMServoDriver(0x40);
Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0x41);

#define SERVOMIN 250
#define SERVOMAX 350

int servonum =0; 

void setup() {

  Serial.begin(9600);

  Serial.println("19 channel Servo test!");

  pwm1.begin();
  pwm2.begin();
  pwm1.setPWMFreq(50);
  pwm2.setPWMFreq(50);
  delay(10);

}

void loop() {

 pwm2.setPWM(0, 60, 90);
 //pwm.setPWM(1,0, 600);
delay(500);
// pwm.setPWM(0,0, 400);
 //pwm.setPWM(1,0, 400);
//delay(500);
// pwm.setPWM(0,0, 250);
 //pwm.setPWM(1,0, 250);
//delay(500);
 //pwm.setPWM(0,0, 200);
 //pwm.setPWM(1,0, 200);
//delay(500);
 //pwm.setPWM(0,0, 150);
 //pwm.setPWM(1,0, 150);
//delay(2000);

}

```

`Usa i tags code per formattare il codice per il forum`

---

<div class="post-metadata">

**Author:** ![gpb01](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/gpb01/32/830685_2.png) [@gpb01](https://forum.arduino.cc/u/gpb01)\
**Post date:** [July 12, 2024, 10:29am UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/39 "2024-07-12T10:29:00Z")

</div>

@trunk ... sono stanco di ricordarti che **DEVI sistemare il codice come si deve**...  
... se non lo farai chiuderò la discussione e tu avrai anche un **BAN** per mancato rispetto del regolamento !!!

Guglielmo

---

<div class="post-metadata">

**Author:** ![trunk](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/trunk/32/1084694_2.png) [@trunk](https://forum.arduino.cc/u/trunk)\
**Post date:** [July 12, 2024, 10:32am UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/40 "2024-07-12T10:32:42Z")

</div>

scusa Guglielmo ..nn so come si fa ! ho letto la tua spiegazione .. ho fatto .. ma se non ho risolto allora non capisco come devo fare scusa

---

<div class="post-metadata">

**Author:** ![gpb01](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/gpb01/32/830685_2.png) [@gpb01](https://forum.arduino.cc/u/gpb01)\
**Post date:** [July 12, 2024, 1:13pm UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/43 "2024-07-12T13:13:55Z")

</div>

@trunk: Ma leggi ATTENTAMENTE quello che ti si scrive ???

1. assicurati di aver correttamente indentato il codice nell'IDE prima di inserirlo (_questo lo si fa premendo ctrlT su un PC o cmd T su un Mac, sempre all'interno del IDE_)
2. utilizzando il bottone a forma di piccola matita ✏ che si trova in basso del tuo post, seleziona la parte di codice e incolla il codice così formattato al posto di quello che c'è attualmente che NON è formattato.
3. dopo di che selezioni il codice e premi l'icona \<code/\> nella barra degli strumenti per contrassegnarla come codice.

Non mi smembra molto difficile ... fallo in TUTTI i post precedenti in cui c'è codice.

Guglielmo

---

<div class="post-metadata">

**Author:** ![trunk](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/trunk/32/1084694_2.png) [@trunk](https://forum.arduino.cc/u/trunk)\
**Post date:** [July 12, 2024, 1:31pm UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/44 "2024-07-12T13:31:52Z")

</div>

Guglielmo , farmi bannare è proprio impensabile da parte mia ..gia solo per il fatto che ammiro tanto cio che avete creato e sono contento d esser qui ! se non riesco a fare una cosa è solo xche non sono ancora pratico dei meccanismi del forum ! i tag fino ad oggi nn sapevo cosa fossero ..il fai da te non comprende esser esperti della web technology a prescindere dalle passioni e manualita' proprie ...chiedo ancora scusa ..! il linguaggio prima o poi riusciro' a usarlo per arrangiarmi.. un proverbio narra "chi va a scuola qualcosa impara sempre " grazie a tutti buon week

---

<div class="post-metadata">

**Author:** ![trunk](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/trunk/32/1084694_2.png) [@trunk](https://forum.arduino.cc/u/trunk)\
**Post date:** [July 12, 2024, 1:34pm UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/45 "2024-07-12T13:34:59Z")

</div>

ok Guglielmo .. a volte scrivo con il cel e le cose sono un briciolo diverse dal pc comunque staro' piu attento ..grazie

---

<div class="post-metadata">

**Author:** ![gpb01](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/gpb01/32/830685_2.png) [@gpb01](https://forum.arduino.cc/u/gpb01)\
**Post date:** [July 12, 2024, 2:56pm UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/46 "2024-07-12T14:56:33Z")

</div>

Ecco, **vai su PC** e sistema come ti ho scritto al post #43 ... altrimenti la discussione **NON** prosegue.

Guglielmo

_P.S.: ... e NON si tratta di essere esperto del forum, si tratta di seguire ALLA LETTERA quello che ti si indica di fare._

---

<div class="post-metadata">

**Author:** ![gpb01](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/gpb01/32/830685_2.png) [@gpb01](https://forum.arduino.cc/u/gpb01)\
**Post date:** [July 13, 2024, 7:05pm UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/47 "2024-07-13T19:05:50Z")

</div>

Bene, vedo che ci sei riuscito ... se si fanno le cose con calma seguendo le indicazioni si arriva a sistemare il tutto 😉

Guglielmo

---

<div class="post-metadata">

**Author:** ![gpb01](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/gpb01/32/830685_2.png) [@gpb01](https://forum.arduino.cc/u/gpb01)\
**Post date:** [July 13, 2024, 7:21pm UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/48 "2024-07-13T19:21:25Z")

</div>

> [@trunk](#):
>
> cioe la prima cosi com è sarebbe il numero del servo e poi le altre due cifre potreste spiegarmi come le devo usare per favore ? perche impostando a 0 la seconda e a 90 la terza il servo in questione parte in picchiata ..

Se si guardano i sorgenti della libreria (_che sono commentati ... magari in modo un po' sibillino_), per il metodo setPWM() si ha:

> `uint8_t Adafruit_PWMServoDriver::setPWM(uint8_t num, uint16_t on, uint16_t off)`
> 
> num: One of the PWM output pins, from 0 to 15  
> on : At what point in the 4096-part cycle to turn the PWM output ON  
> off : At what point in the 4096-part cycle to turn the PWM output OFF

C'è da capire cosa facciano **veramente** i parametri "on" e "off" ...  
... non avendo l'HW non posso provare in pratica 🙄

Comunque mi sembra una libreria un po' incasinata e bisogna studiare bene l'esempio **servo.ino** , provandolo a banco e vedendo come si comportano i servo ...

Guglielmo

---

<div class="post-metadata">

**Author:** ![gpb01](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/gpb01/32/830685_2.png) [@gpb01](https://forum.arduino.cc/u/gpb01)\
**Post date:** [July 13, 2024, 7:33pm UTC](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386/49 "2024-07-13T19:33:50Z")

</div>

E comunque ricordando quanto " **Astrobeed**" diceva qui sul forum molti anni fa:

> [@molti motori con arduino](https://forum.arduino.cc/t/molti-motori-con-arduino/480280/6):
>
> Il **PPM è una cosa diversa dal PWM** , in PPM l'informazione viene veicolata sia dalla durata dell'impulso che dalla sua posizione, un singolo frame ppm può contenere più impulsi, in PWM puoi veicolare solo una singola informazione e dipende dal rapporto tra Ton e Toff (duty cycle).  
> Anche se un treno d'impulsi singoli PPM assomiglia ad un PWM, come forma d'onda, non portano le stesse informazioni.

... ed anche ...

> [@molti motori con arduino](https://forum.arduino.cc/t/molti-motori-con-arduino/480280/8):
>
> Il PWM è un tipo di segnale diverso dal PPM, hanno caratteristiche diverse e modalità di controllo diverse, non puoi creare un vero PPM partendo dal PWM, per giunta nel PWM il duty cycle variabile è la norma visto che lo scopo è controllare qualcosa tramite la variazione del duty cycle. 🙂  
> Esempio pratico, nei servo RC lo standard prevede un impulso con durata compresa tra 1 ms e 2 ms, pari a una deflessione di +/- 45°, ripetuto ogni 20 ms, all'interno di quei 20 ms puoi inserire fino a 8 impulsi distinti per controllare 8 differenti servo, prova a farlo col PWM se ci riesci. 🙂  
> Arduino genera i segnali per i servo partendo da distinte generatrici PPM, sintetizzate con i timer, da ognuna delle quali è possibile ricavare 8 singoli canali, l'immagine allegata è quotata in % perché è l'analizzatore di stati logici è settato per fornire il valore 0-100% in funzione della lunghezza impulso, 0 = 0.5 ms, 100 = 2.5 ms (+/-90°), il limite di 12 servo sul 328 è dato da vari fattori, tra cui il limitato numero di timer disponibili.
> 
> ![](https://europe1.discourse-cdn.com/arduino/original/4X/e/2/2/e22d1704f95fdd06fafb472eaaf6dec46848198f.png)

... non so se quella scheda è veramente adatta al 100% a controllare dei servo 🙄

Guglielmo

[Previous page](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386.md?page=1)

[Next page](https://forum.arduino.cc/t/robot-esapode-con-molti-servi-software/1279386.md?page=3)
