Hallo!
Wir haben hier ein Projekt, das wir selbst programmiert haben und für uns logisch erscheint...allerdings macht unser Roboter nicht das was wir wollen!!!
Unser Projekt: Der ASURO soll eine Kurve fahren, an die er im ersten Durchgang anstößt...im zweiten Durchgang soll er sie perfekt nehmen...
Dies wollen wir erreichen, das der ASURO im ersten Durchgang die "Wechsel von Hell-Dunkel" bei der Odometrie zählt und im zweiten Durchgang nach einer bestimmten Anzahl die Kurve fahren (Wert durch Abzug von erstem Durchgang)!!!
MfG,
Hansebanger vs. Bangboy
Code:
#include "asuro.h"
void SleepEx(short);
#define STOP 120
int main(void)
{
unsigned char taste;
unsigned int data[2],dato[2];
int i,S,DrehR,DrehL;
Init();
while (1==1)
{
FrontLED(ON);
S=0;
MotorDir(FWD,FWD);
MotorSpeed(100,100);
// Weite messen
OdometrieData(data);
if (data[0]>900) {
(i++);}
do {
taste=PollSwitch();
if (taste > 7)
{
DrehR=i;
MotorSpeed(0,0);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(0,100);
SleepEx(15);
MotorSpeed(0,0);
SleepEx(10);
MotorDir(FWD,FWD);
MotorSpeed(105,100);
}
else if((taste < 7) && (taste > 0) )
{
DrehL=i;
MotorSpeed(0,0);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(100,0);
SleepEx(15);
MotorSpeed(0,0);
SleepEx(10);
MotorDir(FWD,FWD);
MotorSpeed(105,100);
}
// Stop am Ende
LineData(dato);
if ((dato[0] < STOP) && (dato[1] < STOP))
{
MotorSpeed(0,0);
S=1;
}
if (S=1) {
while (i<(DrehL-20))
{
MotorSpeed(105,100);
}
if (i>(DrehL-20))
{
MotorSpeed(120,20);
}
}
}
while(1);
}
}
void SleepEx(short zsecnds)
{
int wdhlg=zsecnds/.03;
int i=0;
while (i<wdhlg)
{
Sleep(216);
i++;
}
}
Lesezeichen