hans9191
02.12.2011, 16:47
hallo,
ich möchte ein programm erstellen mit dem der asuro folgendes macht:
http://www.youtube.com/watch?v=h5qPi0qSVXI
also er soll erst normal der linie folgen, und anschließend leicht drehen.
soweit klappt das programm recht gut.
nur der asuro sollte eigentlich mit dem wenden aufhören, wenn er die linie wiederfindet und diese weiterverfolgen.
und hier liegt das problem: der roboter dreht einfach immer weiter.
hier mal mein aktuelles programm:
#include "asuro.h"
#include <stdio.h>
int main(void)
{
Init();
while(1) {
FrontLED(1); //LED an
int lData[2]; // Speicher für die Messwerte zur Verfügung stellen
LineData(lData); // Einlesen der Messwerte
if (PollSwitch()==0){ //wenn kein taster gedrückt
if (lData[1] > lData[0]) { //Linienverfolgung
MotorDir(FWD,FWD);
MotorSpeed(150,225); }
else if (lData[1] < lData[0]) {
MotorDir(FWD,FWD);
MotorSpeed(225,150); }
}
else if(PollSwitch()!=0) //Kollisionsfall
{
int u=0;
while(u==0)
{
if (lData[1] > 100 && lData[0]>100) //Linie gefunden?
{
MotorDir(FWD,RWD); //drehen
MotorSpeed(150,0);
u=0;
}
else
{
u=1;
}
}
}
}
return 0;
}
edit: alte, inaktive programmteile gelöscht.
ich möchte ein programm erstellen mit dem der asuro folgendes macht:
http://www.youtube.com/watch?v=h5qPi0qSVXI
also er soll erst normal der linie folgen, und anschließend leicht drehen.
soweit klappt das programm recht gut.
nur der asuro sollte eigentlich mit dem wenden aufhören, wenn er die linie wiederfindet und diese weiterverfolgen.
und hier liegt das problem: der roboter dreht einfach immer weiter.
hier mal mein aktuelles programm:
#include "asuro.h"
#include <stdio.h>
int main(void)
{
Init();
while(1) {
FrontLED(1); //LED an
int lData[2]; // Speicher für die Messwerte zur Verfügung stellen
LineData(lData); // Einlesen der Messwerte
if (PollSwitch()==0){ //wenn kein taster gedrückt
if (lData[1] > lData[0]) { //Linienverfolgung
MotorDir(FWD,FWD);
MotorSpeed(150,225); }
else if (lData[1] < lData[0]) {
MotorDir(FWD,FWD);
MotorSpeed(225,150); }
}
else if(PollSwitch()!=0) //Kollisionsfall
{
int u=0;
while(u==0)
{
if (lData[1] > 100 && lData[0]>100) //Linie gefunden?
{
MotorDir(FWD,RWD); //drehen
MotorSpeed(150,0);
u=0;
}
else
{
u=1;
}
}
}
}
return 0;
}
edit: alte, inaktive programmteile gelöscht.