//Tarea de yeray moreno gil
// Definición de pines
int pinBoton = 4; // Pin digital conectado al pulsador
int pinRelay = 8; // Pin digital conectado al relé
int pinLDR = A0; // Pin analógico conectado al LDR
//Definición de valores
int valorLDR = 0; // Variable para almacenar la lectura del LDR
bool estadoRelay = false; // Estado actual del relé (ENCENDIDO/APAGADO)
bool estadoBoton = true; // Estado actual del botón
bool ultimoEstadoBoton = false; // Estado previo del botón
int umbralEncendido = 850; // Umbral del LDR para encender el relé (Arduino)
int umbralApagado = 600; // Umbral del LDR para apagar el relé (Arduino)
bool pulsacion = false; // Indica si el relé ha sido encendido por el LDR
void setup() {
pinMode(pinRelay, OUTPUT); // Definir el pin del relé como salida
pinMode(pinBoton, INPUT_PULLUP);// Definir el pin del botón como entrada con resistencia pull-up
digitalWrite(pinRelay, LOW); // Asegurarse que el relé está apagado inicialmente
Serial.begin(9600); // Configuracion Puerto Serial
}
void loop() {
valorLDR = analogRead(pinLDR); // Leer el valor del sensor LDR
Serial.println(valorLDR); //Muestro el estado del sensor para hacer pruebas
estadoBoton = !digitalRead(pinBoton); // Leer el estado del botón (inverso porque está en pull-up)
// Comprobar si se ha presionado el botón y alternar el estado del relé
if (estadoBoton && !ultimoEstadoBoton) {
estadoRelay = !estadoRelay;
Serial.println(estadoRelay);
//Cambio el estado del relé y si se apago con pulsasión cambio dicha variable
if (estadoRelay) {
digitalWrite(pinRelay, HIGH);
} else {
digitalWrite(pinRelay, LOW);
pulsacion = true;
}
}
// Encender relé según el valor del LDR solo si no fue apagado por pulsasión de botón
if (!estadoRelay && valorLDR >= umbralEncendido && !pulsacion) {
estadoRelay = true;
digitalWrite(pinRelay, HIGH);
} else if (valorLDR <= umbralApagado) { // Apagar relé y resetear el valor de la pulsasión
estadoRelay = false;
digitalWrite(pinRelay, LOW);
pulsacion = false;
}
delay(50);
}