Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

#include <Arduino.

h>

const int espumaPin = 4;


const int aguaPin = 5;
const int shampooPin = 6;
const int pausaPin = 9;
const int espumaRelayPin = 11;
const int aguaRelayPin = 12;
const int shampooRelayPin = 10;

bool relayActivated = false;


bool relayPaused = false;
unsigned long relayActivationTime = 0;
unsigned long relayDuration = 3 * 60 * 1000; // 3 minutes
unsigned long totalPauseTime = 0;
unsigned long pauseStartTime = 0;
String activeProduct = "";

void setup() {
Serial.begin(9600);
delay(3000);
pinMode(espumaPin, INPUT_PULLUP);
pinMode(aguaPin, INPUT_PULLUP);
pinMode(shampooPin, INPUT_PULLUP);
pinMode(pausaPin, INPUT_PULLUP);
pinMode(espumaRelayPin, OUTPUT);
pinMode(aguaRelayPin, OUTPUT);
pinMode(shampooRelayPin, OUTPUT);
digitalWrite(espumaRelayPin, LOW);
digitalWrite(aguaRelayPin, LOW);
digitalWrite(shampooRelayPin, LOW);
}

void loop() {
checkButton(espumaPin, "Espuma", espumaRelayPin);
checkButton(aguaPin, "Agua", aguaRelayPin);
checkButton(shampooPin, "Shampoo", shampooRelayPin);
checkButton(pausaPin, "", 0);

printTimeLeft();
}

void checkButton(int buttonPin, String productName, int relayPin) {


if (digitalRead(buttonPin) == LOW) {
if (productName == "") {
if (relayPaused) {
resumeRelay();
} else {
pauseRelay();
}
} else {
if (!relayActivated || (millis() - relayActivationTime - totalPauseTime) >=
relayDuration) {
relayActivated = true;
relayPaused = false;
totalPauseTime = 0;
relayActivationTime = millis();
activeProduct = productName;
digitalWrite(espumaRelayPin, LOW);
digitalWrite(aguaRelayPin, LOW);
digitalWrite(shampooRelayPin, LOW);
digitalWrite(relayPin, HIGH);
Serial.println("Producto activado: " + productName);
}
}
delay(500); // Debounce delay
}
}

void pauseRelay() {
if (relayActivated && !relayPaused) {
digitalWrite(espumaRelayPin, LOW);
digitalWrite(aguaRelayPin, LOW);
digitalWrite(shampooRelayPin, LOW);
relayPaused = true;
pauseStartTime = millis();
Serial.println("Sistema en pausa");
}
}

void resumeRelay() {
if (relayActivated && relayPaused) {
digitalWrite(espumaRelayPin, activeProduct == "Espuma" ? HIGH : LOW);
digitalWrite(aguaRelayPin, activeProduct == "Agua" ? HIGH : LOW);
digitalWrite(shampooRelayPin, activeProduct == "Shampoo" ? HIGH : LOW);
relayPaused = false;
totalPauseTime += millis() - pauseStartTime;
Serial.println("Sistema reanudado");
}
}

void printTimeLeft() {
if (relayActivated && !relayPaused) {
unsigned long elapsedTime = millis() - relayActivationTime - totalPauseTime;
int timeLeftInSeconds = (relayDuration - elapsedTime) / 1000;
int minutesLeft = timeLeftInSeconds / 60;
int secondsLeft = timeLeftInSeconds % 60;

Serial.print("Tiempo restante: ");


Serial.print(minutesLeft);
Serial.print(" minuto(s) y ");
Serial.print(secondsLeft);
Serial.println(" segundo(s)");
}
}

You might also like