Menu

Sensor reflexivo

Como indica o nome, o sensor reflexivo depende de ma reflexão: ele emite uma luz (infravermelha) e detecta se houve uma reflexão.

Há vários módulos e componentes LED que podem ser utilizados. Vamos ver três deles:

 

Eles estão conectados em uma entrada digital. Então, teremos um sinal alto/ baixo quando houver reflexão:

int sensor = 9;
int altofalante = 11; //A5;
int estado = 0;

void setup() {
  pinMode(sensor,INPUT); 
  pinMode(altofalante, OUTPUT); 
}

void loop() {
  estado = digitalRead(sensor); 
  if (estado == HIGH ) { 
    noTone(altofalante);
  } else { //objeto detectado
    tone(altofalante, 1350);
    delay(150);
    tone(altofalante, 1050);
    delay(150);
  }
}

O código acima funciona para as três alternativas. Quando houver reflexão (um objeto for detectado), será emitido um som (poderia ser acionado um LED, acionado um servo motor…).

Agora, vamos realizar a leitura analógica:

ou

 

int sensor = A0;
int altofalante = 11; //A5;
int estado = 0;

void setup() {
  pinMode(sensor,INPUT); 
  pinMode(altofalante, OUTPUT); 
  Serial.begin(9600); 
}

void loop() {
  estado = analogRead(sensor); 
  Serial.print("Valor lido: ");
  Serial.println(estado);
  //estado = map(estado, 0, 1023, 0, 100); //transforma a leitura para o intervalo 0 a 100
  if (estado > 500) { 
  noTone(altofalante);
  } else { //objeto detectado
    tone(altofalante, 1350);
    delay(150);
    tone(altofalante, 1050);
    delay(150);
  }
}

Agora o valor da leitura vai de 0 a 1023 ( e pode ser transformado para outro valor.

A partir deste último exemplo, crie um projeto que:

  • muda o valor de brilho de um LED conforme a proximidade (  map(estado, 0, 1023, 0, 255);   => valor PWM para controle do brilho) ;
  • Move um servo motor de acordo com a proximidade (  map(estado, 0, 1023, 0, 180);  => ângulo do servo motor ).
    • Lembre-se de que, no caso do servomotor, vc deverá importara a biblioteca (#include<Servo.h>, declarar o objeto (Servo meuMotor;), ligar o controle do servo em uma porta (por exemplo, meuMotor.attach(6); ,  para ligar na porta 6), e, depois, enviar os valores ( meuMotor.write(estado); ). Veja na página de servo-motores como ligar e testar: __aqui__ .

Depois, apresente seu projeto para os outros alunos.

Universidade Federal do Paraná
TI Aplicada – pesquisa e extensão

Av Pref Lothário Meissner, 632
80210-170 | Curitiba |
simao@ufpr.br
(41) 3360-4420
Universidade Federal do Paraná
TI Aplicada – pesquisa e extensão

Av Pref Lothário Meissner, 632
80210-170 | Curitiba |
simao@ufpr.br
(41) 3360-4420

UFPR nas Redes Sociais


UFPR nas Redes Sociais