//enzo pereyra/persianas automaticas
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
//incluimos las librerias
LiquidCrystal_I2C lcd(0x27, 16, 2);// Inicia el lcd con la dirección I2C
// y el tamaño del LCD
Servo servo1;// Crea un objeto llamado servo1
Servo servo2;// Crea un objeto llamado servo2
const int ldrPin = A0;//Asigna el Pin analógico para el sensor LDR
const int ultrasonicoTriggerPin = 9;//Asigna el Pin9 para el trigger del sensor ultrasónico
const int ultrasonicoEchoPin = 10;//Asigna el Pin10 para la lectura del eco del sensor ultrasónico
const int led1Pin = 7;// Pin para el LED 1
const int led2Pin = 8;// Pin para el LED 2
void setup() {
lcd.begin(16, 2);// Inicia el LCD con 16 columnas y 2 filas
lcd.backlight();// Enciende la retroiluminación del LCD
servo1.attach(3);// Asocia el servo1 al pin 3
servo2.attach(5);// Asocia el servo2 al pin 5
pinMode(ultrasonicoTriggerPin, OUTPUT);// Configura el pin de trigger del sensor ultrasónico como salida
pinMode(ultrasonicoEchoPin, INPUT);// Configura el pin de lectura del eco del sensor como entrada
pinMode(led1Pin, OUTPUT);// Configura el pin del LED 1 como salida
pinMode(led2Pin, OUTPUT);// Configura el pin del LED 2 como salida
}
void loop() {
int nivelLuz = analogRead(ldrPin);// Lee el valor analógico del sensor LDR
lcd.clear();// Borra el contenido del LCD
lcd.setCursor(0, 0);// Establece el cursor en la posición (0, 0)
lcd.print("Luz: ");
lcd.print(nivelLuz);// Muestra el nivel de luz en el LCD
digitalWrite(ultrasonicoTriggerPin, LOW);// Apaga el trigger del sensor ultrasónico
delayMicroseconds(2);//Espera dos microsegundos
digitalWrite(ultrasonicoTriggerPin, HIGH);// Enciende el trigger del sensor ultrasónico
delayMicroseconds(10);//Espera diez microsegundos
digitalWrite(ultrasonicoTriggerPin, LOW);
float distancia = pulseIn(ultrasonicoEchoPin, HIGH) * 0.034 / 2;//Mide la distancia con el sensor ultrasónico
if (distancia < 20) {//si la distancia es menor a 20 cm
lcd.setCursor(0, 1);
lcd.print("Persianas Abiertas ");//Muestra en el LCD que las persianas están abiertas
digitalWrite(led1Pin, HIGH);//Enciende el LED 1
digitalWrite(led2Pin, LOW);//Apaga el LED 2
servo1.write(0);// Mueve el servo1 a la posición 0 grados
servo2.write(180);// Mueve el servo2 a la posición 180 grados
} else {
lcd.setCursor(0, 1);
lcd.print("Persianas Cerradas");//Muestra en el LCD que las persianas están cerradas
digitalWrite(led1Pin, LOW);//Apaga el LED 1
digitalWrite(led2Pin, HIGH);//Enciende el LED 2
servo1.write(90);//Mueve el servo1 a la posición 90 grados
servo2.write(90);//Mueve el servo2 a la posición 90 grados
}
delay(1000);//Espera 1 segundo
}