Medindo Distancias com o P12 – Sensor de Obstaculos

“Extraído do Livro Arduino Simples e Divertido com autorização dos autores”.
Escrito por: Cláudio Vieira Oliveira e Humberto Zanetti

SENSOR DE DISTÂNCIA

Neste projeto vamos utilizar os módulos P12 – Sensor de Obstáculos (Figura 8.9) e PL2 – First Robot (ou P21 – Semáforo) para desenvolver um sensor de distância bastante simples.

p12

Figura 8.9: Módulo P12 – Sensor de Obstáculos

 

O módulo P12 – Sensor de Obstáculos deverá ser conectado ao Arduino da seguinte maneira (Figura 8.10):

 

  1. Pino 5+ do P12 ao pino 5V do Arduino;
  2. Pino GND do P12 a um dos pinos GND do Arduino;
  3. Pino A0 do Arduino ao pino A0 do P12.

pos2-2

Figura 8.10: Ligação do Módulo P12 ao Arduino

 

Em seguida, conecte o módulo PL2 – First Robot diretamente no Arduino conforme ilustrado pela Figura 8.11.

post1-1

Figura 8.11: Ligação do Módulo PL2 – First Robot

 

 

Quando utilizar o módulo P21 – Semáforo, as conexões ao Arduino deverão ser realizadas da seguinte maneira (Figura 8.12):

 

  1. Pino 5+ do P12 ao pino 5V do Arduino;
  2. Pino GND do P12 a um dos pinos GND do Arduino;
  3. Pino A0 do Arduino ao pino A0 do P12;
  4. GND do P21 a qualquer pino GND do Arduino;
  5. Led1 do P21 ao pino 11 do Arduino;
  6. Led2 do P21 ao pino 10 do Arduino;
  7. Led3 do P21 ao pino 9 do Arduino.

obs4

Figura 8.12: Ligação dos Módulos P12 e P21 ao Arduino

 

Em seguida, entre no ambiente de desenvolvimento do Arduino e digite o seguinte programa.

 

// Sensor de distância

 

int VERM = 11; // LED Vermelho

int AMAR = 10; // LED Amarelo

int VERD = 9; // LED Verde

int SENSOR = A0;

int valor;

 

void setup() {

Serial.begin(9600);

pinMode(VERM, OUTPUT);

pinMode(AMAR, OUTPUT);

pinMode(VERD, OUTPUT);

}

 

void loop() {

// Obter o valor do sensor (entre 0 e 1023)

valor = analogRead(SENSOR);

Serial.print(“Valor: “);

Serial.println(valor);

int distancia = map(valor, 0, 1023, 0, 4);

switch (distancia) {

case 0:

digitalWrite(VERM, HIGH);

digitalWrite(AMAR, LOW);

digitalWrite(VERD, LOW);

break;

case 1:

digitalWrite(VERM, LOW);

digitalWrite(AMAR, HIGH);

digitalWrite(VERD, LOW);

break;

case 2:

digitalWrite(VERM, LOW);

digitalWrite(AMAR, LOW);

digitalWrite(VERD, HIGH);

break;

default:

digitalWrite(VERM, LOW);

digitalWrite(AMAR, LOW);

digitalWrite(VERD, LOW);

break;

}

delay (100);

}

 

Neste sketch conforme algo se aproxima do módulo P12 – Sensor de Obstáculos, nós iremos acendendo os LEDs do módulo PL2 – First Robot (ou P21 – Semáforo). Todos os LEDs apagados indicam que não há objeto nas proximidades. O LED Verde aceso indica algo distante, o Amarelo indica um objeto à uma distância média enquanto o LED Vermelho vai indicar um objeto muito próximo (ou tocando) o sensor. Desta maneira, obtemos o valor do sensor (entre 0 e 1023) e o mapeamos para um valor entre 0 e 4, que indicará a proximidade de um objeto em relação ao sensor, conforme podemos observar no trecho de código-fonte a seguir.

 

valor = analogRead(SENSOR);

int distancia = map(valor, 0, 1023, 0, 4);

 

Para mais projetos como esse compre o Livro Arduino Simples e Divertido clicando aqui!