domingo, agosto 23, 2015

SENSOR DE INFRAVERMELHO DA SHARP

Este sketch é uma aplicação do sensor de infravermelho 2Y0A02 da SHARP, que tem como função verificar obstáculos à frente e, ao chegar a um limite de distância ( no sketch 30cm), dar um sinal sonoro e acender um led vermelho. Sua precisão não se compara com a do ultrassom, mas pode servir muito bem para se evitar colisões e fornecer dados para um robô desviar de obstáculos. O sketch usa a porta serial para apresentar o sinal recebido pelo sensor e o valor transformado em centímetros (obtido a partir de uma função exponencial).  


HARDWARE: SENSOR SHARP 2Y0A02/RESISTOR  330Ω/LED/BUZZER
/*
****************************************************
    PROJETO ROBÓTICA NA ESCOLA 2015 
 SENSOR INFRAVERMELHO SHARP 2Y0A02
          EE DR PEDRO VELHO – RN/BR        
****************************************************
*/
int pinoLed = 12;
int pinoSensor = 0;
int pinoBuzzer = 3;
int leitura=0;
int leitura1=0;
int amostra=0;
float cm=0;
void setup()
{
Serial.begin(9600);
pinMode(pinoLed, OUTPUT);
pinMode(pinoBuzzer, OUTPUT);
}
void loop()
{
for(int i=1; i < 2 ; i++)  
{
 leitura1 = analogRead(pinoSensor);  // leitura do sensor
 leitura = map(leitura1, 0, 800, 0, 360);  //faz a proporção
 amostra = amostra + leitura;  //armazena leitura na variável amostra  
}  
amostra = amostra/2;  //tira a média das amostras
cm = pow(3027.4 / amostra, 1.2134);  // conversão em centímetros
Serial.println("Leitura do Sensor: ");
Serial.println(leitura);  // apresentando a leitura do sensor
Serial.println("");
Serial.println("Distancia em cm:");
Serial.println(cm);   // apresentando a conversão em centímetros
delay(2000);   // tempo de espera para realizar outra leitura
if(cm < 30)
{
digitalWrite(pinoLed, HIGH);
tone(pinoBuzzer, 2637);
delay(50);
}
else
{
digitalWrite(pinoLed,LOW);
noTone(pinoBuzzer);
delay(50);
}
}

//FIM DO SKETCH

Nenhum comentário:

Postar um comentário