Como não estava a perceber o comportamento do meu robot, fiz um programa para mostrar as leituras directamente para o LCD. Um debugger. Assim vejo as condições e posso ajustar os limiares em função da iluminação, das texturas, etc.
O código é em NXC.
Código: Selecionar todos
int sensorSon, sensorLuz;
task main(){
SetSensorLowspeed(IN_4); // sonar i2c = lowspeed
SetSensorLight(IN_3); // sensor de luz
ClearScreen();
while(true){
sensorSon = SensorUS(IN_4); // leitura
sensorLuz = Sensor(IN_3); // leitura
TextOut(0,LCD_LINE1,"Sonar", true); // true limpa LCD
TextOut(0,LCD_LINE2,NumTOStr(sensorSon));
TextOut(0,LCD_LINE4,"Luz", false);
TextOut(0,LCD_LINE5,NumTOStr(sensorLuz));
}
}Ou seja, a ser mesmo assim, os dados deste sensor têm que ser ponderados para evitar a incorporação de valores errados na execução do código. Numa aplicação será preciso fazer uma média ou algo parecido para minimizar este efeito.
Alguém sabe se as leituras são mais fiáveis com o firmware RobotC? Já estive para o comprar mas decidi testar primeiro o NXC...
