luckylukas92
27.11.2008, 17:28
Hallo
und vielen dank an alle di versuchen mir zu helfen :D
Ich habe ein (mehr oder weniger) kleines programm zur linienverfolgung geschrieben
#include "asuro.h"
timewait(unsigned int t) // 1 sek pause
{
unsigned int pause;
for (pause=0; pause<t; pause++) // 1 millisekunde Pause
{ Sleep (72);
}
}
int main(void) {
unsigned int data[2];
unsigned char links,rechts;
int diffl,diffr,i,ledonl,ledonr,ledoffl,ledoffr,ledon, ledoff,diffrf,difflf,j,rab;
//rab=regelabweichung
Init();
for (i = 0; i < 2; i++ ) {
FrontLED(ON);
LineData(data); // Messung mit LED ON
ledonl = data[0];
ledonr = data[1];
timewait(500);
/*FrontLED(OFF);
LineData(data); // Messung mit LED OFF
ledoffl = data[0];
ledoffr = data[1];
timewait(500);
*/
ledon = (ledonl - ledonr); // Regelabweichung mit LED ON
/*
ledoff = (ledoffl - ledoffr);// Regelabweichung mit LED OFF ->noch keine verwendung
diffl = ledonl - ledoffl; //differenzen
diffr = ledonr - ledoffr;
*/
rab = ledon; // Regelabweichung
timewait(500);
}
while(1) {
FrontLED(ON);
MotorDir(FWD,FWD);
LineData(data);
difflf=data[0]-data[1]-rab;
diffrf=data[1]-data[0]-rab;
links=120-(diffrf*3); //noch zu langsam
rechts=120-(difflf*3); //noch zu langsam
if (links&&rechts >= 120) // auf gerader strecke schneller //geht nicht
{
links&&rechts == 180;
}
if (data[0] && data[1] < 30) //prüfung ob weggabelung oder ende
{
for (j = 0; j < 5; j++ )
{
if (j <= 4&&data[0] && data[1] < 30) // 0,4sek lang gerade aus
{links=90;
rechts=90;
timewait(100);}
if (j > 4&&data[0] && data[1] < 30) //wenn immernoch schwarz stop
{links=0;
rechts=0;}
}
}
if (links>120)
{
links=120;
}
if (rechts>120)
{
rechts=120;
}
MotorSpeed(links,rechts);
}
return 0;
}
und jetzt hat meine kleine schwester meinen asuro kaputt gemacht :P ...kann bitte mal jmd testen ob das so in etwa klappt?
also die linienverfolgung müsste funktionieren das hatte ich noch selbst getesten mir geht er hauptsächlich um die beschleunigung auf geraden und das stoppen bei nem dicken schwarzen strich (das habe ich bei meinen zeicnungn immer am ende)
desweiteres wollte ich fragen ob es möglich ist dieses programm so zu erweitern das es im 90° winkel um ecken fahren kann ..und wenn ja natürlich wie^^
mfg lukas
und nochma vielen dank an die leute die sich das programm mal drauf machen
Ps:sry ich war noch nie gut in deutsch
und vielen dank an alle di versuchen mir zu helfen :D
Ich habe ein (mehr oder weniger) kleines programm zur linienverfolgung geschrieben
#include "asuro.h"
timewait(unsigned int t) // 1 sek pause
{
unsigned int pause;
for (pause=0; pause<t; pause++) // 1 millisekunde Pause
{ Sleep (72);
}
}
int main(void) {
unsigned int data[2];
unsigned char links,rechts;
int diffl,diffr,i,ledonl,ledonr,ledoffl,ledoffr,ledon, ledoff,diffrf,difflf,j,rab;
//rab=regelabweichung
Init();
for (i = 0; i < 2; i++ ) {
FrontLED(ON);
LineData(data); // Messung mit LED ON
ledonl = data[0];
ledonr = data[1];
timewait(500);
/*FrontLED(OFF);
LineData(data); // Messung mit LED OFF
ledoffl = data[0];
ledoffr = data[1];
timewait(500);
*/
ledon = (ledonl - ledonr); // Regelabweichung mit LED ON
/*
ledoff = (ledoffl - ledoffr);// Regelabweichung mit LED OFF ->noch keine verwendung
diffl = ledonl - ledoffl; //differenzen
diffr = ledonr - ledoffr;
*/
rab = ledon; // Regelabweichung
timewait(500);
}
while(1) {
FrontLED(ON);
MotorDir(FWD,FWD);
LineData(data);
difflf=data[0]-data[1]-rab;
diffrf=data[1]-data[0]-rab;
links=120-(diffrf*3); //noch zu langsam
rechts=120-(difflf*3); //noch zu langsam
if (links&&rechts >= 120) // auf gerader strecke schneller //geht nicht
{
links&&rechts == 180;
}
if (data[0] && data[1] < 30) //prüfung ob weggabelung oder ende
{
for (j = 0; j < 5; j++ )
{
if (j <= 4&&data[0] && data[1] < 30) // 0,4sek lang gerade aus
{links=90;
rechts=90;
timewait(100);}
if (j > 4&&data[0] && data[1] < 30) //wenn immernoch schwarz stop
{links=0;
rechts=0;}
}
}
if (links>120)
{
links=120;
}
if (rechts>120)
{
rechts=120;
}
MotorSpeed(links,rechts);
}
return 0;
}
und jetzt hat meine kleine schwester meinen asuro kaputt gemacht :P ...kann bitte mal jmd testen ob das so in etwa klappt?
also die linienverfolgung müsste funktionieren das hatte ich noch selbst getesten mir geht er hauptsächlich um die beschleunigung auf geraden und das stoppen bei nem dicken schwarzen strich (das habe ich bei meinen zeicnungn immer am ende)
desweiteres wollte ich fragen ob es möglich ist dieses programm so zu erweitern das es im 90° winkel um ecken fahren kann ..und wenn ja natürlich wie^^
mfg lukas
und nochma vielen dank an die leute die sich das programm mal drauf machen
Ps:sry ich war noch nie gut in deutsch