// Definir pines
const int potPin = A0; // Potenciómetro conectado al pin A0
const int buttonPin = 2; // Botón conectado al pin digital 2
const int ledPin = 13; // LED conectado al pin digital 13
const int relayPin = 12; // Relé conectado al pin digital 12
// Variables
int potValue = 0; // Variable para almacenar el valor del potenciómetro
int buttonState = 0; // Estado actual del botón
int lastButtonState = 0; // Último estado conocido del botón
bool ledState = false; // Estado del LED (encendido o apagado)
bool relayState = false; // Estado del relé (activado o desactivado)
void setup() {
pinMode(ledPin, OUTPUT); // Configurar el pin del LED como salida
pinMode(relayPin, OUTPUT); // Configurar el pin del relé como salida
pinMode(buttonPin, INPUT); // Configurar el pin del botón como entrada
// Inicializar el estado de los salidas
digitalWrite(ledPin, LOW);
digitalWrite(relayPin, LOW);
Serial.begin(9600); // Iniciar comunicación serial para depuración
}
void loop() {
// Leer el valor del potenciómetro (0-1023)
potValue = analogRead(potPin);
// Leer el estado actual del botón
buttonState = digitalRead(buttonPin);
// Imprimir el valor del potenciómetro en el puerto serial (opcional)
Serial.print("Valor del potenciómetro: ");
Serial.println(potValue);
// Verificar si el valor del potenciómetro es menor a 250
if (potValue < 250) {
// Verificar si el botón ha cambiado de estado (de LOW a HIGH)
if (buttonState == HIGH && lastButtonState == LOW) {
// Cambiar el estado del LED y del relé
if (!ledState) {
// Encender LED y apagar relé
digitalWrite(ledPin, HIGH);
digitalWrite(relayPin, LOW);
ledState = true;
relayState = false;
} else {
// Apagar LED y encender relé
digitalWrite(ledPin, LOW);
digitalWrite(relayPin, HIGH);
ledState = false;
relayState = true;
}
delay(200); // Debounce del botón (evita lecturas múltiples)
}
} else {
// Si el valor del potenciómetro no es menor a 250, aseguramos que el LED y el relé estén apagados
digitalWrite(ledPin, LOW);
digitalWrite(relayPin, LOW);
ledState = false;
relayState = false;
}
// Guardar el último estado del botón
lastButtonState = buttonState;
}