const int TriggerPin = 12; // Asigna el pin de disparo
const int EchoPin = 13; // Asignamos el pin de escucha
long duracion, distanciaCm; // Iniciamos variables en 0
void setup() {
Serial.begin(9600); // Iniciamos la comunicación serial
pinMode(TriggerPin, OUTPUT); // El disparo es de salida
pinMode(EchoPin, INPUT); // La escucha es de entrada
}
void loop() {
int cm = ping(TriggerPin, EchoPin);
Serial.print("Distancia: "); // Imprime el texto
Serial.println(cm); //
delay(1000); // Espera 1 segundo para una nueva lectura
}
int ping(int TriggerPin, int EchoPin) { // Función ping, parámetros disparo/escucha
digitalWrite(TriggerPin, LOW); // Apagamos el pulso(LOW)
delayMicroseconds(4); // Esperamos 4 microsegundos
digitalWrite(TriggerPin, HIGH); // Encendemos el pulso (HIGH)
delayMicroseconds(10); // Esperamos 10 microsegundos
digitalWrite(TriggerPin, LOW); // Apagamos el pulso
duracion = pulseIn(EchoPin, HIGH); //medimos el tiempo entre el disparo y la escucha pulsos
distanciaCm = duracion * 10 / 292/ 2; //convertimos a distancia, en cm
return distanciaCm;
}
1 - Creamos 2 variables uno para el pin "disparador" y otro para pin de "escucha" llamados TriggerPin y EchoPin , respectivamente. El pin de disparo lo conectamos al Pin digital 12 , y los pin de escucha lo conectamos al Pin digital 13.
const int TriggerPin = 12; // Asigna el pin de disparo
const int EchoPin = 13; // Asignamos el pin de escucha
2 - También creamos 2
long duracion, distanciaCm; // Iniciamos variables en 0
3 - En
void setup() {
Serial.begin(9600); // Iniciamos la comunicación serial
pinMode(TriggerPin, OUTPUT); // El disparo es de salida
pinMode(EchoPin, INPUT); // La escucha es de entrada
}
4 - En
int ping(int TriggerPin, int EchoPin) { // Función ping, parámetros disparo/escucha
digitalWrite(TriggerPin, LOW); // Apagamos el pulso(LOW)
delayMicroseconds(4); // Esperamos 4 microsegundos
digitalWrite(TriggerPin, HIGH); // Encendemos el pulso (HIGH)
delayMicroseconds(10); // Esperamos 10 microsegundos
digitalWrite(TriggerPin, LOW); // Apagamos el pulso
5 - Escribe un valor encedido "HIGH" (5 voltios) o apagado "LOW" (0 voltios) un pin digital.
Ahora ya podemos escuchar el disparo del sensor: un pulso HIGH cuya duración es en microsegundos el tiempo entre el disparo hasta la escucha el pulso.
duracion = pulseIn(EchoPin, HIGH); //medimos el tiempo entre el disparo y la escucha pulsos
6 - Lee un pulso (ya sea HIGH o LOW) en un pin. Por ejemplo, si el valor es HIGH, pulseIn() espera a que el pin pase de LOW a HIGH, comienza a cronometrar, luego espera a que el pin se vaya LOW y detiene el cronometraje. Devuelve la duración del pulso en microsegundos o se da por vencido y devuelve 0 si no se recibió un pulso completo dentro del tiempo de espera. El tiempo de esta función se ha determinado empíricamente y probablemente mostrará errores en pulsos más largos. Funciona en pulsos de 10 microsegundos a 3 minutos de duración.
7 - Finalmente, solo necesitamos convertir la duración en una distancia. Podemos calcular la distancia usando la siguiente fórmula (La velocidad del sonido es: 343 m/s).
distanciaCm = duracion * 10 / 292/ 2; //convertimos a distancia, en cm
return distanciaCm;
}