SENSORES CON ARDUINO . DETECTOR DE DISTANCIA



El detector de distancia que vamos a utilizar es el HC-SRO4 es un sensor ultrasónico de distancia, mandamos una señal ultrasónica y medimos el eco




Tiene 4 terminales, Vcc, Trig Echo y GND




Utilizando Tinkercad diseñamos las conexiones, en primer lugar conectamos la alimentación









los terminales TRIG y ECHO, pueden conectarse en cualquier entrada digital de la placa de arduino, hemos elegido 7 y 8



en la parte superior del programa indicaremos en que posiciones las hemos conectado con la instrucción #define
#define trigPin 8 
#define echoPin 7


A continuación tendemos la zona de setup y la zona de loop, en la primera indicaremos si cada una de las conexiones funciona como entrada o salida


pinMode(trigPin, OUTPUT); 
pinMode(echoPin, INPUT);
Observa que cada instrucción finaliza con ;


Si queremos visualizar las distancias en pantalla, utilizaremos el monitor serie, y lo inicializaremos con:    Serial.begin (9600);




En la zona de loop tendremos que incluir el código que controla de forma contínua la distancia, nos vendría bien una función que nos devolviese la distancia que mide nuestro sensor. Para ello debemos entender como funciona el sensor. El sonido se desplaza a 343m/s en condiciones normales, realizando unos cálculos básicos podemos calcular que para recorrer un cm necesitamos 29,2 µseg



El tiempo que medimos es el empleado en ir y volver, por tanto es el doble del que necesitamos





void loop() {


int medida = eco(trigPin, echoPin); // esta es la función que debemos realizar


Serial.print("Distancia: "); //escribirá en pantalla la palabra Distancia:


Serial.println(medida); // escribirá el valor de la medida y pasará de línea


delay(1000); //espera un segundo



}


Nos queda escribir la función que nos devolverá la medida, la llamaremos eco y la escribiremos al final del programa

int eco(int trig, int echo) { // eco necesita utilizar el valor de los pines de trig y echo


long tiempo, medida; //utilizamos dos variables para calcular la distancia y el tiempo


digitalWrite(trig, LOW); //aseguramos que el trigger està desactivado

delayMicroseconds(4);

digitalWrite(trig, HIGH); //activamos Trigger (disparo) de 10us

delayMicroseconds(10);

digitalWrite(trig, LOW); //desactivamos el pulso

tiempo = pulseIn(echo, HIGH); //medimos el tiempo entre pulsos, en microsegundos

medida = tiempo / (29.2 * 2); //convertimos la distancia, en cm

return medida;


}

Hemos utilizado una función de Arduino PulseIn , su función es la siguiente:

Lee un pulso (HIGHo LOW) en un pin. Por ejemplo, si el valor es alto, () espera a que el pin pase a nivel HIGH, se inicia el tiempo, espera a que el pin pase a nivel LOW y para el cronómetro. Devuelve la longitud del impulso en microsegundos o 0 si no se recibe un pulso completo dentro del tiempo de espera.

Solo nos queda probar el sensor.