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