O sensor de luz aponta na mesma direcção que o RCX, e mede os infravermelhos que este emite e que são reflectidos por algum obstáculo. Mais fácil de construir não há:
[align=center][img width=320]http://www.brickshelf.com/gallery/AVCam ... sensor.png[/img][/align]
Era o que eu tinha planeado para o Explorador e o Mk. II, mas nunca consegui que o programa funcionasse bem: precisava duma calibração complicada e mesmo assim dependia muito da luz à volta!
Então lembrei-me duma coisa simples: simplesmente medir a luz sem os infravermelhos ligados, medir a seguir com eles, e ver a diferença. Se houver uma diferença grande, é porque está algo perto e cuidado! Resolvi partilhar o método aqui, para o caso de dar jeito a algum de vós.
Estruturalmente, fica assim:
- Fazer uma leitura do valor de luz
- Iniciar a emissão contínua de mensagens por infravermelhos
- Fazer uma nova leitura do valor de luz
- Parar a emissão de mensagens por infravermelhos
- Se as duas leituras tiverem uma diferença maior que determinada constante, dar o alerta
Código: Selecionar todos
#define LIMIAR 160
task main ()
{
int valorvelho;
SetSensorType (SENSOR_1, SENSOR_TYPE_LIGHT);
SetSensorMode (SENSOR_1, SENSOR_MODE_RAW);
SetTxPower (TX_POWER_HI);
while (true)
{
valorvelho = SENSOR_1;
start Enviar;
if (abs (SENSOR_1 - oldvalue) > LIMIAR)
PlaySound (SOUND_CLICK);
stop Enviar;
}
}
task Enviar ()
{
while (true)
SendMessage (255);
}Este método também deve funcionar da mesma maneira com o NXT e o seu sensor de luz! Por exemplo, o sensor de ultra-sons aponta para a frente do robot para medir a distância a obstáculos, enquanto o de luz aponta para baixo para detectar o bordo da mesa (ou degraus) e não cair.
Como, ao contrário do sensor do RCX, pode-se ligar e desligar o LED vermelho que tem, em princípio fará a mesma coisa mas com luz visível em vez de infravermelhos. Terá a vantagem de se poder ter o sensor onde se quiser e não atrelado ao "tijolo", mas deve dar um efeito de "pisca-pisca" com o LED a acender e apagar. Alguém quer experimentar e ver se funciona?



