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);
Solo nos queda probar el sensor.
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.
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.