Nessa aula irei ensinar a como montar o circuito e programar um sensor de distância infravermelho Sharp. Esses sensores são ideais para detecção de objetos, diferente dos sensores Ultrassônicos, que utilizam o som para medição, esse utiliza a luz. Possuí grande precisão e alta facilidade para implementação.

 

Irei abordar suas 3 principais variações:

 

Circuito:

O circuito para um sensor sharp é bem simples, mas é importante ressaltar que devido à alguns picos de tensão, o fabricante indica, opcionalmente, a inserção de um capacitor de 10 µF ou maior em seu VCC e GND.

O circuito para os 3 sensores é igual:

É importante lembrar que os capacitores muitas vezes possuem polaridade, geralmente indicada por uma faixa colorida impressa no capacitor, habitualmente indicando o polo negativo.

 

 

Programação:

Sua programação também não é complicada, basta apenas aplicar as constantes referente a cada sensor no código.

GP2Y0A41SK0F – (4cm a 30cm):
/*
Código para o Sensor Sharp GP2Y0A41SK0F(4cm a 30cm)
*/
int Valor_do_sensor = 0; //Valor lido pelo sensor
int Valor_em_cm = 0; //Valor lido pelo sensor convertido em cm
int Pino_do_sensor = A0; //Pino Analogico* no qual você conectou o sensor
void setup()
{
pinMode(Pino_do_sensor, INPUT);//declara o Pino do sensor como entrada de valores
Serial.begin(9600);//Inicia o serial com velocidade de comunicação igual à: 9600
}
void loop()
{
Valor_do_sensor = analogRead(Pino_do_sensor); //estamos defininddo que o Valor do sensor será igual ao valor da leitura Analógica do Pino do sensor
Valor_em_cm = 13*pow(Valor_do_sensor * 0.0048828125 , -1); //estamos modificando o valor lido pelo sensor para que ele equivala à medida cm
Serial.print("Valor lido = "); //Vai printar no Serial o a frase "Valor lido = "
Serial.print(Valor_em_cm);//Vai printar na frente do "Valor lido = ", o valor em cm do sharp
Serial.println(" cm");//vai printar cm na frente do valor e quebrará a linha.
delay(250);//faz com que cada leitura demore 250 milisegundos para acontecer
}
GP2Y0A21YK – (10cm a 80cm):
/*
Código para o Sensor Sharp GP2Y0A21YK(10cm a 80cm)
*/
int Valor_do_sensor = 0; //Valor lido pelo sensor
int Valor_em_cm = 0; //Valor lido pelo sensor convertido em cm
int Pino_do_sensor = A0; //Pino Analogico* no qual você conectou o sensor
void setup()
{
pinMode(Pino_do_sensor, INPUT);//declara o Pino do sensor como entrada de valores
Serial.begin(9600);//Inicia o serial com velocidade de comunicação igual à: 9600
}
void loop()
{
Valor_do_sensor = analogRead(Pino_do_sensor); //estamos defininddo que o Valor do sensor será igual ao valor da leitura Analógica do Pino do sensor
Valor_em_cm = (6762/(Valor_do_sensor-9))-4; //estamos modificando o valor lido pelo sensor para que ele equivala à medida cm
Serial.print("Valor lido = "); //Vai printar no Serial o a frase "Valor lido = "
Serial.print(Valor_em_cm);//Vai printar na frente do "Valor lido = ", o valor em cm do sharp
Serial.println(" cm");//vai printar cm na frente do valor e quebrará a linha.
delay(250);//faz com que cada leitura demore 250 milisegundos para acontecer
}
GP2Y0A41SK0F – (20cm a 150cm):
/*
Código para o Sensor Sharp GP2Y0A41SK0F(20cm a 150cm)
*/
int Valor_do_sensor = 0; //Valor lido pelo sensor
int Valor_em_cm = 0; //Valor lido pelo sensor convertido em cm
int Pino_do_sensor = A0; //Pino Analogico* no qual você conectou o sensor
void setup()
{
pinMode(Pino_do_sensor, INPUT);//declara o Pino do sensor como entrada de valores
Serial.begin(9600);//Inicia o serial com velocidade de comunicação igual à: 9600
}
void loop()
{
Valor_do_sensor = analogRead(Pino_do_sensor); //estamos defininddo que o Valor do sensor será igual ao valor da leitura Analógica do Pino do sensor
Valor_em_cm = 10650.08 * pow(Valor_do_sensor,-0.935) - 10; //estamos modificando o valor lido pelo sensor para que ele equivala à medida cm
Serial.print("Valor lido = "); //Vai printar no Serial o a frase "Valor lido = "
Serial.print(Valor_em_cm);//Vai printar na frente do "Valor lido = ", o valor em cm do sharp
Serial.println(" cm");//vai printar cm na frente do valor e quebrará a linha.
delay(250);//faz com que cada leitura demore 250 milisegundos para acontecer
}