Hab ein erneutes Problem. Das folgende Programm funktioniert nach meiner Zufriedenheit:
Code:
#include "asuro.h"
#include <stdlib.h>
#define maxspeed 130
#define medspeed 120
#define quadteiler 30
int speedLeft,speedRight, sR, sL, i;
unsigned int lineData[2];
unsigned int zaehler = 0;
int bat;
void Line (void)
{
speedRight = medspeed - ((i*abs(i))/quadteiler);
speedLeft = medspeed + ((i*abs(i))/quadteiler);
if (speedRight > maxspeed) speedRight = maxspeed;
if (speedLeft > maxspeed) speedLeft = maxspeed;
if (speedRight < -maxspeed) speedRight = -maxspeed;
if (speedLeft < -maxspeed) speedLeft = -maxspeed;
if (speedRight < 0) {MotorDir (FWD,RWD); sR=-speedRight;sL=speedLeft;}
else if (speedLeft < 0) {MotorDir (RWD,FWD); sL=-speedLeft;sR=speedRight;}
else {MotorDir(FWD,FWD);sL=speedLeft;sR=speedRight;}
}
int main(void)
{
Init();
FrontLED(ON);
for (i = 0; i < 0xFF; i++) LineData(lineData);
speedLeft = speedRight = 200;
for(;;) {
zaehler++;
if (zaehler == 2500) {
bat = Batterie();
zaehler = 0;
PrintInt(bat);
if(bat > 550){
StatusLED(GREEN);
}
else{
StatusLED(RED);
}
}
LineData(lineData);
i = lineData[0] - lineData[1];
if (i > 0) {
Line();
}
else if (i < 0) {
Line();
}
else {
speedLeft = speedRight = medspeed;
MotorDir(FWD,FWD);
sL=speedLeft;sR=speedRight;
}
MotorSpeed(sL,sR);
}
}
Nun brauch i das Programm ohne Linienverfolgung - hab mir folgendes gedacht:
Code:
#include "asuro.h"
#include <stdlib.h>
unsigned int zaehler = 0;
int bat;
int main(void)
{
Init();
for(;;) {
zaehler++;
if (zaehler == 2500) {
bat = Batterie();
zaehler = 0;
PrintInt(bat);
if(bat > 550){
StatusLED(GREEN);
}
else{
StatusLED(RED);
}
}
}
}
Jedoch werden jetzt ganz andere Werte, als vorher ausgeben. Beim obersten Programm Werte um 580 beim unteren Programm Werte von 830 ?
Kann jemand helfen ?
oder weiß jemand welche Werte bei der Batterie-Funktion ausgegeben werden müssten ?
Danke
Lesezeichen