comandi semplici con sm-s4303r servo motore a rotazione continua

salve a tutti,

vorrei sapere come posso far ruotare il mio servo con 3 routine. vorrei farlo girare prima in senso orario, poi farlo rimanere fermo e poi in senso antiorario.

riesco a farlo girare in una sola direzione senza che si fermi e non riesco a farlo fermare.

in più non funziona mettendo l'angolo di rotazione xkè se ho capito bene non riconosce gli angoli di rotazione ma posso inserire solo il tempo di rotazione nel senso preso in esame.

grazie ancora per l'aiuto,

pixelday. :)

Non capisco cosa scrivi.

Il servo dovrebbe stare fermo con valori di 90°, girare in una direzione con valori minori di 90° e nell altra direzione con valori > di 90°.

Gli angoli corrispondono a dei tempi dove 90° sono 1500µS, i due valori sono equivalenti nelle rispettive funzioni.

fai vedere il Tuo sketch.

Ciao Uwe

sisi io ho scritto questo programma ma non va non capisco cosa sbaglio…

//#include <Servo.h>

//Servo myservo; // create servo object to control a servo

void setup()
{
// myservo.attach(9); // attaches the servo on pin 9 to the servo object
pinMode (9, OUTPUT);
}

void loop()
{
fermo(); digitalWrite (13,HIGH) //led acceso
delay(1000);
digitalWrite (13, LOW) // led spento
avanti(); digitalWrite (13,HIGH) // led acceso
delay(1000);
digitalWrite (13, LOW) // led spento
fermo(); digitalWrite (13,HIGH) //led acceso
delay(1000);
digitalWrite (13, LOW) // led spento
indietro(); digitalWrite (13,HIGH) //led acceso
delay(1000);
digitalWrite (13, LOW) // led spento

void fermo ()
{
for (int i=0; i<=10; i++)
{
digitalWrite(9,HIGH);
delayMicroseconds(1500);
digitalWrite(9, LOW);
delay(20);
}
}

void avanti ()
{
for (int i=0; i<=10; i++)
{
digitalWrite(9,HIGH);
delayMicroseconds(1700);
digitalWrite(9, LOW);
delay(20);
}
}

void indietro ()
{
for (int i=0; i<=10; i++)
{
digitalWrite(9,HIGH);
delayMicroseconds(1300);
digitalWrite(9, LOW);
delay(20);
}
}

corretto… ma ora vorrei farlo girare più gentilmente non di scatto e velocemente… più piano e senza che si vedano gli scatti si può??

void setup()
{
pinMode (9, OUTPUT);
pinMode (13, OUTPUT);
digitalWrite (13,LOW); //led spento
}

void fermo()
{
for (int i=0; i<=10; i++)
{
digitalWrite(9,HIGH);
delayMicroseconds(1500);
digitalWrite(9, LOW);
delay(200);
}
}

void avanti()
{
for (int i=0; i<=20; i++)
{
digitalWrite(9,HIGH);
delayMicroseconds(1250);
digitalWrite(9, LOW);
delay(2000);
}
}

void indietro()
{
for (int i=0; i<=20; i++)
{
digitalWrite(9,HIGH);
delayMicroseconds(1750);
digitalWrite(9, LOW);
delay(2000);
}
}

void loop()
{
delay(500);
digitalWrite (13,HIGH); //led acceso
delay(1000);
digitalWrite (13, LOW); // led spento
avanti();
digitalWrite (13,HIGH); // led acceso
delay(1000);
digitalWrite (13, LOW); // led spento
fermo();
digitalWrite (13,HIGH); //led acceso
delay(1000);
digitalWrite (13, LOW); // led spento
indietro();
digitalWrite (13,HIGH); //led acceso
delay(1000);
digitalWrite (13, LOW); // led spento
}

questo è il programma finale per il mio progetto

int vali;
int valp;

void setup()
{
Serial.begin(9600);
vali = analogRead(A0);
valp = analogRead(A0);
Serial.println(valp);
pinMode (9, OUTPUT);
pinMode (13, OUTPUT);
digitalWrite (13,LOW); //led spento
}

void fermo()
{
for (int i=0; i<=10; i++)
{
digitalWrite(9,HIGH);
delayMicroseconds(1500);
digitalWrite(9, LOW);
delay(20);
}
}

void avanti()
{
for (int i=0; i<=100; i++)
{
digitalWrite(9,HIGH);
delayMicroseconds(1450);
digitalWrite(9, LOW);
delay(10);
}
}

void indietro()
{
for (int i=0; i<=100; i++)
{
digitalWrite(9,HIGH);
delayMicroseconds(1540);
digitalWrite(9, LOW);
delay(10);
}
}

void loop()
{
delay(500);
avanti();
if (vali > valp){
indietro();
}
else (vali <= valp){
avanti();
}
}

mi da i seguenti errori e non capisco come correggerli mi date una mano?

motore.ino: In function ‘void loop()’:
motore:55: error: expected `;’ before ‘{’ token
motore.ino: At global scope:
motore:80: error: expected declaration before ‘}’ token

grazie =)