Das programm ist eigentlich simple( Ich hab heute um 2 uhr morgen gemacht für eine Ausführung in der TUHH, und hab daran noch nicht weiter gearbeitet).
Code:
#include "lib/essential.c"
#include "lib/analog.c"
#define FSPEED 0xFF
#define LSPEED 0x99
#define MDIST 15
#define DIST 100
#define FILTER 15
unsigned short data[2];
signed short diff;
int main(void)
{
Init();
FrontLED(OFF); // Infrarot einschalten
while(1)
{
Analog(data);
if(data[LEFT] > MDIST && data[RIGHT] > MDIST)
{
diff = data[LEFT] - data[RIGHT];
if(abs(diff) < FILTER)
{
MotorSpeed(FSPEED, FSPEED);
if(data[LEFT] > DIST + FILTER)
MotorState(RWD, RWD);
else if(data[LEFT] < DIST)
MotorState(FWD, FWD);
else
MotorState(BREAK, BREAK);
}
else
{
MotorSpeed(FSPEED, FSPEED);
if(diff > 0)
MotorState(RWD, FWD);
else
MotorState(FWD, RWD);
}
}
else
{
MotorState(BREAK, BREAK);
}
}
return 0;
}
und, die schaltung? hmm, ich weis nicht wie ich es machen soll, einfach ne pnp-transistor: base zu frontled-kabel, current zu vcc, emiter zu die Sensoren und ir-led (bei Sensoren die kurzere beine und bei led die längere), und die längere beine der Sensoren verbindest du mit ADC-eingang der linienverfolgung und die kurzere bein der LED mit ground.
die verbindungskabel soll ambesten so aussehen:
http://schule.tu-harburg.de/wettbewe...nkelsensor.pdf
PS: widerstände nicht vergessen, und die library ist nicht standard, aber es soll auch mit normales asuro.h gehen (LineData)
Lesezeichen