#include <Wire.h> // needed for LCD with PCF8574 port expander
#include <LiquidCrystal_I2C.h>
#include <Stepper.h>
#include <OneWire.h>
// POTENCIOMENTROS IZQUIERDA TIENEN QUE COMENZZAR ABAJO YA QUE SIMULAND EL NIVEL DE LA CUBA
//POTENCIOMENTRO DE LA DERECHA TIENE QUE COMENZAR ALTO YA QUE ES LA DESCARGA
//botn azul arriba, boton negro abajo, boton verde select
// para comenzar aprete PLAAAAy
const int stepsPerRevolution = 1400; // Define el número de pasos por revolución del motor
const long durationC = 195000; // Define la duración del programa en milisegundos (3 minutos 15 segund
const long durationB = 200000; //3 minutos y moneditas
const long durationF = 300000; //5 minutos
const long durationW = 30000; //30 segundos
const long dprueva = 6000;
const int sensor_pin = A10; // Pin del sensor analógico
const long durationOption = 0;
const long durationOption2 = 0;
const long durationOption3 = 0;
const int threshold = 500; // Umbral para apagar la bomba de agua
const float TEMPERATURE_ON = 37.8; // Temperatura a partir de la cual se encenderá el relay
const float TEMPERATURE_OFF = 38; // Temperatura a partir de la cual se apagará el relay
int SENSOR; // variable almacena valor leido de entrada analogica A8
float temperature;
int pulsador = digitalRead(5);
const byte thermoDO = 6;
const byte thermoCS = 5;
const byte thermoCLK = 4;
constexpr byte cols = 20; // columns/characters per row
constexpr byte rows = 4; // how many rows
constexpr byte addr = 0x27; // set the LCD address to 0x3F or 0x27
LiquidCrystal_I2C lcd(addr, cols, rows); // create lcd object - with support of special characters
Stepper myStepper(stepsPerRevolution, 12, 13);
// this example uses buttons to navigate through the menu
constexpr byte upButton = A0;
constexpr byte downButton = A1;
constexpr byte backButton = A2;
constexpr byte selectButton = A3;
constexpr byte encoderButton = 4;
constexpr byte start = 2;
// prototype
void action0(byte, byte, byte, int);
void action1(byte, byte, byte, int);
void action2(byte, byte, byte, int);
void action3(byte, byte, byte, int);
void action4(byte, byte, byte, int);
void action5(byte, byte, byte, int);
void action6(byte, byte, byte, int);
void action7(byte, byte, byte, int);
void action8(byte, byte, byte, int);
void action9(byte, byte, byte, int);
void action10(byte, byte, byte, int);
void action11(byte, byte, byte, int);
void action12(byte, byte, byte, int);
void action13(byte, byte, byte, int);
void action14(byte, byte, byte, int);
void action15(byte, byte, byte, int);
void action16(byte, byte, byte, int);
void action17(byte, byte, byte, int);
void action18(byte, byte, byte, int);
void action19(byte, byte, byte, int);
void action20(byte, byte, byte, int);
void action21(byte, byte, byte, int);
void back(byte, byte, byte, int);
#include "menu.h"
//each menu line needs an prompter (text to be displayed) and a function will should be called
//const char theString[] PROGMEM ="Option F"; // https://forum.arduino.cc/t/progmem-and-class-constructor/346118/3
MenuLine menu0line0("C41 580ML", action0);
MenuLine menu0line1("C41 240ML", action8);
MenuLine menu0line2("C41 PUSH ", action1);
MenuLine menu0line3("REV BYN", action2);
MenuLine menuLineOnOff0("240ML PUSH", action4);
MenuLine menuLineOnOff1("580ML PUSH ", action10);
MenuLine menuLineOnOffBack("(ATRAS)", back);
MenuLine menuLineRGB0("240 ml", action20);
MenuLine menuLineRGB1("580 ml", action21);
MenuLine menuLineRGBBack("(ATRAS)", back);
MenuLine menuLineSpeed0("NUEVO", action18);
MenuLine menuLineSpeed1("MEDIO", action19);
MenuLine menuLineSpeed2("AGOTADO", back);
MenuLine menuLineBack("(return)", back);
MenuLine menuLineNothing("nothing");
// menu screens are collection of several lines:
MenuScreen menuScreenMain(&menu0line0, &menu0line1, &menu0line2, &menu0line3);
MenuScreen menuScreenOnOff(&menuLineOnOff0, &menuLineOnOff1, &menuLineBack);
MenuScreen menuScreenRGB(&menuLineRGB0, &menuLineRGB1, &menuLineBack);
MenuScreen menuScreenSpeed(&menuLineSpeed0, &menuLineSpeed1, &menuLineSpeed2, &menuLineNothing, &menuLineBack);
// example of screen with exit/back/return
// menu system is the collection of several menu screens:
MenuSystem<LiquidCrystal_I2C> menuSystem(lcd, rows, &menuScreenMain, &menuScreenOnOff, &menuScreenRGB, &menuScreenSpeed);
// besser wäre etwas ala "ID" und "option"
void action0(byte screen, byte id, byte line, int value) // NO TOCAR
{
Serial.println(F("action0"));
(void)screen; // if you don't use the screen, avoid warning for unused varialbe
(void)id;
(void)line;
(void)value;
lcd.clear();
lcd.print("-PROGRAMA C41 580ML");
////// C41 /////
delay(1500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("INGRESANDO C41 ");
delay(2000);
//ingresa. agua al tanque interno que calentara el quimico
for(int i = 0; i <= 3;i++ ){
analogRead(A10);
if (analogRead(A10) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A10) > 100)
{
digitalWrite(23, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
digitalWrite(23, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
lcd.clear();
lcd.print("CALENTANDO");
lcd.setCursor(2,1);
lcd.print("QUIMICOS");
// esscribir codigo para calentar quimico
sensortemperatura(TEMPERATURE_ON, TEMPERATURE_OFF);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("ingresando C41");
lcd.println("al tanque");
bombafill();
//codigo motor agregar const duration y numero para que gire el motor durante distintos tiempos
giromotor(durationC);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("vaciando TANQUE");
lcd.println(" ");
digitalWrite(41, HIGH);
delay(4000);
digitalWrite(41, LOW);
lcd.clear();
lcd.print("C41 ");
lcd.println(" 1/3");
////// c41 /////
delay(1000);
activarlimpieza(durationW);
////// bleach /////
delay(1500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("INGRESADO BLEACH ");
delay(2000);
//ingresa. agua al tanque interno que calentara el quimico
for(int i = 0; i <= 3;i++ ){
analogRead(A10);
if (analogRead(A10) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A10) > 100)
{
digitalWrite(25, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
digitalWrite(25, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
lcd.clear();
lcd.print("CALENTANDO");
lcd.setCursor(2,1);
lcd.print("BLEACH");
// esscribir codigo para calentar quimico
sensortemperatura(TEMPERATURE_ON, TEMPERATURE_OFF);
lcd.clear();
lcd.setCursor(2,1);
lcd.print("ingresando BLEACH");
lcd.setCursor(3,1);
lcd.println("al tanque");
bombafill();
//codigo motor agregar const duration y numero para que gire el motor durante distintos tiempos
giromotor(dprueva);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("vaciando TANQUE");
lcd.println(" ");
digitalWrite(43, HIGH);
delay(4000);
digitalWrite(43, LOW);
lcd.clear();
lcd.print("BLEACH ");
lcd.println(" 2/3");
////// BLEACH /////
activarlimpieza(durationW);
////// FIJADOR /////
delay(1500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("INGRESADO FIX");
delay(2000);
//ingresa. agua al tanque interno que calentara el quimico
for(int i = 0; i <= 3;i++ ){
analogRead(A10);
if (analogRead(A10) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A10) > 100)
{
digitalWrite(27, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
digitalWrite(27, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
lcd.clear();
lcd.print("CALENTANDO");
lcd.setCursor(2,1);
lcd.print("FIX");
// esscribir codigo para calentar quimico
sensortemperatura(TEMPERATURE_ON, TEMPERATURE_OFF);
lcd.clear();
lcd.setCursor(2,1);
lcd.print("ingresando FIX");
lcd.setCursor(3,1);
lcd.println("al tanque");
bombafill();
delay (2000);
//codigo motor agregar const duration y numero para que gire el motor durante distintos tiempos
giromotor(durationF);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("vaciando TANQUE");
lcd.println(" ");
digitalWrite(45, HIGH);
delay(4000);
digitalWrite(45, LOW);
lcd.clear();
lcd.print("FIX ");
lcd.println(" 3/3");
////// FIJADOR /////
activarlimpieza(durationW);
delay(4000);
lcd.clear();
lcd.print("PROCESO C41 ");
lcd.println(" FIN");
delay(4000);
menuSystem.screen = 0;
menuSystem.show();
}
//switch to menuScreen 1
void action1(byte screen, byte id, byte line, int value) // NO TOCAR
{
Serial.println(F("action1"));
(void)screen;
(void)id;
(void)line;
(void)value;
menuSystem.setId(menuSystem.getLine()); // preserve former line into id
menuSystem.setScreen(1);
menuSystem.show();
}
//switch to menuScreen 2
void action2(byte screen, byte id, byte line, int value) // NO TOCAR
{
Serial.println(F("action2"));
(void)screen;
(void)id;
(void)line;
(void)value;
menuSystem.setId(menuSystem.getLine()); // preserve former screen into id
menuSystem.setScreen(2);
menuSystem.show();
}
void action3(byte screen, byte id, byte line, int value) // NO TOCAR
{
Serial.println(F("action3"));
(void)screen;
(void)id;
(void)line;
(void)value;
menuSystem.setId(menuSystem.getLine());// preserve former screen into id
menuSystem.setScreen(3);
menuSystem.show();
}
void action4(byte screen, byte id, byte line, int value) // NO TOCAR
{
Serial.println(F("action4"));
(void)screen;
(void)id;
(void)line;
(void)value;
lcd.clear();
lcd.print(F("-Exec 240ml c41 push "));
delay(1500);
tiempoOpcional3(durationOption3);
menuSystem.setLine(4);
menuSystem.setScreen(0);
menuSystem.show();
}
void action5(byte screen, byte id, byte line, int value) // NO PROGRAM
{
Serial.print(F("Action5 "));
Serial.print(F(" screen=")); Serial.print(screen);
Serial.print(F(" id=")); Serial.print(id);
Serial.print(F(" line=")); Serial.print(line);
Serial.print(F(" value=")); Serial.println(value);
lcd.clear();
lcd.print(F("NO PROGRAMMSSS"));
delay(2000);
menuSystem.setLine(5);
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action6(byte screen, byte id, byte line, int value) // NO PROGRAM
{
Serial.print(F("Action6 "));
Serial.print(F(" screen=")); Serial.print(screen);
Serial.print(F(" id=")); Serial.print(id);
Serial.print(F(" line=")); Serial.print(line);
Serial.print(F(" value=")); Serial.println(value);
menuSystem.setLine(6);
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action7(byte screen, byte id, byte line, int value) // NO PROGRAM
{
Serial.println(F("action7"));
(void)screen;
(void)id;
(void)line;
(void)value;
lcd.clear();
lcd.print("-Executing #7");
delay(1500);
menuSystem.setLine(7);
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action8(byte screen, byte id, byte line, int value) // REVELADO NORMAL 240 NO TOCAR
{
Serial.println(F("action8"));
(void)screen;
(void)id;
(void)line;
(void)value;
lcd.clear();
lcd.print(F("EJECUTANDO C41 240ML"));
delay(1500);
////// C41 /////
delay(1500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("INGRESANDO C41 240 ");
delay(2000);
//ingresa. agua al tanque interno que calentara el quimico
for(int i = 0; i <= 2;i++ ){
analogRead(A11);
if (analogRead(A11) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(100);
}
else if (analogRead(A11) > 100)
{
digitalWrite(23, HIGH);
digitalWrite(33, HIGH);
delay(500);
i=i-1;
}
}
digitalWrite(23, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
lcd.clear();
lcd.print("CALENTANDO");
lcd.setCursor(2,1);
lcd.print("QUIMICOS");
// esscribir codigo para calentar quimico
sensortemperatura(TEMPERATURE_ON, TEMPERATURE_OFF);
lcd.clear();
lcd.setCursor(2,1);
lcd.print("ingresando c41");
lcd.setCursor(3,1);
lcd.println("al tanque");
bombafill();
delay (2000);
//codigo motor agregar const duration y numero para que gire el motor durante distintos tiempos
lcd.print("vaciando TANQUE");
lcd.println(" ");
digitalWrite(41, HIGH);
delay(4000);
digitalWrite(41, LOW);
lcd.clear();
lcd.print("C41 ");
lcd.println(" 1/3");
////// c41 /////
delay(1000);
////// LImPIEZAAAAAAA /////
activarlimpieza(durationW);
////// LIMPIEZAAAAA //////////
////// bleach /////
delay(1500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("INGRESADO BLEACH ");
delay(2000);
//ingresa. agua al tanque interno que calentara el quimico
for(int i = 0; i <= 3;i++ ){
analogRead(A11);
if (analogRead(A11) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A11) > 100)
{
digitalWrite(25, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
digitalWrite(25, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
lcd.clear();
lcd.print("CALENTANDO");
lcd.setCursor(2,1);
lcd.print("BLEACH");
// esscribir codigo para calentar quimico
sensortemperatura(TEMPERATURE_ON, TEMPERATURE_OFF);
lcd.clear();
lcd.setCursor(2,1);
lcd.print("ingresando BLEACH");
lcd.setCursor(3,1);
lcd.println("al tanque");
bombafill();
delay (2000);
//codigo motor agregar const duration y numero para que gire el motor durante distintos tiempos
giromotor(durationB);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("vaciando TANQUE");
lcd.println(" ");
digitalWrite(43, HIGH);
delay(4000);
digitalWrite(43, LOW);
lcd.clear();
lcd.print("BLEACH ");
lcd.println(" 2/3");
////// BLEACH /////
////// LImPIEZAAAAAAA /////
activarlimpieza(durationW);
////// LIMPIEZAAAAA //////////
////// FIJADOR /////
delay(1500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("INGRESADO FIX");
delay(2000);
//ingresa. agua al tanque interno que calentara el quimico
for(int i = 0; i <= 3;i++ ){
analogRead(A11);
if (analogRead(A11) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A11) > 100)
{
digitalWrite(27, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
digitalWrite(27, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
lcd.clear();
lcd.print("CALENTANDO");
lcd.setCursor(2,1);
lcd.print("FIX");
// esscribir codigo para calentar quimico
sensortemperatura(TEMPERATURE_ON, TEMPERATURE_OFF);
lcd.clear();
lcd.setCursor(2,1);
lcd.print("ingresando BLEACH");
lcd.setCursor(3,1);
lcd.println("al tanque");
bombafill();
//codigo motor agregar const duration y numero para que gire el motor durante distintos tiempos
giromotor(durationF);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("vaciando TANQUE");
lcd.println(" ");
digitalWrite(45, HIGH);
delay(4000);
digitalWrite(45, LOW);
lcd.clear();
lcd.print("FIX ");
lcd.println(" 3/3");
////// FIJADOR /////
////// LImPIEZAAAAAAA /////
activarlimpieza240(durationW);
lcd.clear();
lcd.print("PROCESO C41 ");
lcd.println(" FIN");
delay(4000);
////// LIMPIEZAAAAA //////////
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action9(byte screen, byte id, byte line, int value) // NO PROGRAM
{
Serial.println(F("action9"));
(void)screen;
(void)id;
(void)line;
(void)value;
lcd.clear();
lcd.print(F("-Executing c41 570ml"));
delay(2500);
lcd.clear();
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action10(byte screen, byte id, byte line, int value) //PROGRAMA C41 FORZADO NO TOCAR
{
Serial.println(F("action10"));
(void)screen;
(void)id;
(void)line;
(void)value;
lcd.clear();
lcd.print(F("-Exe C41 580ml PUSH "));
delay(2500);
lcd.clear();
tiempoOpcional(durationOption);
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action11(byte screen, byte id, byte line, int value) ////// no program /
{
Serial.println(F("action11"));
(void)screen;
(void)id;
(void)line;
(void)value;
lcd.clear();
lcd.print(F("-ExeNADA"));
delay(2500);
lcd.clear();
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action12(byte screen, byte id, byte line, int value) ////// no program /
{
Serial.println(F("action12"));
(void)screen;
(void)id;
(void)line;
(void)value;
lcd.clear();
lcd.print(F(" nada"));
delay(2500);
lcd.clear();
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action13(byte screen, byte id, byte line, int value) ////// no program /
{
Serial.println(F("action13"));
(void)screen;
(void)id;
(void)line;
(void)value;
lcd.clear();
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action14(byte screen, byte id, byte line, int value) ////// no program /
{
Serial.println(F("action14"));
(void)screen;
(void)id;
(void)line;
(void)value;
lcd.clear();
lcd.print(F("- NO PROGRAMS"));
delay(2500);
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action15(byte screen, byte id, byte line, int value)////// no program /
{
Serial.println(F("action15"));
(void)screen;
(void)id;
(void)line;
(void)value;
lcd.clear();
lcd.print(F("-NO PROGRAMS"));
delay(2500);
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action16(byte screen, byte id, byte line, int value)//// NO TOCAR PROGRAMA 2 C41 PUSH PASO 2
{
Serial.println(F("action16"));
(void)screen;
(void)id;
(void)line;
(void)value;
lcd.clear();
lcd.print(F("-Executing c41 240 ml"));
delay(2500);
lcd.print("-Ejec c41 prog push");
delay(1500);
lcd.clear();
lcd.setCursor(3,1);
activarlimpieza240(durationW);
////// bleach /////
delay(1500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("INGRESADO BLEACH ");
delay(2000);
//ingresa. agua al tanque interno que calentara el quimico
for(int i = 0; i <= 3;i++ ){
analogRead(A11);
if (analogRead(A11) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A11) > 100)
{
digitalWrite(25, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
digitalWrite(25, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
lcd.clear();
lcd.print("CALENTANDO");
lcd.setCursor(2,1);
lcd.print("BLEACH");
// esscribir codigo para calentar quimico
sensortemperatura(TEMPERATURE_ON, TEMPERATURE_OFF);
lcd.clear();
lcd.setCursor(2,1);
lcd.print("ingresando BLEACH");
lcd.setCursor(3,1);
lcd.println("al tanque");
bombafill();
//codigo motor agregar const duration y numero para que gire el motor durante distintos tiempos
giromotor(durationB);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("vaciando TANQUE");
lcd.println(" ");
digitalWrite(43, HIGH);
delay(4000);
digitalWrite(43, LOW);
lcd.clear();
lcd.print("BLEACH ");
lcd.println(" 2/3");
////// BLEACH /////
activarlimpieza240(durationW);
////// FIJADOR /////
delay(1500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("INGRESADO FIX");
delay(2000);
//ingresa. agua al tanque interno que calentara el quimico
for(int i = 0; i <= 3;i++ ){
analogRead(A11);
if (analogRead(A11) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A11) > 100)
{
digitalWrite(27, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
digitalWrite(27, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
lcd.clear();
lcd.print("CALENTANDO");
lcd.setCursor(2,1);
lcd.print("FIX");
// esscribir codigo para calentar quimico
sensortemperatura(TEMPERATURE_ON, TEMPERATURE_OFF);
lcd.clear();
lcd.setCursor(2,1);
lcd.print("ingresando FIX");
lcd.setCursor(3,1);
lcd.println("al tanque");
bombafill();
delay (2000);
//codigo motor agregar const duration y numero para que gire el motor durante distintos tiempos
giromotor(durationF);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("vaciando TANQUE");
lcd.println(" ");
digitalWrite(45, HIGH);
delay(4000);
digitalWrite(45, LOW);
lcd.clear();
lcd.print("FIX ");
lcd.println(" 3/3");
////// FIJADOR /////
activarlimpieza240(durationW);
delay(4000);
lcd.clear();
lcd.print("PROCESO C41 ");
lcd.println(" FIN");
delay(4000);
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action17(byte screen, byte id, byte line, int value)////// no program //
{
Serial.println(F("action17"));
lcd.print(F("-FIX BYN"));
delay(2500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("INGRESANDO FIX");
delay(2000);
//ingresa. agua al tanque interno que calentara el quimico
for(int i = 0; i <= 3;i++ ){
analogRead(A10);
if (analogRead(A10) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A10) > 100)
{
digitalWrite(27, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
digitalWrite(27, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
lcd.clear();
lcd.setCursor(2,1);
lcd.print("ingresando BLEACH");
lcd.setCursor(3,1);
lcd.println("al tanque");
bombafill();
//codigo motor agregar const duration y numero para que gire el motor durante distintos tiempos
giromotor(durationF);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("vaciando TANQUE");
lcd.println(" ");
digitalWrite(45, HIGH);
delay(4000);
digitalWrite(45, LOW);
////// FIJADOR /////
////// LImPIEZAAAAAAA /////
activarlimpieza(durationW);
lcd.clear();
lcd.print("PROCESO BYN ");
lcd.setCursor(0,1);
lcd.println(" FINALIZADO");
delay(4000);
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action18(byte screen, byte id, byte line, int value) // C41 paso 2 580 NO T
{
Serial.println(F("action18"));
(void)screen;
(void)id;
(void)line;
(void)value;
lcd.clear();
lcd.print(F("-Executing C41 PASO 2"));
delay(2500);
lcd.print("-Ejecutando BLEACH");
delay(1500);
////// c41 /////
delay(1000);
activarlimpieza(durationW);
////// bleach /////
delay(1500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("INGRESADO BLEACH ");
delay(2000);
//ingresa. agua al tanque interno que calentara el quimico
for(int i = 0; i <= 3;i++ ){
analogRead(A10);
if (analogRead(A10) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A10) > 100)
{
digitalWrite(25, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
digitalWrite(25, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
lcd.clear();
lcd.print("CALENTANDO");
lcd.setCursor(2,1);
lcd.print("BLEACH");
// esscribir codigo para calentar quimico
sensortemperatura(TEMPERATURE_ON, TEMPERATURE_OFF);
lcd.clear();
lcd.setCursor(2,1);
lcd.print("ingresando BLEACH");
lcd.setCursor(3,1);
lcd.println("al tanque");
bombafill();
//codigo motor agregar const duration y numero para que gire el motor durante distintos tiempos
giromotor(durationB);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("vaciando TANQUE");
lcd.println(" ");
digitalWrite(43, HIGH);
delay(4000);
digitalWrite(43, LOW);
lcd.clear();
lcd.print("BLEACH ");
lcd.println(" 2/3");
////// BLEACH /////
activarlimpieza(durationW);
////// FIJADOR /////
delay(1500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("INGRESADO FIX");
delay(2000);
//ingresa. agua al tanque interno que calentara el quimico
for(int i = 0; i <= 3;i++ ){
analogRead(A10);
if (analogRead(A10) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A10) > 100)
{
digitalWrite(27, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
digitalWrite(27, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
lcd.clear();
lcd.print("CALENTANDO");
lcd.setCursor(2,1);
lcd.print("FIX");
// esscribir codigo para calentar quimico
sensortemperatura(TEMPERATURE_ON, TEMPERATURE_OFF);
lcd.clear();
lcd.setCursor(2,1);
lcd.print("ingresando FIX");
lcd.setCursor(3,1);
lcd.println("al tanque");
bombafill();
delay (2000);
//codigo motor agregar const duration y numero para que gire el motor durante distintos tiempos
giromotor(durationF);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("vaciando TANQUE");
lcd.println(" ");
digitalWrite(45, HIGH);
delay(4000);
digitalWrite(45, LOW);
lcd.clear();
lcd.print("FIX ");
lcd.println(" 3/3");
////// FIJADOR /////
activarlimpieza(durationW);
delay(4000);
lcd.clear();
lcd.print("PROCESO C41 ");
lcd.println(" FIN");
delay(4000);
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action19(byte screen, byte id, byte line, int value) //FIX 240 NO TOCAR
{
Serial.println(F("FIX BYN"));
(void)screen;
(void)id;
(void)line;
(void)value;
lcd.clear();
lcd.print(F("-FIX BYN"));
delay(2500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("INGRESANDO FIX");
delay(2000);
//ingresa. agua al tanque interno que calentara el quimico
for(int i = 0; i <= 3;i++ ){
analogRead(A11);
if (analogRead(A11) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A11) > 100)
{
digitalWrite(27, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
digitalWrite(27, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("FIXING ");
lcd.setCursor(1,0);
lcd.println("");
bombafill();
//codigo motor agregar const duration y numero para que gire el motor durante distintos tiempos
giromotor(durationF);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("OUT FIX");
lcd.println(" ");
digitalWrite(45, HIGH);
delay(4000);
digitalWrite(45, LOW);
////// FIJADOR /////
////// LImPIEZAAAAAAA /////
activarlimpieza240(durationW);
lcd.clear();
lcd.print("PROCESO BYN ");
lcd.setCursor(0,1);
lcd.println(" FINALIZADO");
delay(4000);
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action20(byte screen, byte id, byte line, int value) // REVELADO BYN 240 NO TOCAR
{
Serial.println(F("action20"));
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("REVELADO BYN");
delay(500);
lcd.setCursor(0, 1);
lcd.println("EXEC PROGRAM 240 ML");
delay(2000);
lcd.clear();
delay(1500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("BOMBA IN A RECP ");
delay(2000);
//ingresa. agua al tanque interno que calentara el quimico
for(int i = 0; i <= 3;i++ ){
analogRead(A11);
if (analogRead(A11) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A11) > 100)
{
digitalWrite(23, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
lcd.clear();
digitalWrite(23, LOW);
digitalWrite(33, LOW);
lcd.print("PUMP&VALV CLOSED");
Serial.print("salimos de aca 1");
tiempoOpcional(durationOption);
Serial.print("salimos de aca 2");
activarlimpieza240(durationW);
Serial.print("salimos de aca 3");
delay(1500);
action19(0,0,0,0);
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void action21(byte buttonState, byte buttonChanged, byte encoderState, int encoderChanged) //PROGRAMA BYN 580 NO TOCAR
{
// Muestra el título del menú en la primera fila del LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("REVELADO BYN");
delay(500);
lcd.setCursor(0, 1);
lcd.println("EXEC PROGRAM 580 ML");
delay(2000);
lcd.clear();
delay(1500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("BOMBA IN A RECP ");
delay(2000);
//ingresa. agua al tanque interno que calentara el quimico
for(int i = 0; i <= 3;i++ ){
analogRead(A10);
if (analogRead(A10) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A10) > 100)
{
digitalWrite(23, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
Serial.print("salimos de aca 1");
digitalWrite(23, LOW);
digitalWrite(33, LOW);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("VALV CLOSED ");
delay(500);
tiempoOpcional(durationOption);
Serial.print("salimos de aca 2");
activarlimpieza(durationW);
Serial.print("salimos de aca 3");
action19(0,0,0,0);
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void back(byte screen, byte id, byte line, int value)
{
Serial.println(F("back"));
(void)screen;
(void)id;
(void)line;
(void)value;
menuSystem.cursorBack();
}
void readButton()
{
if (digitalRead(downButton) == LOW) {
menuSystem.cursorDown();
delay(100); // dirty delay to debounce button
while (!digitalRead(downButton)); // wait for button release
}
if (digitalRead(upButton) == LOW) {
menuSystem.cursorUp();
delay(200); // dirty delay to debounce button
while (!digitalRead(upButton));
}
if (digitalRead(backButton) == LOW) {
menuSystem.cursorBack();
delay(200); // dirty delay to debounce button
while (!digitalRead(backButton));
}
if (digitalRead(selectButton) == LOW) {
menuSystem.activate(); // activate the current line
delay(200); // dirty delay to debounce button
while (!digitalRead(selectButton));
}
if (digitalRead(encoderButton) == LOW) {
menuSystem.activate(); // activate the current line
delay(200); // dirty delay to debounce button
while (!digitalRead(encoderButton));
}
}
#define ENCODER_CLK 2
#define ENCODER_DT 3
void readEncoder() {
{
int dtValue = digitalRead(ENCODER_DT);
if (dtValue == HIGH) {
Serial.println("up");
menuSystem.cursorUp();
}
if (dtValue == LOW) {
Serial.println("down");
menuSystem.cursorDown();
}
}
menuSystem.setScreen(0);
menuSystem.setId(0);
menuSystem.show();
}
void setup()
{
Serial.begin(115200);
Serial.println(F("Tresquince BIENVENIDO"));
myStepper.setSpeed(60);
Wire.begin(); // start I2C library
lcd.init(); // initialize the LCD
lcd.backlight(); // turn on backlight
lcd.setCursor(3,1);
lcd.print("HOLA, USUARIO");
lcd.setCursor(1,0);
lcd.print(" BIENVENIDO");
delay(2000);
lcd.setCursor(1,2);
lcd.print("INICIANDO ASSKICK");
delay(3000);
pinMode(upButton, INPUT_PULLUP);
pinMode(downButton, INPUT_PULLUP);
pinMode(backButton, INPUT_PULLUP);
pinMode(selectButton, INPUT_PULLUP);
pinMode(encoderButton, INPUT_PULLUP);
pinMode(23, OUTPUT); //C41IN
pinMode(22, OUTPUT); //resistencia
pinMode(27, OUTPUT); //FIXIN
pinMode(25, OUTPUT); //BLEACHIN
pinMode(29, OUTPUT); //WATERIN
pinMode(33, OUTPUT); //PUMPIN
pinMode(41, OUTPUT); //C41REC
pinMode(43, OUTPUT); //BLEACHREC
pinMode(45, OUTPUT); //FIX REC
pinMode(47, OUTPUT); //TANQIN
pinMode(49, OUTPUT); //WASTED
pinMode(7, OUTPUT); //vacio // A10 Y A11 SENSOR DE NIVEL
pinMode(11, OUTPUT); //PUMPFILL
digitalWrite(22,LOW);
digitalWrite(23,LOW);
digitalWrite(27,LOW);
digitalWrite(25,LOW);
digitalWrite(29,LOW);
digitalWrite(33,LOW);
digitalWrite(41,LOW);
digitalWrite(43,LOW);
digitalWrite(44,LOW);
digitalWrite(45,LOW);
digitalWrite(47,LOW);
digitalWrite(49,LOW);
digitalWrite(7,LOW);
digitalWrite(11,LOW);
pinMode(A7,INPUT);
pinMode(A5,INPUT);
pinMode(38, INPUT);
pinMode(A7, INPUT_PULLUP);
pinMode(ENCODER_CLK, INPUT);
pinMode(ENCODER_DT, INPUT);
attachInterrupt(digitalPinToInterrupt(ENCODER_CLK), readEncoder, FALLING);
menuSystem.show();
}
void loop()
{
readButton();
}
void activarlimpieza240(int durationW){
////// LImPIEZAAAAAAA /////
lcd.clear();
lcd.print(" RINSE ACTIVADO ");
lcd.println(" ");
for(int i = 0; i <= 3;i++ ){
analogRead(A11);
if (analogRead(A11) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A11) > 100)
{
digitalWrite(29, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
digitalWrite(29, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
delay(500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("RINSE ACTIVO");
lcd.println("!!!");
bombafill();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LAVANDO");
lcd.setCursor(0, 2); // Coloca el cursor en la primera columna de la primera fila
lcd.print("Tiempo restante:"); // Imprime el texto "Tiempo restante:" en el LCD)
long startTime = millis(); // Guarda el tiempo actual en milisegundos en la variable startTime
long elapsedTime = 0; // Inicializa la variable elapsedTime en 0
while (elapsedTime < durationW) { // Mientras elapsedTime sea menor que la duración del programa
myStepper.step(stepsPerRevolution); // Gira el motor 400 pasos a la derecha
Serial.println("clockwise");
delay(1000); // Espera 500 milisegundos
myStepper.step(-stepsPerRevolution); // Gira el motor 400 pasos a la izquierda
Serial.println("counterclockwise");
delay(1000); // Espera 500 milisegundos
elapsedTime = millis() - startTime; // Actualiza elapsedTime con la diferencia entre el tiempo actual y startTime
long remainingTime = durationW - elapsedTime; // Calcula el tiempo restante como la diferencia entre la duración del programa y elapsedTime
int minutes = remainingTime / 60000; // Calcula el número de minutos restantes
int seconds = (remainingTime % 60000) / 1000; // Calcula el número de segundos restantes
lcd.setCursor(0, 3); // Coloca el cursor en la primera columna de la segunda fila
lcd.print(minutes); // Imprime el número de minutos restantes en el LCD
lcd.setCursor(1, 3); // Coloca el cursor en la primera columna de la segunda fila
lcd.print(":"); // Imprime el número de minutos restantes en el LCD
// Verifica si el número de segundos es menor que 10
lcd.setCursor(2, 3);
if (seconds < 10) {
lcd.print("0"); // Imprime un cero adicional si el número de segundos es menor que 10
}
lcd.print(seconds); // Imprime el número de segundos restantes en el LCD
}
delay(1000);
lcd.clear();
lcd.print("VACIANDO TANK");
lcd.println(" ");
digitalWrite(49, HIGH);
delay(4000);
digitalWrite(49, LOW);
lcd.clear();
lcd.print("LIMPIEZA ");
lcd.println(" OK!! ");
////// LIMPIEZAAAAA //////////
}
void activarlimpieza(int durationW){
////// LImPIEZAAAAAAA /////
lcd.clear();
lcd.print(" RINSE ACTIVADO ");
lcd.println(" ");
for(int i = 0; i <= 3;i++ ){
analogRead(A10);
if (analogRead(A10) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A10) > 100)
{
digitalWrite(29, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
digitalWrite(29, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
delay(500);
lcd.clear();
lcd.setCursor(3,1);
lcd.print("RINSE ACTIVO");
lcd.println("!!!");
bombafill();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LAVANDO");
lcd.setCursor(0, 2); // Coloca el cursor en la primera columna de la primera fila
lcd.print("Tiempo restante:"); // Imprime el texto "Tiempo restante:" en el LCD)
long startTime = millis(); // Guarda el tiempo actual en milisegundos en la variable startTime
long elapsedTime = 0; // Inicializa la variable elapsedTime en 0
while (elapsedTime < durationW) { // Mientras elapsedTime sea menor que la duración del programa
myStepper.step(stepsPerRevolution); // Gira el motor 400 pasos a la derecha
Serial.println("clockwise");
delay(1000); // Espera 500 milisegundos
myStepper.step(-stepsPerRevolution); // Gira el motor 400 pasos a la izquierda
Serial.println("counterclockwise");
delay(1000); // Espera 500 milisegundos
elapsedTime = millis() - startTime; // Actualiza elapsedTime con la diferencia entre el tiempo actual y startTime
long remainingTime = durationW - elapsedTime; // Calcula el tiempo restante como la diferencia entre la duración del programa y elapsedTime
int minutes = remainingTime / 60000; // Calcula el número de minutos restantes
int seconds = (remainingTime % 60000) / 1000; // Calcula el número de segundos restantes
lcd.setCursor(0, 3); // Coloca el cursor en la primera columna de la segunda fila
lcd.print(minutes); // Imprime el número de minutos restantes en el LCD
lcd.setCursor(1, 3); // Coloca el cursor en la primera columna de la segunda fila
lcd.print(":"); // Imprime el número de minutos restantes en el LCD
// Verifica si el número de segundos es menor que 10
lcd.setCursor(2, 3);
if (seconds < 10) {
lcd.print("0"); // Imprime un cero adicional si el número de segundos es menor que 10
}
lcd.print(seconds); // Imprime el número de segundos restantes en el LCD
}
delay(1000);
lcd.print("VACIANDO TANK");
lcd.println(" ");
digitalWrite(49, HIGH);
delay(4000);
digitalWrite(49, LOW);
lcd.clear();
lcd.print("LIMPIEZA ");
lcd.println(" OK!! ");
////// LIMPIEZAAAAA //////////
}
void sensortemperatura(float TEMPERATURE_ON, float TEMPERATURE_OFF) {
for(int i = 10;i>=0;i--){
// Lee el valor de resistencia del sensor NTC
SENSOR = analogRead(A8); // lectura de entrada analogica A0
temperature = ((SENSOR * 5.0) / 1024) * 100; // formula para convertir valor leido
// en grados centigrados
Serial.println(SENSOR);
Serial.println(temperature);
Serial.println(temperature,1); // imprime en monitor serial valor
// de temperatura con un decimal
delay(1000); // demora de 1 seg. entre lecturas
// Check if temperature is below the "on" threshold
if (temperature < TEMPERATURE_ON) {
// Turn on the relay
digitalWrite(22, HIGH);
lcd.setCursor(2,2);
lcd.print(temperature,1);
lcd.setCursor(8,2);
lcd.print("ENCENDIDO");
i=i+1;
}
// Check if temperature is above or equal to the "off" threshold
else if (temperature >= TEMPERATURE_OFF) {
// Turn off the relay
digitalWrite(22, LOW);
lcd.setCursor(2,2);
lcd.print(temperature,1);
lcd.setCursor(8,2);
lcd.print("ENFRIANDO");
i=i+1;
}
// If temperature is between the two thresholds, do nothing
// Si la temperatura está entre 37,8 y 38 grados
else {
lcd.setCursor(2,2);
lcd.print(temperature,1);
lcd.setCursor(8,3);
lcd.print(i);
// No hace nada, deja el relay en su estado actual
}
delay(1000);
}
digitalWrite(22, LOW);
}
void bombafill(){
for(int i = 0; i <= 4;i++ ){
analogRead(A7);
if (analogRead(A7) < 950)
{
digitalWrite(33, HIGH);
digitalWrite(47, HIGH);
Serial.println("RELE ENCENDIDO");
delay(500);
i=i-1;
}
else if (analogRead(A7) > 950)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
}
digitalWrite(33, LOW);
digitalWrite(47, LOW);
delay(1000);
Serial.print("CUBA VACIA");
}
void giromotor(float duration){
lcd.setCursor(0, 2); // Coloca el cursor en la primera columna de la primera fila
lcd.print("Tiempo restante:"); // Imprime el texto "Tiempo restante:" en el LCD)
long startTime = millis(); // Guarda el tiempo actual en milisegundos en la variable startTime
long elapsedTime = 0; // Inicializa la variable elapsedTime en 0
while (elapsedTime < duration) { // Mientras elapsedTime sea menor que la duración del programa
myStepper.step(stepsPerRevolution); // Gira el motor 400 pasos a la derecha
Serial.println("clockwise");
delay(1000); // Espera 500 milisegundos
myStepper.step(-stepsPerRevolution); // Gira el motor 400 pasos a la izquierda
Serial.println("counterclockwise");
delay(1000); // Espera 500 milisegundos
elapsedTime = millis() - startTime; // Actualiza elapsedTime con la diferencia entre el tiempo actual y startTime
long remainingTime = duration - elapsedTime; // Calcula el tiempo restante como la diferencia entre la duración del programa y elapsedTime
int minutes = remainingTime / 60000; // Calcula el número de minutos restantes
int seconds = (remainingTime % 60000) / 1000; // Calcula el número de segundos restantes
lcd.setCursor(0, 3);
if (minutes < 10) {
lcd.print("0"); // Imprime un cero adicional si el número de segundos es menor que 10
} // Coloca el cursor en la primera columna de la segunda fila
lcd.print(minutes); // Imprime el número de minutos restantes en el LCD
lcd.setCursor(2, 3); // Coloca el cursor en la primera columna de la segunda fila
lcd.print(":"); // Imprime el número de minutos restantes en el LCD
// Verifica si el número de segundos es menor que 10
lcd.setCursor(4, 3);
if (seconds < 10) {
lcd.print("0"); // Imprime un cero adicional si el número de segundos es menor que 10
}
lcd.print(seconds); // Imprime el número de segundos restantes en el LCD
}
lcd.clear();
lcd.print(" ROTACION TERMINADA");
lcd.setCursor(0,2);
delay(1000);
}
void tiempoOpcional(long durationOption){
int Minutes = 0;
int Seconds = 0;
delay(500);
lcd.clear();
lcd.print("Elegir Tiempo:");
lcd.setCursor(0, 1);
lcd.print("00:00");
while (analogRead(selectButton) > 100) {
// Check for up button press
if (analogRead(upButton) < 100) {
if (Minutes >= 0) {
Minutes++;
lcd.setCursor(1, 1);
delay(200);
}
if (Minutes > 9) {
Minutes++;
lcd.setCursor(0, 1);
delay(200);
}
lcd.print(Minutes);
}
// Check for down button press
if (analogRead(downButton) < 100) {
if (Minutes > 0) {
Minutes--;
lcd.setCursor(0, 1);
delay(200);
}
if (Minutes < 10) {
lcd.setCursor(0, 1);
lcd.print("0"); // Imprime un cero adicional si el número de segundos es menor que 10
lcd.setCursor(1, 1);
delay(200);
}
lcd.print(Minutes);
}
}
delay(500);
while (analogRead(selectButton) >100) {
// Check for up button press
if (analogRead(upButton) <100) {
if (Seconds >= 0 && Seconds <= 30) {
Seconds += 15;
lcd.setCursor(3, 1);
lcd.print(Seconds);
delay(200);
}
else {
// No haga nada
}
}
if (analogRead(downButton) <100) {
if (Seconds >= 0) {
if (Seconds >= 0) {
Seconds-= 15;
lcd.setCursor(3, 1);
lcd.print(Seconds);
}
delay(200);
}
}
if (Seconds < 10) {
lcd.setCursor(3, 1);
lcd.print("0"); // Imprime un cero adicional si el número de segundos es menor que 10
delay(5);
lcd.setCursor(4, 1);
lcd.print(Seconds);
}
}
durationOption = Minutes * 60000 + Seconds * 1000;
lcd.clear();
lcd.print("PUMP TO TANK");
bombafill();
lcd.clear();
lcd.print("REVELANDO");
giromotor(durationOption);
}
void tiempoOpcional2(long durationOption2){
int Minutes = 0;
int Seconds = 0; //tesst
delay(500);
lcd.clear();
lcd.print("Elegir Tiempo:");
lcd.setCursor(0, 1);
lcd.print("00:00");
while (analogRead(selectButton) > 100) {
// Check for up button press
if (analogRead(upButton) < 100) {
if (Minutes >= 0) {
Minutes++;
lcd.setCursor(1, 1);
delay(200);
}
if (Minutes > 9) {
Minutes++;
lcd.setCursor(0, 1);
delay(200);
}
lcd.print(Minutes);
}
// Check for down button press
if (analogRead(downButton) < 100) {
if (Minutes > 0) {
Minutes--;
lcd.setCursor(0, 1);
delay(200);
}
if (Minutes < 10) {
lcd.setCursor(0, 1);
lcd.print("0"); // Imprime un cero adicional si el número de segundos es menor que 10
lcd.setCursor(1, 1);
delay(200);
}
lcd.print(Minutes);
}
}
delay(500);
while (analogRead(selectButton) >100) {
// Check for up button press
if (analogRead(upButton) <100) {
if (Seconds >= 0 && Seconds <= 30) {
Seconds += 15;
lcd.setCursor(3, 1);
lcd.print(Seconds);
delay(200);
}
else {
// No haga nada
}
}
if (analogRead(downButton) <100) {
if (Seconds >= 0) {
if (Seconds >= 0) {
Seconds-= 15;
lcd.setCursor(3, 1);
lcd.print(Seconds);
}
delay(200);
}
}
if (Seconds < 10) {
lcd.setCursor(3, 1);
lcd.print("0"); // Imprime un cero adicional si el número de segundos es menor que 10
delay(5);
lcd.setCursor(4, 1);
lcd.print(Seconds);
}
}
durationOption2 = (Minutes * 60000) + (Seconds * 1000);
delay(500);
lcd.clear();
lcd.print(durationOption2);
delay(2000);
lcd.clear();
lcd.print("Ing Quimico");
for(int i = 0; i <= 3;i++ ){
analogRead(A10);
if (analogRead(A10) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A10) > 100)
{
digitalWrite(23, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
digitalWrite(23, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
lcd.print("Valvulas Cerrada");
lcd.clear();
lcd.print("CALENTANDO");
lcd.setCursor(2,1);
lcd.print("QUIMICOS");
// esscribir codigo para calentar quimico
sensortemperatura(TEMPERATURE_ON, TEMPERATURE_OFF);
delay(500);
lcd.clear();
lcd.print(durationOption2);
delay(2000);
lcd.clear();
lcd.clear();
lcd.print("ACT BOMBA FILL");
bombafill();
giromotor(durationOption2);
lcd.print("vaciando TANQUE");
lcd.println(" ");
digitalWrite(41, HIGH);
delay(4000);
digitalWrite(41, LOW);
lcd.clear();
lcd.print("C41 ");
lcd.println(" 1/3");
action18(0,0,0,0);
}
void tiempoOpcional3(long durationOption3){
int Minutes = 0;
int Seconds = 0;
delay(500);
lcd.clear();
lcd.print("Elegir Tiempo:");
lcd.setCursor(0, 1);
lcd.print("00:00");
while (analogRead(selectButton) > 100) {
// Check for up button press
if (analogRead(upButton) < 100) {
if (Minutes >= 0) {
Minutes++;
lcd.setCursor(1, 1);
delay(200);
}
if (Minutes > 9) {
Minutes++;
lcd.setCursor(0, 1);
delay(200);
}
lcd.print(Minutes);
}
// Check for down button press
if (analogRead(downButton) < 100) {
if (Minutes > 0) {
Minutes--;
lcd.setCursor(0, 1);
delay(200);
}
if (Minutes < 10) {
lcd.setCursor(0, 1);
lcd.print("0"); // Imprime un cero adicional si el número de segundos es menor que 10
lcd.setCursor(1, 1);
delay(200);
}
lcd.print(Minutes);
}
}
delay(500);
while (analogRead(selectButton) >100) {
// Check for up button press
if (analogRead(upButton) <100) {
if (Seconds >= 0 && Seconds <= 30) {
Seconds += 15;
lcd.setCursor(3, 1);
lcd.print(Seconds);
delay(200);
}
else {
// No haga nada
}
}
if (analogRead(downButton) <100) {
if (Seconds >= 0) {
if (Seconds >= 0) {
Seconds-= 15;
lcd.setCursor(3, 1);
lcd.print(Seconds);
}
delay(200);
}
}
if (Seconds < 10) {
lcd.setCursor(3, 1);
lcd.print("0"); // Imprime un cero adicional si el número de segundos es menor que 10
delay(5);
lcd.setCursor(4, 1);
lcd.print(Seconds);
}
}
durationOption3 = (Minutes * 60000) + (Seconds * 1000);
delay(500);
lcd.clear();
lcd.print(durationOption3);
delay(2000);
lcd.clear();
lcd.print("Ing Quimico");
for(int i = 0; i <= 3;i++ ){
analogRead(A11);
if (analogRead(A11) < 100)
{
Serial.println("SENSOR ACTIVADO");
delay(500);
}
else if (analogRead(A11) > 100)
{
digitalWrite(23, HIGH);
digitalWrite(33, HIGH);
Serial.println("INGRESANDO QUIMICO");
delay(500);
i=i-1;
}
}
digitalWrite(23, LOW);
digitalWrite(33, LOW);
Serial.println("VALVULAS CERRADAS");
lcd.print("Valvulas Cerrada");
lcd.clear();
lcd.print("CALENTANDO");
lcd.setCursor(2,1);
lcd.print("QUIMICOS");
// esscribir codigo para calentar quimico
sensortemperatura(TEMPERATURE_ON, TEMPERATURE_OFF);
delay(500);
lcd.clear();
lcd.print(durationOption3);
delay(2000);
lcd.clear();
lcd.clear();
lcd.print("ACT BOMBA FILL");
bombafill();
giromotor(durationOption3);
lcd.print("vaciando TANQUE");
lcd.println(" ");
digitalWrite(41, HIGH);
delay(4000);
digitalWrite(41, LOW);
lcd.clear();
lcd.print("C41 ");
lcd.println(" 1/3");
action16(0,0,0,0);
}