#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Configuración de la pantalla LCD (dirección I2C 0x27 para LCD 20x4)
LiquidCrystal_I2C lcd(0x27, 20, 4);
// Pines de los sensores y dispositivos
const int pirPin = 23; // Pin del sensor PIR
const int ledPin = 25; // Pin del LED
const int potPin = 34; // Pin del potenciómetro
const int ldrPin = 35; // Pin de la fotorresistencia
const int threshold = 1500; // Umbral para encender el LED
void setup() {
// Inicializa la pantalla LCD
lcd.init();
lcd.backlight();
// Configura los pines
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
// Mensaje inicial en la pantalla LCD
lcd.setCursor(0, 0);
lcd.print("Iniciando");
delay(2000);
}
void loop() {
// Lee el valor del sensor PIR
int pirValue = digitalRead(pirPin);
// Lee el valor del potenciómetro
int potValue = analogRead(potPin);
if (potValue > threshold) {
digitalWrite(ledPin, HIGH); // Enciende el LED
} else {
digitalWrite(ledPin, LOW); // Apaga el LED
}
// Lee el valor de la fotorresistencia
int ldrValue = analogRead(ldrPin);
// Convertir el valor del LDR a lux (aproximación simple)
// Este cálculo es muy aproximado y depende de la resistencia de la LDR y la resistencia de pull-down.
float ldrLux = map(ldrValue, 0, 4095, 0, 1000); // Ajusta el rango según sea necesario
// Verifica si el sensor PIR detecta movimiento
if (pirValue == HIGH) {
digitalWrite(ledPin, HIGH); // Enciende el LED
lcd.setCursor(0, 0);
lcd.print("PIR: NOVEDADES!!");
} else {
digitalWrite(ledPin, LOW); // Apaga el LED
lcd.setCursor(0, 0);
lcd.print("PIR: S/N ");
}
// Muestra el valor del potenciómetro y del LDR en la pantalla LCD
lcd.setCursor(0, 1);
lcd.print("Pot: ");
lcd.print(potValue);
lcd.setCursor(0, 2);
lcd.print("LDR: ");
lcd.print(ldrLux);
delay(500); // Pausa antes de la siguiente lectura
}