Se você precisa montar um robô seguidor de linha, o módulo sensor de linha analógico QRE1113 da Sparkfun pode ser uma peça importante do seu projeto.

O módulo QRE1113 é composto por um led infravermelho e um fototransistor e é do tipo analógico, ou seja, varia a tensão de saída de acordo com a quantidade de luz detectada pelo receptor. Por ter um tamanho bem reduzido (14 x 8 mm), é ideal para construção de robôs seguidores de linha.
O módulo sensor de linha analógico QRE1113
São apenas 3 pinos no módulo: Vcc (5 volts), GND e OUT (Sinal), sendo que este último aceita níveis de tensão de 3.3 à 5v. Portanto você pode utilizar esse sensor tanto em sistemas mais comuns, com o Arduino Uno, como em sistemas que utilizem, por exemplo, o Arduino Due, que trabalha com níveis de sinal de 3.3v.
O funcionamento é simples: quanto mais luz for recebida pelo sensor, menor será a tensão na saída. Assim você pode usar um conjunto de sensores e ajustar, por exemplo, a direção e/ou velocidade dos motores direito e esquerdo do seu robô conforme uma linha for detectada.
Circuito sensor e Arduino Uno
E como eu faço para ler isso? Usando uma das portas analógicas do Arduino e enviando os dados para o serial monitor, que vai mostrar que quanto mais clara a superfície que estamos testando, mais ela vai refletir a luz IR, e mais baixo vai ser o nível de tensão na saída do módulo.
No programa, nada de bibliotecas específicas ou comandos complicados. Você pode utilizar somente comandos básicos do Arduino para testar o sensor e enviar os dados para a serial.
No nosso exemplo, vamos ler o valor da porta analógica A3, e mostrar o nível de tensão na saída do módulo a cada 500 ms. Também vamos acender um led quando a tensão atingir um determinado valor (variável nivel_sinal):
//Programa : Teste sensor de linha QRE1113 Sparkfun
//Autor : Arduino e Cia
int nivel_sinal = 0;
int pino_led = 4;
int pino_sensor = A3;
void setup()
{
pinMode(pino_led, OUTPUT);
Serial.begin(9600);
}
void loop()
{
//Leitura do sensor
nivel_sinal = analogRead(pino_sensor);
//Envia os dados para o serial monitor
Serial.print("Nivel : ");
Serial.println(nivel_sinal);
//Teste o nivel de sinal e acende o led
if (nivel_sinal < 1000)
{
digitalWrite(pino_led, HIGH);
}
else
{
digitalWrite(pino_led, LOW);
}
//Aguarda 500 ms e reinicia o processo
delay(500);
}
Aproxime diferentes materiais do sensor para verificar a variação do sinal na saída do módulo. Cores mais escuras refletem menos a luz, e consequentemente geram menos variação de sinal. O contrário acontece com as cores claras.
Ajuste os valores da variável nivel_sinal para adequar a sensibilidade do sensor às necessidades do seu projeto. Experimente ainda incluir outras variáveis para testar diferentes níveis de luminosidade.
Gostou? Confira outros posts com sensor IR aqui mesmo no Arduino e Cia!