Salve,
sto cercando di capire come dare al servomotore l'angolazione desiderata tramite codice, ma purtroppo non mi riesce.
Ho fatto un video per farvi capire meglio come intendo angolarlo (perdonate la tremarella e il braccio "cartonico" )
Il codice dove attualmente sono incartato è questo:
Sono partito da un codice prefatto e ho modificato solo la posizione per arrivare a capire il funzionamento.
Conosco la sintassi di un ciclo FOR ma non riesco a capire bene cosa fa;
Nel senso,
if (buttonState == HIGH) { //se il bottone è premuto
for(pos = myservo.read(); pos <=135; pos += timeDelay) { //legge la posizione del servomotore, il ciclo continuerà fin quando non raggiungerà i 135°, aggiunge tempo di attesa(?)
myservo.write(pos); //scrive la variabile POS sul servo (credo sia quella che lo sta spingendo fino a 135°)
delay(15); //aspetta 15ms }
else {
timeDelay = random(1, 4); //aspetta un tempo random
for(pos = myservo.read(); pos >=40; pos -= 1) { //legge la posizione del servo, fa il ciclo fintanto che è sopra i 40°, e continua a scalarli
myservo.write(pos); //scrive la variabile POS sul servo
timeDelay = random(15, 30); //aspetta un tempo random
delay(15); } //aspetta 15ms
Così in realtà funziona, però mi serve che faccia il giro opposto, cioè vada verso "avanti" e non verso "dietro" :~
Ciao,
innanzitutto ti consiglierei di dare una lettura a questo:
così capisci bene come funziona un servo.
Per quanto riguarda il for provo a spiegarti come funziona:
for (x = 5;x < 10;x++)
{
codice..
}
La variabile x viene settata come valore di partenza a 5 (x = 5) e verrà incrementata a ogni ciclo di +1 (x++ è l' equivalente di x=x+1) finchè questa risulterà essere minore di 10(x < 10). Questo ciclo eseguirà il tuo codice finchè x non assumerà il valore 10.
Nel caso del codice che hai riportato, non sono convinto come dice Uwe che myServo.read() ti ritorni un valore, forse e meglio che utilizzi una variabile dove immagazzinare la posizione del servo. Parti comunque dal esempio riportato sul link che forse ti chiarisce di più le idee. Sarebbe utile sapere anche quale effetto vuoi ottenere perchè nel codice che hai proposto quando premi il bottone il servo arriva a 135° incrementando l' angolo casualmente dai 15 ai 30 gradi alla volta. Strano il comportamento voluto.