martes, 21 de abril de 2020

Practica 3.04 Sensor de ultrasonidos

Hola a todos y a todas, bienvenidos a mi blog, hoy vamos a hacer un sensor de proximidad.

Para ello vamos a usar un sensor de ultrasonidos, que es un dispositivo para medir distancias. Su funcionamiento se base en el envío de un pulso de alta frecuencia, que el ser humano no es capaz de oír. Este pulso rebota en los objetos cercanos y es reflejado hacia el sensor, que dispone de un micrófono adecuado para esa frecuencia.

Hay tres niveles de proximidad, cada uno indicado con un LED.

La conexión del circuito es esta:






Los bloques de programación son estos:



Primero, he anclado una variable a los valores que recibe el sensor de ultrasonidos. Luego, he programado el aviso de alta proximidad, que se manifiesta al encenderse un LED rojo, para hacer esto, he ordenado que si los valores de la variable son menores que 50 (cm) se ejecute la acción (que se encienda el LED). Después, he hecho lo mismo con los otros dos LEDS, de aviso medio (naranja), y bajo (amarillo), ordenando que se encienda si el valor de la variable está entre dos números. Como resultado, si un objeto está a menos de 50 cm, se enciende el rojo, si está entre 50 y 100 cm, el naranja, y si está entre 100 y 150 cm, el amarillo.

Este es el código de programación del proyecto:


int distancia = 0;

long readUltrasonicDistance(int triggerPin, int echoPin)
{
  pinMode(triggerPin, OUTPUT);  // Clear the trigger
  digitalWrite(triggerPin, LOW);
  delayMicroseconds(2);
  // Sets the trigger pin to HIGH state for 10 microseconds
  digitalWrite(triggerPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin, LOW);
  pinMode(echoPin, INPUT);
  // Reads the echo pin, and returns the sound wave travel time in microseconds
  return pulseIn(echoPin, HIGH);
}

void setup()
{
  pinMode(4, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(12, OUTPUT);
}

void loop()
{
  distancia = 0.01723 * readUltrasonicDistance(3, 2);
  if (distancia < 50) {
    digitalWrite(4, HIGH);
  } else {
    digitalWrite(4, LOW);
  }
  if (distancia > 50 && distancia < 100) {
    digitalWrite(7, HIGH);
  } else {
    digitalWrite(7, LOW);
  }
  if (distancia > 100 && distancia < 150) {
    digitalWrite(12, HIGH);
  } else {
    digitalWrite(12, LOW);
  }
  delay(10); // Delay a little bit to improve simulation performance
}



Aquí os dejo un vídeo para que veais cómo funciona:





En la situación actual, este proyecto sería muy útil para prevenir el acercamiento excesivo entre personas y evitar el contagio del virus que actualmente asola nuestra sociedad.


¡¡Esto ha sido todo por hoy y nos vemos en la siguiente entrada!!

1 comentario: