É importante entender o que o sensor infravermelho (também chamado de sensor de refletância) faz: ele “joga” uma luz infravermelha e analisa se ela reflete e volta ou não. Se refletir, ele retorna o valor 1 (verdadeiro, ou true). Se não, ele retorna o valor 0 (false). Dessa forma, pode ser usado, por exemplo, para diferenciar o preto da linha em contraste com a superfície branca ao redor ou detectar algum obstáculo (da mesma forma que o sensor ultrassônico, com a diferença que ele não retorna o valor da distância).
Como usá-lo:
- Entradas:
GND - vai no GND do Arduino
VCC - vai no 5V do Arduino
OUT - vai em uma entrada digital (ou analógica) do Arduino - Código:
No setup, use "pinMode(x,INPUT);" onde x representa a porta em que o sensor foi ligado.
Para ler o sensor, use "digitalRead(x)". Retornará "true" se a luz refletir e "false" se a luz emitida por ele não refletir
Agora, vamos explorar como aplicar o sensor para fazer o robô seguir a linha, que é uma das principais tarefas da OBR. Começando com um exemplo mais básico com dois sensores, imagine que você coloque-os no carrinho de forma que eles fiquem alinhados e cada um de um lado da linha (preta). Basicamente, quando o sensor de um lado encosta na linha (lê preto), o carrinho tem que virar para esse lado. Quando nenhum dos dois sensores encosta na linha, o carrinho simplesmente tem que seguir reto. Então, para dois sensores, a ideia é basicamente essa. Abaixo, colocarei um vídeo que mostra um robô do tipo funcionando e um código, para entender a ideia.
Código:
int esq, dir;
void setup() {
pinMode(8,INPUT); // sensor esquerdo
pinMode(9,INPUT); // sensor direito
//Não usei os motores porque depende de como você os está usando. Se é com ponte H ou de outra forma.
}
void loop() {
esq = digitalRead(8);
dir = digitalRead(9);
//1 == Preto e 0 == Branco
if(esq == 0 and dir == 0){
//Segue Reto
}
if(esq == 1 and dir == 0){
//Vira a Esquerda
}
if(esq == 0 and dir == 1){
//Vira a Direita
}
if(esq == 1 and dir == 1){
//Os dois sensores estão lendo preto, então não tem muito o que o robô fazer nesse caso
}
}