#include <LiquidCrystal.h>
// Definir pines para LCD
const int rs = 13, en = 12, d4 = 11, d5 = 10, d6 = A0, d7 = A1;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// Declaramos que el pin Trig del ultrasónico será el pin 9 del arduino, y que el pin Echo será el 8
int trig = 9;
int echo = 8;
float t; // variable t=tiempo
float d; // variable d=distancia
void setup() {
//Establecemos con PinMode si el pin será OUTPUT o INPUT
pinMode(echo, INPUT);
pinMode(trig, OUTPUT);
Serial.begin(9600); //Iniciamos el serial monitor
lcd.begin(16, 2); // Inicializar LCD con 16 columnas y 2 filas
lcd.clear(); // limpiamos el LCD
lcd.setCursor(0, 0); // para establecer el cursor arriba a la izquierda
lcd.print("Dist:"); // Texto del primer renglón
lcd.setCursor(0, 1); // para establecer abajo a la izquierda
lcd.print("Coloque objeto"); // Texto del segundo renglón
}
void loop() {
/* El sensor ultrasónico funciona por medio de pulsos
que envía al objeto a medir, y la distancia es proporcional
a la duración del pulso, por lo tanto usaremos la ecuación física d=v*t
*/
digitalWrite(trig, HIGH); // Establecemos el valor del pin HIGH(5V)
delayMicroseconds(1000); // Espera un segundo
digitalWrite(trig, LOW); // Valor del pin LOW(0V)
d = pulseIn(echo, HIGH); //Para leer cuando Echo sea HIGH
d = (d / 2) / 29.1; //Ecuación
delay(100);
// Este sensor es capaz de detectar hasta 5 mts.
if (d < 500) // Le damos instrucción para que si es menor de 5 mts continúe
{
if (d < 100) //Si es menor de 1 m, desplegara la información en cm.
{
//Para imprimirlo en el serial monitor:
Serial.print("Distancia: ");
Serial.println(d);
//Para imprimirlo en el LCD:
lcd.setCursor(0, 0);
lcd.print("Dist: ");
lcd.setCursor(7, 0);
lcd.print(d);
lcd.print(" cm");
}
if (d >= 100) //Si es mayor a 1 m, lo despliega en mts.
{
Serial.print("Distancia: ");
Serial.println(d);
//En el LCD
lcd.setCursor(0, 0);
lcd.print("Dist.: ");
lcd.setCursor(7, 0);
lcd.print(d / 100);
lcd.print(" m");
}
}
else //Si es mayor 5mts, especifique que el objeto esta fuera de rango
{
Serial.print("FUERA DE RANGO");
lcd.setCursor(0, 0);
lcd.print(" FUERA DE RANGO ");
}
}