hallo, hab gerade ein ähnliches programm programmiert. bei mir sucht der roboter selbstständig in die hellste richtung. jetzt frag ich mich allerdings, warum die int_16t im programm nur die werte von -100 bis +100 annehmen kann, obwohl es ja ein 16 bit datentyp ist, der eigentlich von -32768 ... +32767 gehen sollte. ich hab es jetzt mal mit -200 und +200 ausprobiert, aber dann tut sich irgendwie gar nichts mehr. wer hat eine ahnung an was das liegt bzw. ich dieses problem lösen kann?
hier mein programm:
Code:
#include "RP6RobotBaseLib.h"
#define BATRANGE 500
#define RANGE 950
void task_LDRinfo(void)
{writeString_P("LDR_L: ");
writeIntegerLength(adcLSL,DEC,4);
writeChar('\n');
writeString_P("LDR_R: ");
writeIntegerLength(adcLSR,DEC,4);
writeChar('\n');
int16_t dif = ((int16_t)(adcLSL - adcLSR));
if(dif > 100) dif = 100;
if(dif < 100) dif = -100;
if(dif==100)
{setLEDs(0b000001);
moveAtSpeed(20,50);}
else if(dif==-100)
{setLEDs(0b000010);
moveAtSpeed(50,20);}
else{setLEDs(0b000000);
moveAtSpeed(0,0);}
}
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;
}
mfg
Lesezeichen