// EJERCICIO 2
// NOMBRE: Alejandro Callison Mendieta
// NUMERO DE CUENTA: 0601200401443
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#define TRIG 6
#define ECHO 7
#define LED_VERDE 8
#define SERVO_PIN 10
Servo barrera;
LiquidCrystal_I2C lcd(0x27, 16, 2);
long duracion;
float distancia;
void setup() {
Serial.begin(9600);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(LED_VERDE, OUTPUT);
barrera.attach(SERVO_PIN);
barrera.write(0);
lcd.init();
lcd.backlight();
digitalWrite(LED_VERDE, LOW);
lcd.setCursor(0, 0);
lcd.print("Barrera");
lcd.setCursor(0, 1);
lcd.print("Automatica");
delay(2000);
lcd.clear();
}
void loop() {
// Medir distancia
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duracion = pulseIn(ECHO, HIGH, 30000);
distancia = duracion * 0.034 / 2;
Serial.print("Distancia: ");
Serial.print(distancia);
Serial.println(" cm");
if (distancia > 0 && distancia < 15) {
barrera.write(90);
digitalWrite(LED_VERDE, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Acceso");
lcd.setCursor(0, 1);
lcd.print("Permitido");
delay(3000);
barrera.write(0);
digitalWrite(LED_VERDE, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Barrera");
lcd.setCursor(0, 1);
lcd.print("Cerrada");
delay(1000);
while (distancia < 15) {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duracion = pulseIn(ECHO, HIGH, 30000);
distancia = duracion * 0.034 / 2;
delay(300);
}
lcd.clear();
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Esperando");
lcd.setCursor(0, 1);
lcd.print("Usuario");
delay(500);
}
}