SENSOR ULTRASÓNICO Y DISPLAY LCD 1602

El objetivo es que nos aparezca en el Display la distancia en cm que hay entre el sensor ultrasónico y un objeto. Algo como esto, teniendo en cuenta que el objeto es el porexpan blanco:




 Conectamos el sensor ultrasónico de la siguiente forma:

- VCC a 5V

- Echo a 2

- Trig a 3

- GND a GND

Ahora nos toca conectar el Display LCD 1602:

- VSS a GND

- VDD a 5V

- V0 a 5

- RS a 7

- RW a GND  

- E a 8  

- D4 a 9 

- D5 a 10  

- D6 a 11 

- D7 a 12 

- A a 5V

- K a GND

 El código que vamos a usar es:

#include <LiquidCrystal.h>

// --- Pin Definitions ---
// LCD Pins: RS=7, EN=8, D4=9, D5=10, D6=11, D7=12
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

// Ultrasonic Sensor Pins
const int trigPin = 3;
const int echoPin = 2;

// LCD Contrast Pin
const int contrastPin = 5;

// Contrast value (0-255). 60 to 100 is usually a sweet spot.
const int contrastValue = 60;

void setup() {
  // 1. Initialize Serial Communication (Baud rate: 9600)
  Serial.begin(9600);
 
  // 2. Initialize Sensor Pins
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

  // 3. Set up LCD Contrast using PWM
  pinMode(contrastPin, OUTPUT);
  analogWrite(contrastPin, contrastValue);

  // 4. Initialize the LCD (16 columns, 2 rows)
  lcd.begin(16, 2);

  // --- Professional Startup Text ---
  lcd.setCursor(0, 0);
  lcd.print("Medida distancia");
  lcd.setCursor(0, 1);
  lcd.print("   Sistema de     ");
 
  // Print a startup message to the Serial Monitor as well
  Serial.println("Sistema Inicializado...");
  Serial.println("------------------------------------");
 
  delay(3000); // Display the welcome message for 3 seconds
  lcd.clear(); // Clear the screen for the main loop
}

void loop() {
  long duration;
  int distanceCm;

  // --- Trigger the Ultrasonic Sensor ---
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // --- Read and Calculate ---
  duration = pulseIn(echoPin, HIGH);
  distanceCm = (duration * 0.034 / 2);

  // --- 1. Display on LCD ---
  lcd.setCursor(0, 0);
  lcd.print("Distancia objeto:");

  lcd.setCursor(0, 1);
  lcd.print(distanceCm);
  lcd.print(" cm    "); // Extra spaces to clear old digits

  // --- 2. Display on Serial Monitor ---
  Serial.print("Distancia objeto: ");
  Serial.print(distanceCm);
  Serial.println(" cm");

  // Wait a short moment before taking the next reading
  delay(250);
}

No hay comentarios:

Publicar un comentario