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