so, jetzt ist mein programm fertig. funktioniert einwandfrei. der rp6 findet nun jede lichtquelle zuverlässig.
Code:
#include "RP6RobotBaseLib.h"
#define BATRANGE 500
#define RANGE 1005
void task_LDRinfo(void)
{writeString_P("LDR_L: ");
writeIntegerLength(adcLSL,DEC,4);
writeString_P(" ; LDR_R: ");
writeIntegerLength(adcLSR,DEC,4);
writeChar('\n');
int16_t dif = ((int16_t)(adcLSL - adcLSR));
if(dif > 50) dif = 50;
if(dif < -50) dif = -50;
if(dif==50 && adcLSL<1005 & adcLSR<1005)
{setLEDs(0b000001);
moveAtSpeed(20,50);}
else if(dif==-50 && adcLSL<1005 & adcLSR<1005)
{setLEDs(0b000010);
moveAtSpeed(50,20);}
else if(adcLSL>1005 || adcLSR>1005)
{moveAtSpeed(0,0);
setLEDs(0b111111);
writeString_P("Lichtquelle gefunden");}
else{setLEDs(0b000000);
moveAtSpeed(50,50);}
}
void bumpersStateChanged(void)
{if(bumper_left)
{move(60,BWD,DIST_MM(150),true);
rotate(50,RIGHT,90,true);
changeDirection(FWD);
}
if(bumper_right)
{move(60,BWD,DIST_MM(150),true);
rotate(50,LEFT,90,true);
changeDirection(FWD);}
}
int main(void)
{initRobotBase();
powerON();
BUMPERS_setStateChangedHandler(bumpersStateChanged);
while(true)
{task_LDRinfo();
task_RP6System();
task_ADC();
}
return 0;
}
die werte sind auf einen schwach beleuchteten raum ausgelegt, nur für den fall, dass es jemand ausprobieren will.
mfg
Lesezeichen