// https://wokwi.com/projects/359825094253241345
// https://forum.arduino.cc/t/water-pumps-ignoring-the-code/1104783

// Define los pines a los que estan conectados los componentes
const int bomba1 = 10;
const int bomba2 = 7;
const int boton1 = 2;
const int boton2 = 3;
const int boton3 = 4;
const int boton4 = 5;
const int led1 = 6;
const int led2 = 9;
const int buzzer = 11;

# define PRESSED  LOW   // HIGH for pulled down switches! 

void setup() {
  // Configura los pines como entradas o salidas
  pinMode(bomba1, OUTPUT);
  pinMode(bomba2, OUTPUT);

  pinMode(boton1, INPUT_PULLUP);
  pinMode(boton2, INPUT_PULLUP);
  pinMode(boton3, INPUT_PULLUP);
  pinMode(boton4, INPUT_PULLUP);

  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(buzzer, OUTPUT);
}

void loop() {
  // Comprueba si se ha pulsado algun boton
  delay(100);
  if (digitalRead(boton1) == PRESSED) {
    // Enciende la bomba 1 durante 5 segundos
    digitalWrite(bomba1, HIGH);
    delay(1000); // Modifica el tiempo aqui, en milisegundos
    digitalWrite(bomba1, LOW);

    // Enciende la bomba 2 durante 5 segundos
    digitalWrite(bomba2, HIGH);
    delay(1000); // Modifica el tiempo aqui, en milisegundos
    digitalWrite(bomba2, LOW);

    // Parpadea los leds durante 5 segundos
    for (int i = 0; i < 10; i++) {
      digitalWrite(led1, HIGH);
      digitalWrite(led2, LOW);
      delay(250);
      digitalWrite(led1, LOW);
      digitalWrite(led2, HIGH);
      delay(250);
    }

    // Activa el buzzer durante 3 segundos
    for (int i = 0; i < 6; i++) {
      digitalWrite(buzzer, HIGH);
      delay(250);
      digitalWrite(buzzer, LOW);
      delay(250);
    }
  } else if (digitalRead(boton2) == PRESSED) {
    // Enciende la bomba 2 durante 5 segundos
    digitalWrite(bomba2, HIGH);
    delay(1000); // Modifica el tiempo aqui, en milisegundos
    digitalWrite(bomba2, LOW);

    // Enciende la bomba 1 durante 5 segundos
    digitalWrite(bomba1, HIGH);
    delay(1000); // Modifica el tiempo aqui, en milisegundos
    digitalWrite(bomba1, LOW);

    // Parpadea los leds durante 5 segundos
    for (int i = 0; i < 10; i++) {
      digitalWrite(led1, HIGH);
      digitalWrite(led2, LOW);
      delay(250);
      digitalWrite(led1, LOW);
      digitalWrite(led2, HIGH);
      delay(250);
    }

    // Activa el buzzer durante 3 segundos
    for (int i = 0; i < 6; i++) {
      digitalWrite(buzzer, HIGH);
      delay(250);
      digitalWrite(buzzer, LOW);
      delay(250);
    }
    } else if (digitalRead(boton3) == PRESSED) {
    // Enciende la bomba 1 durante 5 segundos
    digitalWrite(bomba1, HIGH);
    delay(5000); // Modifica el tiempo aquí, en milisegundos
    digitalWrite(bomba1, LOW);

    // Enciende el led 1 durante 5 segundos
    digitalWrite(led1, HIGH);
    delay(5000); // Modifica el tiempo aquí, en milisegundos
    digitalWrite(led1, LOW);

    // Activa el buzzer durante 3 segundos
    for (int i = 0; i < 6; i++) {
      digitalWrite(buzzer, HIGH);
      delay(250);
      digitalWrite(buzzer, LOW);
      delay(250);
    }
  } else if (digitalRead(boton4) == PRESSED) {
    // Enciende la bomba 2 durante 5 segundos
    digitalWrite(bomba2, HIGH);
    delay(5000); // Modifica el tiempo aquí, en milisegundos
    digitalWrite(bomba2, LOW);

    // Enciende el led 2 durante 5 segundos
    digitalWrite(led2, HIGH);
    delay(5000); // Modifica el tiempo aquí, en milisegundos
    digitalWrite(led2, LOW);

    // Activa el buzzer durante 3 segundos
    for (int i = 0; i < 6; i++) {
      digitalWrite(buzzer, HIGH);
      delay(250);
      digitalWrite(buzzer, LOW);
      delay(250);
    }
  }
}