#include <Arduino.h>

const int relayPin = 11;  // Pino do  relé
const int relayPin2 = 12;  // Pino do relé
const int buttonPin = 2;  // Pino do botão
const int buttonPin2 = 3;  // Pino do botão
const int ligar = 4;  // Pino do botão
const int sensorMagneticPin = 8; // Pino do sensor magnético
const int sensorMagneticPin2 = 9; // Pino do sensor magnético
bool ledOn = false;            // Estado do LED
bool waitingForSensor = false; // Estado de espera pelo sensor

void setup() {
  pinMode(relayPin, OUTPUT);
  digitalWrite(relayPin, 1); // Certifique-se de que o relé comece desligado
   pinMode(relayPin2, OUTPUT);
  digitalWrite(relayPin2, 1); // Certifique-se de que o relé comece desligado
  pinMode(buttonPin, INPUT_PULLUP); // Botão com resistor de pull-up interno
  pinMode(buttonPin2, INPUT_PULLUP); // Botão com resistor de pull-up interno
  pinMode(ligar, INPUT_PULLUP); // Botão com resistor de pull-up interno
  pinMode(sensorMagneticPin, INPUT_PULLUP); // Sensor magnético com resistor de pull-up interno
  pinMode(sensorMagneticPin2, INPUT_PULLUP); // Sensor magnético com resistor de pull-up interno
  Serial.begin(9600);
}

void loop() {
  // Verifica se o botão foi pressionado
  if (digitalRead(buttonPin) == LOW) {
    delay(50); // Debounce
    while (digitalRead(buttonPin) == LOW) {
      digitalWrite(relayPin, 0); // Liga o relé
      Serial.println("Direita");
    }
    digitalWrite(relayPin, 1); // Desliga o relé
  }

  if (digitalRead(buttonPin2) == LOW) {
    delay(50); // Debounce
    while (digitalRead(buttonPin2) == LOW) {
      digitalWrite(relayPin2, 0); // Liga o relé
      Serial.println("Esquerda");
    }
    digitalWrite(relayPin2, 1); // Desliga o relé
  }

     // Verifica se o botão foi pressionado para ligar o LED
  if (digitalRead(ligar) == LOW && !ledOn && !waitingForSensor) {
    delay(50); // Debounce
    turnOnLED();
    waitingForSensor = true;
  }

  // Verifica o sensor magnético para desligar o LED
  if (digitalRead(sensorMagneticPin) == LOW && ledOn && waitingForSensor) {
    delay(50); // Debounce
    turnOffLED();
    waitingForSensor = false;
  }
   if (digitalRead(sensorMagneticPin2) == LOW) {
    delay(50); // Debounce
    if (digitalRead(sensorMagneticPin2) == LOW) {
      digitalWrite(relayPin, 1); // Liga o LED
  digitalWrite(relayPin2, 1); // Liga o LED
  Serial.println("Desligado");  }
}
}


void turnOnLED() {
  digitalWrite(relayPin, HIGH); // Liga o LED
  digitalWrite(relayPin2, 0); // Liga o LED
  Serial.println(">>>>>>>");
  ledOn = true;
}

void turnOffLED() {
  digitalWrite(relayPin, LOW); // Desliga o LED
  digitalWrite(relayPin2, 1); // Desliga o LED  
  Serial.println("<<<<<<<");  
ledOn = false;
}