Sesión 7 de mayo_
Sensor de ultrasonidos
Tened presentes los apuntes de el enlace de abajo por si no recordáis algo (en el documento hay cosas que aún no hemos visto)
Acceder a los apuntes
arrow_forward
¿Cómo montamos el circuito?

¿Y el código?
Recordad que utilizamos el código que teníamos del ultrasonidos al que el martes le hicimos unas modificaciones. Lo hemos retocado un poco.
- Preparar las variables del número de los pines a los que estará conectado el sensor. Las pondremos fuera del
void setup()
(arriba de todo) y las llamaremosint emitePin = 11;
yint recibePin = 10;
, respectivamente. - Pondremos también la variable del número (en centímetros) de la distancia. Al principio no le pondremos ningún valor:
float distancia;
- DENTRO del
void setup()
pondremos los modos de los pines: el que emite estará en modoOUTPUT
y el que recibe en modoINPUT
, usaremos las variables en vez de los números. - Para que el Arduino nos pase los datos a través del ordenador, iniciaremos la comunicación Serial con
Serial.begin(9600);
- DENTRO DEL
void loop()
enviaremos la señal durante 10 MICROsegundos (1 microsegundo = 0,000001 segundos o 0,001 milisegundos):digitalWrite(emitePin, LOW); delayMicroseconds(2); digitalWrite(emitePin, HIGH); delayMicroseconds(10); digitalWrite(emitePin, LOW);
- Ahora usaremos una NUEVA función de Arduino que nos dice cúantos microsegundos pasan desde que se llama a la función hasta que el valor que llega al pin cambia.
En nuestro caso, no llegará nada de electricidad hasta que vuelva la onda. Cuando lo haga, lo que el pin lea dejará de serLOW
y seráHIGH
, entonces la función nos dará el tiempo.long duracion = pulseIn(recibePin, HIGH); // Calcular la distancia (en cm) basada en la velocidad del sonido distancia = duracion * (340.0 / 10000.0) / 2.0; // PASAR DE METROS/SEGUNDO A CM/MICROSEGUNDO (340 * 100 / 1000000) // Y LUEGO ENTRE 2 PARA PASAR DEL RECORRIDO DE IDA Y VUELTA A SOLO LA IDA
- Si os fijáis bien, hemos utilizado la velocidad del sonido y hemos dividido para 2. ¿Por qué? Porque la onda tiene que ir y volver, y nosotros solo queremos la distancia "de ida" y no el total de ida y vuelta.
- Ahora, por último pero no menos importante, ¡queremos saber la distancia y que no se la quede solo Arduino! Para eso, usaremos una función que ya hemos visto, y vamos a darle un pequeño descanso de 50 milisegundos:
Serial.print(distancia); Serial.println(" centimetros"); delay(50);
Este es el código completo:
int recibePin = 10; // Echo Pin
int emitePin = 11; // Trigger Pin
float distancia; //Duración usada para calcular la distancia
void setup() {
Serial.begin(9600);
pinMode(emitePin, OUTPUT);
pinMode(recibePin, INPUT);
}
void loop() {
digitalWrite(emitePin, LOW);
delayMicroseconds(2);
digitalWrite(emitePin, HIGH);
delayMicroseconds(10);
digitalWrite(emitePin, LOW);
long duracion = pulseIn(recibePin, HIGH);
//Calcular la distancia (en cm) basada en la velocidad del sonido
distancia = duracion * (340.0 / 10000.0) / 2.0; // DIVIDIMOS 340 / 10000 AL PASAR DE METROS/SEGUNDO A CM/MICROSEGUNDO (340 * 100 / 1000000)
// Y LUEGO ENTRE 2 PARA PASAR DEL RECORRIDO DE IDA Y VUELTA A SOLO LA IDA
Serial.print(distancia); Serial.println(" centimetros");
delay(50);
}