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:
mfgCode:#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; }







Zitieren

Lesezeichen