Medir distancia con Arduino, sensor de ultrasonidos y LCD
En este tutorial pondremos en práctica lo mostrado en dos artículos anteriores. Visualizaremos la lectura de la distancia tomada con un módulo ultrasónico HC-SR04 en una LCD 1602.
Aquí te dejamos los tutoriales anteriores (ultrasónico y LCD).
Material Necesario:
Módulo I2C | ![]() |
LCD 1602 | ![]() |
Arduino UNO | ![]() |
Módulo ultrasónico HC-SR04 | ![]() |
Librería LiquidCrystal_I2C para Arduino | ![]() |
Cable varios | ![]() |
Conexión con Arduino:
PIN9 -> Trigger
PIN10 -> Echo
A4 -> SDA
A5 -> SCL
Programa:
/* * www.ProveedoraCano.com * Tutorial para medir una distancia con * el módulo ultrasónico HC-SR04 * en el monitor sere del IDE de Arduino * y una lcd 1602 (medidas en mm y pulgadas). */ #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // dirección 0x27 o 0x3F , también se configura el tipo de pantalla 16,2 o 20,4 /* Constantes para los Pines */ const byte TRIGGER_PIN = 9; // PIN TRIGGER const byte ECHO_PIN = 10; // PIN ECHO /* Constantes para el timeout */ const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m a 340m/s /* velocidad del sonido en mm/us */ const float SOUND_SPEED = 340.0 / 1000; void setup() { lcd.init(); // inicia LCD // Imprimomos mensaje lcd.backlight(); Serial.begin(115200); /* Inicia los Pines */ pinMode(TRIGGER_PIN, OUTPUT); digitalWrite(TRIGGER_PIN, LOW); // El PIN Trigger debe ser LOW en reposo pinMode(ECHO_PIN, INPUT); } void loop() { /* 1. Inicia una medición de distancia enviando un pulso HIGH de 10µs en el PIN TRIGGER */ digitalWrite(TRIGGER_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIGGER_PIN, LOW); /* 2. Mide el tiempo entre el envío del pulso utrasónico y su eco (si existe) */ long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT); /* 3. Calcula la distancia a partir del tiempo medido */ float distance_mm = measure / 2.0 * SOUND_SPEED; /* Registra los resultados en mm, cm et m */ Serial.print(F("Distance: ")); Serial.print(distance_mm); Serial.print(F("mm (")); Serial.print(distance_mm / 25.4, 2); Serial.println(F("plg)")); lcd.setCursor(0,0); //empezamos a escribir en la primera columna, primera línea lcd.print("Dist: "); lcd.print(distance_mm); lcd.print("mm"); lcd.setCursor(0,1); //empezamos a escribir en la primera columna, segunda línea lcd.print("Dist: "); lcd.print(distance_mm / 25.4); lcd.print("plg"); delay(500); lcd.clear(); }
Nos interesa saber tu opinión, contáctanos.