Aferição de valores no NXT - simple debugger

Para os mais especializados em mecânica e electrónica em LEGO.
Responder
aparicio
Jr. Member
Jr. Member
Mensagens: 98
Registado: 26 jun 2009, 09:50

Aferição de valores no NXT - simple debugger

Mensagem por aparicio »

Ainda sou novo no NXT e ando às voltas com um problema de calibração de sensores.

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));

    }
}
Com este ambiente (NXT com firmware base e NXC) percebi que o sensor de ultra-sons, de tempos a tempos dá valores anómalos, ou melhor, tem "picos". Noto isso mais nos momentos de transição, quando coloco um obstáculo à sua frente. Mas também já o vi dar-me os mesmos valores 3 e quatro medidas consecutivas quando está parado perpendicularmente a uma parede (e a uns 40 cm de distância). 

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...
Responder