#include <Wire.h> /*~ Librería I2C ~*/
#include <LiquidCrystal_I2C.h> /*~ Librería LCD ~*/
LiquidCrystal_I2C lcd ( 0x27, 16, 2 ); /*~ Instancia de la clase para el manejo de la pantalla ( Dirección I2C, cantidad de columnas, cantidad de filas ) ~*/
const int pirPin = 2;
const int ledPin = 5;
void setup ( void ) {
lcd.init ( ); /*~ Inicializar la pantalla LCD ~*/
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop ( void ) {
int pirValue = digitalRead(pirPin);
lcd.backlight ( ); /*~ Encender la luz de fondo. ~*/
delay ( 1000 ); /*~ Esperar 1 segundo. ~*/
lcd.noBacklight ( ); /*~ Apagar la luz de fondo. ~*/
delay ( 1000 ); /*~ Esperar 1 segundo. ~*/
lcd.backlight ( ); /*~ Encender la luz de fondo. ~*/
lcd.setCursor ( 0, 0 ); /*~ ( columnas, filas) Ubicamos el cursor en la primera posición(columna:0) de la primera línea(fila:0) ~*/
lcd.print ( "ESIME ZACATENCO" ); /*~ Mostrar una cadena de texto (no exceder 16 caracteres por línea)~*/
delay ( 1000 ); /*~ Esperar 1 segundo ~*/
for ( uint8_t i = 0; i < ( 40 ); i++ ) { /*~ Este ciclo es para que se vea como se recorren los caracteres, si no es colocado se vería muy rápido ~*/
lcd.scrollDisplayRight ( ); /*~ Recorrer caracteres de derecha a izquierda ~*/
delay ( 100 ); /*~ Esperar 100 milisegundos ~*/
}
lcd.clear ( ); /*~ Limpiar pantalla ~*/
if (pirValue == HIGH) {
lcd.setCursor ( 0, 0 ); /*~ ( columnas, filas) Ubicamos el cursor en la primera posición(columna:0) de la primera línea(fila:0) ~*/
lcd.print ( "OBJETO DETECTADO" ); /*~ Mostrar una cadena de texto (no exceder 16 caracteres por línea)~*/
digitalWrite(ledPin, LOW);
delay(1000); // Mantiene el LED encendido durante 1 segundo
lcd.clear();
} else {
digitalWrite(ledPin, HIGH); // Apaga el LED si no se detecta movimiento
}
}