#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Dirección I2C y tamaño de la pantalla LCD
LiquidCrystal_I2C lcd(0x27, 20, 4); // Ajusta la dirección y el tamaño según tu configuración
const int potPin = 34; // Pin del potenciómetro
const int pirPin = 32; // Pin del sensor PIR
const int ldrPin = 35; // Pin del sensor LDR
const int ledPin = 33; // Pin del LED
void setup() {
// Inicializa la pantalla LCD con el número de columnas y filas
lcd.init(); // Ajusta según las dimensiones de tu pantalla LCD
lcd.backlight();
// Inicializa el monitor serial
Serial.begin(115200); // Ajusta la velocidad de baudios si es necesario
// Configuración de los pines
pinMode(potPin, INPUT);
pinMode(pirPin, INPUT);
pinMode(ldrPin, INPUT);
pinMode(ledPin, OUTPUT);
// Mensaje inicial en la pantalla y monitor serial
lcd.setCursor(0, 0);
lcd.print("Iniciando...");
Serial.println("Iniciando...");
}
void loop() {
// Leer el valor del potenciómetro
int potValue = analogRead(potPin);
// Leer el estado del sensor PIR
int pirState = digitalRead(pirPin);
// Leer el valor del LDR
int ldrValue = analogRead(ldrPin);
// Convertir el valor del LDR a unidades de LUX (aproximadamente)
float ldrLux = map(ldrValue, 0, 4095, 0, 1000); // Ajustar el rango según tus necesidades
// Controlar el LED basado en el potenciómetro
if (potValue > 1500 || pirState == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
// Actualizar la pantalla LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("POT: ");
lcd.print(potValue);
lcd.setCursor(0, 1);
lcd.print("PIR: ");
lcd.print(pirState == HIGH ? "NOVEDADES!!" : "S/N");
lcd.setCursor(0, 2);
lcd.print("FOT: ");
lcd.print(ldrLux);
lcd.print(" LUX");
// Mostrar valores en el monitor serial
Serial.print("POT: ");
Serial.print(potValue);
Serial.print(" | PIR: ");
Serial.print(pirState == HIGH ? "NOVEDADES!!" : "S/N");
Serial.print(" | FOT: ");
Serial.print(ldrLux);
Serial.println(" LUX");
delay(500); // Ajustar el tiempo de actualización según sea necesario
}