Medir distancia con Arduino, sensor de ultrasonidos y LCD – Cano electrónica

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.

 

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *