hallöchen leute, kam gerad nach hause und wollte einfach nochmal kurz in meine daten reinschauen, habe den compiler installiert und ma ein "test" programm geschrieben... also laut compiler gibt es keine fehler bei der umgeschriebenen kreis() funktion.. wäre super nett wenn mal einer kurz sein asuro flashen könnte und gucken kann ob alles so funktioniert wie es funzen sollte.
kreis():
Code:
/***************************************************************************
* void Kreis(int distance, double speed = 150)
*
* input
* distance: postiv->go forward ; negativ-> go backward
* speed: sets motorspeed
*
***************************************************************************/
void Kreis(int distance, double speed)
{
int enc_count = 0;
int tot_count = 0;
int diff = 0;
double pi = 3.141592654;
double radius = 50;
double r_rad = ((radius+11.5)*2*pi)/100;
double l_rad = (radius*2*pi)/r_rad;
double speed1 = (speed/100)*l_rad;
double l_speed = speed;
double r_speed = speed+speed1;
enc_count=abs(distance);
Encoder_Set(0,0); // reset encoder
MotorSpeed(l_speed,r_speed);
if(distance<0) MotorDir(RWD,RWD);
else MotorDir(FWD,FWD);
while(tot_count<enc_count) {
tot_count += encoder[LEFT];
diff = encoder[LEFT] - encoder[RIGHT];
if (diff > 0) { //Left faster than right
if ((l_speed > speed) || (r_speed > 244)) l_speed -= 10;
else r_speed += 10;
}
if (diff < 0) { //Right faster than left
if ((r_speed > speed+speed1) || (l_speed > 244)) r_speed -= 10;
else l_speed += 10;
}
Encoder_Set(0,0); // reset encoder
MotorSpeed(l_speed,r_speed);
Msleep(1);
}
MotorDir(BREAK,BREAK);
Msleep(200);
}
testprogramm könnte z.b. so aussehen
Code:
#include "asuro.h"
#include <stdlib.h>
int main(void)
{
FrontLED(ON);
StatusLED(GREEN);
Kreis(100,110);
}
mfg Toschtosch und gute nacht^^
Lesezeichen