Hallo Pr0gm4n!
Danke nochmal für dein Programm, leider ist es soo, dass die Einstellungen anscheinend zu grob sind und ich keine langsame Geschwindigkeit schaffe, da es 2 sehr starke Motoren sind. Ich habe alle Einstellungen von oben bis unten durch probiert, aber ich bin leider zu keinem Ergebnis gekommen, dass für meinen Roboter geeignet wäre, da er entweder nur Vollgas oder stockend fährt.
Hast du vielleicht eine Idee was ich falsch machen könnte, an was das sonst noch liegen könnte oder noch irgendwelche Ideen die ich ausprobieren könnte?
Ich habe auch bei nachfolgenden Absatz auch versucht von 1-20 vor u. rückwärts alle Möglichkeiten versucht, aber leider hatte ich auch hier keinen Erfolg.
if(geschwindigkeit > 5)geschwindigkeit = 5;
if(geschwindigkeit < 0)geschwindigkeit = 0;
int x = 15+geschwindigkeit;
int i;
for(i=0;i<(zeit/20);i++)
Ich wäre dir unendlich dankbar für Lösungsvorschläge. Seit 2 Monaten arbeite ich nur daran die Fahrtenregler einzustellen um eine vernünftige Geschwindigkeit programmieren zu können und bin mittlerweile schon verzweifelt und glaube sogar schon, dass daran mein Projekt scheitern muss.
Code:
#include "RP6RobotBaseLib.h" //Code by Pr0gm4n© v1.1 Fahrtenregler/Servos an ADC0 und ADC1 die entgegengesetzt drehen
void vorwaerts(int geschwindigkeit, int zeit)//geschwindigkeit zwischen 0 und 5, bei 0 = stillstand; zeit in ms
{
if(geschwindigkeit > 5)geschwindigkeit = 5;
if(geschwindigkeit < 0)geschwindigkeit = 0;
int x = 15+geschwindigkeit;
int i;
for(i=0;i<(zeit/20);i++)
{
PORTA |= 1;
sleep(x);
PORTA &= ~1;
PORTA |= 2;
sleep(30-x);
PORTA &= ~2;
sleep(170);
}
}
void rueckwaerts(int geschwindigkeit, int zeit)//geschwindigkeit zwischen 1 und 5; zeit in ms
{
if(geschwindigkeit > 5)geschwindigkeit = 5;
if(geschwindigkeit < 0)geschwindigkeit = 0;
int x = 15-geschwindigkeit;
int i;
for(i=0;i<(zeit/20);i++)
{
PORTA |= 1;
sleep(x);
PORTA &= ~1;
PORTA |= 2;
sleep(30-x);
PORTA &= ~2;
sleep(170);
}
}
void links() // oder rechts, das musst du testen, hängt davon ab, was an adc0 oder adc1 hängt
{
int x= 17; // hier kannst du an der geschwindigkeit in der kurve rumprobieren (15 < x <= 20)
int y= 20; // hier kannst du am Winkel der Drehung rumprobieren, das hängt von den Motoren ab, einfach ausprobieren dann siehst du was gut iss xD
int i;
for(i=0; i<y ;i++)
{
PORTA |= 1;
sleep(x);
PORTA &= ~1;
sleep(200-x);
}
}
void rechts() // oder links, das musst du testen, hängt davon ab, was an adc0 oder adc1 hängt
{
int x= 17; // hier kannst du an der geschwindigkeit in der kurve rumprobieren (15 < x <= 20)
int y= 20; // hier kannst du am Winkel der Drehung rumprobieren, das hängt von den Motoren ab, einfach ausprobieren dann siehst du was gut iss xD
int i;
for(i=0; i<y ;i++)
{
PORTA |= 2;
sleep(x);
PORTA &= ~2;
sleep(200-x);
}
}
void initMotoren()
{
DDRA |=3;
vorwaerts(0, 10000);
}
int main(void)
{
initRobotBase();
initMotoren();
while(true)
{
vorwaerts(0, 2500);
vorwaerts(0, 100);
rueckwaerts(0, 2500);
vorwaerts(0, 100);
}
return(0);
}
Lesezeichen