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 !!
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.
Molte cose sono spiegate sul sito di Adafruit
"Using the Adafruit Library | Adafruit PCA9685 16-Channel Servo Driver | Adafruit Learning System"
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
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
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);
}
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 !
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
Ok ci provo
grazie Nid
@trunk: ... quante volte lo devo ripetere ...
... fosse anche per una sola riga, come richiesto al punto 7 del REGOLAMENTO, 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. ![]()
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!
#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
@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
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
@trunk: Ma leggi ATTENTAMENTE quello che ti si scrive ???
- 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)
- 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. - 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
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
ok Guglielmo .. a volte scrivo con il cel e le cose sono un briciolo diverse dal pc comunque staro' piu attento ..grazie
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.
Bene, vedo che ci sei riuscito ... se si fanno le cose con calma seguendo le indicazioni si arriva a sistemare il tutto ![]()
Guglielmo
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
E comunque ricordando quanto "Astrobeed" diceva qui sul forum molti anni fa:
... ed anche ...
... non so se quella scheda è veramente adatta al 100% a controllare dei servo ![]()
Guglielmo