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. :)
uwefed
April 27, 2013, 10:09am
#2
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 =)