En este proyecto, le mostraré cómo medir la velocidad de movimiento de un objeto usando el sensor ultrasónico HC-SR04
COMPONENTES Y SUMINISTROS
- Arduino Nano R3
- LCD 16×2
- Sensor ultrasónico – HC-SR04
- LED rojo
- Resistencia 330 ohmios
- Potenciómetro de una sola vuelta – 10k ohmios
- Cables para conexión
El sensor ultrasónico HC-SR 04 se usa más comúnmente para medir la distancia, pero esta vez le mostraré cómo medir la velocidad de movimiento de un objeto usando este sensor.
El dispositivo es muy simple y consta de solo unos pocos componentes:
– Microcontrolador Arduino Nano
– Pantalla LCD
– Sensor ultrasónico
– y diodo LED
Para ese propósito, necesitamos tomar dos medidas de distancia en un corto período de tiempo y tenemos:
distancia2 – distancia1 = velocidad de la distancia en un momento dado
Si hacemos las mediciones en un período de tiempo de 1 segundo, obtenemos la velocidad de movimiento del objeto en cm / s. El código básico se tomó del foro arduino cc y acabo de agregar una pantalla LCD para una representación visual de los resultados.
La primera fila muestra la distancia y la segunda fila muestra la velocidad si el objeto se está moviendo.
También hay un LED que indica la distancia a la que se coloca el objeto. Si la distancia es inferior a 5 cm, el LED se ilumina de forma continua. A medida que aumenta la distancia, el LED comienza a parpadear a una velocidad que depende de la distancia del objeto. Si el objeto se aleja, el parpadeo es más lento y viceversa.
Cuando el objeto se mueve en la dirección opuesta, la velocidad representada en la pantalla tiene un signo negativo.
#include <LiquidCrystal.h>
LiquidCrystal lcd ( 12 , 11 , 5 , 4 , 3 , 2 ); // RS, E, D4, D5, D6, D7
// define los números de los pines
const int trigPin = 9 ;
const int echoPin = 10 ;
// define variables
larga duración ;
int distancia1 = 0 ;
int distancia2 = 0 ;
velocidad doble = 0 ;
int distancia = 0 ;
configuración vacía ()
{
lcd . comenzar ( 16 , 2 ); // LCD 16X2
pinMode ( trigPin , SALIDA ); // Establece el trigPin como salida
pinMode ( echoPin , ENTRADA ); // Establece echoPin como entrada
pinMode ( 7 , SALIDA );
Serial . comenzar ( 9600 ); // Inicia la comunicación serial
}
bucle vacío ()
{
// calculando la velocidad
distancia1 = lectura ultrasónica (); // llama a la función ultrasinicRead () a continuación
retraso ( 1000 ); // dando un intervalo de tiempo de 1 segundo
distancia2 = lectura ultrasónica (); // llama a la función ultrasinicRead () a continuación
// cambio de fórmula en la distancia dividido por el cambio en el tiempo
Velocidad = ( distancia2 - distancia1 ) / 1.0 ; // como el intervalo de tiempo es de 1 segundo, lo dividimos por 1.
// Velocidad de visualización
Serial . print ( "Velocidad en cm / s:" );
Serial . println ( velocidad );
lcd . setCursor ( 0 , 1 );
lcd . imprimir ( "Velocidad cm / s" );
lcd . imprimir ( Velocidad );
// Indicador LED
si ( distancia > 0 && distancia < 5 )
{
escritura digital ( 7 , ALTA );
retraso ( 50 ); // espera un segundo
}
si ( distancia > 5 && distancia < 10 )
{
escritura digital ( 7 , ALTA );
retraso ( 50 ); // espera un segundo
digitalWrite ( 7 , BAJO ); // apaga el LED
retraso ( 50 ); // espera un segundo
}
si ( distancia > 10 && distancia < 20 )
{
escritura digital ( 7 , ALTA );
retraso ( 210 ); // espera un segundo
digitalWrite ( 7 , BAJO ); // apaga el LED
retraso ( 210 ); // espera un segundo
}
si ( distancia > 20 && distancia < 35 )
{
escritura digital ( 7 , ALTA );
retraso ( 610 ); // espera un segundo
digitalWrite ( 7 , BAJO ); // apaga el LED
retraso ( 610 ); // espera un segundo
}
}
flotar ultrasónicoRead ()
{
// Borra el trigPin
digitalWrite ( trigPin , LOW );
delayMicroseconds ( 2 );
// Establece el trigPin en estado ALTO durante 10 microsegundos
digitalWrite ( trigPin , HIGH );
delayMicroseconds ( 10 );
digitalWrite ( trigPin , LOW );
// Lee el echoPin, devuelve el tiempo de viaje de la onda de sonido en microsegundos
duración = pulseIn ( echoPin , HIGH );
// calcular la distancia
distancia = duración * 0.034 / 2 ;
// Imprime la distancia en el monitor serial
Serial . print ( "Distancia en cm:" );
Serial . println ( distancia );
lcd . setCursor ( 0 , 0 );
lcd . print ( "Dist. en cm" );
lcd . imprimir ( distancia );
lcd . imprimir ( "" );
distancia de regreso ;
}
-
Arduino ATmega 2560 R3¡Oferta!
$20.50$19.00 -
Arduino Uno Wifi¡Oferta!
$15.00$13.00 -
Arduino Mini USB Nano V3.0 CH340 Chip Board 5V 16M + Cable¡Oferta!
$9.00$8.50