Sensor Infravermelho e aplicação na OBR

Resultado de imagem para sensor infravermelho imagem

É 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:

  1. Entradas:
    GND - vai no GND do Arduino
    VCC - vai no 5V do Arduino
    OUT - vai em uma entrada digital (ou analógica) do Arduino
  2. 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
}
}