-
Servo Fragen
Hi,
ich habe hier den CodeSchnipsel irgendwo her, ich habe den so verändert das sich jetzt mein Servo um 180 Grad dreht. Die Pausen zwischen den Drehungen sind klar, der Winkel auch. Nur die Geschwindigkeit, z.B. von links 90 Grad zu rechts 90 Grad kriege ich nicht hin. Das Servo ist mir zu schnell. Was muß ich also genau tun ?
Trainmen
Code:
#include "RP6RobotBaseLib.h"
int main(void)
{
initRobotBase();
DDRA |= 1;
while(true)
{
for(i=0;i<100; i++)
{
PORTA |= 1;
sleep(25);
PORTA &= ~1;
sleep(190);
}
for(i=0;i<100; i++)
{
PORTA |= 1;
sleep(5);
PORTA &= ~1;
sleep(180);
}
}
return(0);
}
-
Nicht getestet:
Code:
#include "RP6RobotBaseLib.h"
uint8_t i,j;
int main(void)
{
initRobotBase();
DDRA |= 1;
while(true)
{
for(i=5;i<25; i++) // Schritte von 5 bis 25
{
for(j=0;j<10; j++) // Position 10 mal senden
{
PORTA |= 1; // Servo-PWM ein
sleep(i); // auf Winkel warten
PORTA &= ~1; // Servo-PWM aus
sleep(200-i); // auf 20ms warten
}
}
for(i=25;i>5; i--) // und zurück von 25 nach 5
{
for(j=0;j<10; j++)
{
PORTA |= 1;
sleep(i);
PORTA &= ~1;
sleep(200-i);
}
}
}
return(0); // wird nie erreicht
}
Gruß
mic
-
Guten Morgen Mic,
ja nicht ganz das Ziel erreicht, weil er ja jetzt schritte macht, ich möchte aber das er fließend rumläuft.
Trainmen
-
Guten Morgen :)
Für eine fließendere/schnellere Bewegung kannst du entweder die Anzahl der Wiederholungen verringern:
for(j=0;j<10; j++)
Oder die Schrittweite vergrößern:
for(i=5;i<25; i+=1)
Gruß
mic
-
Hi
hmm wollt ich gerade dir mitteilen das ich die werte verändert hab und nun zufrieden bin.............
da lese ich die Lösung auch schon von dir
Dankeschön
Trainmen