Descripción
El Sensor de Distancia es un dispositivo que permite conocer aproximadamente las distancia de los objetos que tiene frente. En la práctica veremos que es una aproximación porque depende que cuerpo tiene delante, es más preciso o no.
En este caso, el circuito esta realizado para un Sensor de Distancia SRF05.
Circuito
Código
const int trigPin = 51; // Pin disparador. Se puede usar otro pin digital
const int echoPin = 53; // Pin eco. Se puede usar otro pin digital
void setup() {
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
pinMode(trigPin, OUTPUT); // Establece pin como salida
pinMode(echoPin, INPUT); // Establece pin como entrada
digitalWrite(trigPin, LOW); // Pone el pin a un estado logico bajo
}
void loop() {
long duration, inches, cm; // Declara variables
// Pulso de 10us para inicial el modulo
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); //Devuelve la longitud del pulso del pin Echo en us
// Convierte el tiempo de recepción del eco en distancia:
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
// Imprime valores por el puerto serie:
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm, ");
Serial.print(duration);
Serial.print("eco ");
Serial.println();
delay(500); // Espera 50ms para la siguiente medición (Tiempo mínimo recomendado!!)
}
// Calcula la distancia en pulgadas
long microsecondsToInches(long microseconds) {
return microseconds /148;
}
// Calcula la distancia en cm
long microsecondsToCentimeters(long microseconds) {
return microseconds /58;
}
Código
long distancia;
long tiempo;
void setup(){
Serial.begin(9600);
pinMode(9, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/
pinMode(8, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/ }
void loop(){
digitalWrite(9,LOW); /* Por cuestión de estabilización del sensor*/
delayMicroseconds(5);
digitalWrite(9, HIGH); /* envío del pulso ultrasónico*/
delayMicroseconds(10);
tiempo=pulseIn(8, HIGH); /* Función para medir la longitud del pulso entrante. Mide el tiempo que transcurrido entre el envío del pulso ultrasónico y cuando el sensor recibe el rebote, es decir: desde que el pin 12 empieza a recibir el rebote, HIGH, hasta que deja de hacerlo, LOW, la longitud del pulso entrante*/
distancia= int(0.017*tiempo); /*fórmula para calcular la distancia obteniendo un valor entero*/ /*Monitorización en centímetros por el monitor serial*/ Serial.println("Distancia ");
Serial.println(distancia);
Serial.println(" cm");
delay(1000);
}
Desafío
Qué tal si haces una broma y colocas un caramelo frente de un Sensor de Distancia conectado a un Arduino y que acciones una alarma cuando alguien de acerca a tomarlo.