Salve, ho da poco acquistato lo starter kit di Arduino e sto facendo alcune prove con il relativo servomotore e potenziometro contenuto nel kit.
Volevo cortesemente chiedervi se fosse possibile imporre una determinata sequenza di movimenti al servomotore, all'avvio di Arduino per poi una volta eseguita la sequenza poterlo comandare normalmente dal potenziometro.
Ho fatto alcune prove scrivendo la sequenza di movimento nel void setup() ma senza alcun successo.
Per esempio la sequenza che vorrei imporre al servo è angolo massimo, angolo minimo per poi riportarlo alla posizione relativa al potenziometro.
Grazie in anticipo per l'aiuto.
C'è uno sketch esempio della libreria Servo che si chiama knob e serve a far assumere al servomotore la posizione in base al valore analogico determinato dal potenziometro; basta che ci aggiungi la sequenza iniziale che desideri nel setup e poi comandi la posizione del servo col potenziometro
Ho provato a scrivere la sequenza di movimento nel void setup scrivendo i valori analogici 1023 e 0 con un delay tra di loro di un secondo per far si che il servo vada all'angolo massimo, torni al minimo e poi ritorni alla posizione relativa al potenziometro, ma quello che ho ottenuto è che si il servo va all'angolo massimo ma purtoppo invece che passare per il punto di angolo minimo determiato dal valore analogico 0 si posiziona subito sull'angolo relativo alla posizione del potenziometro qualunque essa sia.
Hai scritto i valori analogici 1023 e 0 per far muovere il servo? Non capisco, puoi postare il codice?
Si esatto ho scritto i valori 1023 e 0 nel void setup per far muovere il servo, il codice le posto domani in quanto non ho qui con me il pc dove l'ho salvato,
I servo non si pilotano con i valori analogici 1023 e 0.
Devi usare la libreria servo e puoi dare come parmetri o l' angolo da 0 a 180 o i tempi del impulso da 1000 e 2000.
Ciao Uwe
Grazie ragazzi, ora ho risolto!
Scrivo qui un'altra domanda senza aprire un'altro topic, risolto il problema della sequenza iniziale del servo, vi chiedo se in qualche modo è possibile passare dall'ultima posizione della sequenza nel mio caso 45 gradi , a quella relativa al potenziometro in modo progressivo cioè grado per grado.
AndreaGi:
a quella relativa al potenziometro in modo progressivo cioè grado per grado.
Si però devi gestire tu la cosa.
In pratica prima leggi la posizione del potenziometro e trovi la relativa posizione del servo poi con un ciclo for, dato dalla differenza tra la posizione attuale e quella voluta, incrementi di grado in grado la posizione inserendo un opportuno delay per spostarti con la velocità desiderata.
Esempio pratico, se il servo si trova a 180° e il potenziometro a 18° il ciclo for sarà 180-18 = 162 step, il delay tra ogni step lo devi calcolare in base al tempo che desideri per lo spostamento, se è un secondo sarà 1/162 = ~6 ms.
Il problema è che il potenziometro non ha sempre la stessa posizione.
AndreaGi:
Il problema è che il potenziometro non ha sempre la stessa posizione.
Non a caso ho scritto "prima leggi la posizione del potenziometro ".
Ah ok, pensavo fosse possibile portare il servo a qualsialsi angolo corrispondente al potenziometro in maniera automatica, grazie lo stesso!