#include <Stepper.h>
const int buttonStart = 2;
const int buttonSP = 4;
const int buttonSL = 0;
const int ledV1 = 32;
const int ledV2 = 33;
const int ledC = 5;
const int buttonCollect = 21;
const int motor = 15;
const int stepsPerRevolution = 1000;
Stepper myStepper(stepsPerRevolution, 23, 15);
void setup() {
pinMode(buttonStart, INPUT_PULLUP);
pinMode(buttonSP, INPUT_PULLUP);
pinMode(buttonSL, INPUT_PULLUP);
pinMode(ledV1, OUTPUT);
pinMode(ledV2, OUTPUT);
pinMode(ledC, OUTPUT);
pinMode(buttonCollect, INPUT_PULLUP);
// Inicialización del motor paso a paso
myStepper.setSpeed(100); // Velocidad positiva para girar en sentido horario
}
void loop() {
if (digitalRead(buttonStart) == HIGH) {
startProcess();
digitalWrite(motor, HIGH);
}
if (digitalRead(buttonCollect) == HIGH) {
resetSystem();
}
}
void startProcess() {
if (digitalRead(buttonSP) == HIGH) {
digitalWrite(ledV1, HIGH); // Enciende la válvula V1
digitalWrite(motor, LOW);
}
// Espera a que el sensor SL (botón en este caso) detecte que el depósito está lleno
if (digitalRead(buttonSL) == HIGH) {
digitalWrite(ledV1, LOW); // Apaga la válvula V1
digitalWrite(ledV2, HIGH); // Enciende la válvula V2
// Espera 10 segundos
delay(10000);
}
digitalWrite(ledV2, LOW); // Apaga la válvula V2
digitalWrite(ledC, HIGH); // Acciona el cilindro C (simulado con un LED)
// Espera a que el usuario recoja la bebida (botón en este caso)
while (digitalRead(buttonCollect) == LOW) {
delay(100);
}
digitalWrite(ledC, LOW); // Apaga el cilindro C
delay(2000); // Espera 2 segundos para garantizar que el vaso se retire completamente
}
void resetSystem() {
// Lógica para regresar el sistema a su estado inicial
digitalWrite(ledV1, LOW);
digitalWrite(ledV2, LOW);
digitalWrite(ledC, LOW);
myStepper.setSpeed(0); // Detiene el motor
}