Piñas update

This commit is contained in:
Arturo Corro 2022-07-19 00:52:35 -05:00
parent 2eeedbe232
commit 87af839da4

View File

@ -40,20 +40,18 @@
* MENÚ * MENÚ
**************************************************/ **************************************************/
// BLOQUES DE MEMORIA EEPROM // BLOQUES DE MEMORIA EEPROM
#define BUTTON_SENSITIVITY_EEPROM_ADDRESS 0 #define BUTTON_SENSITIVITY_EEPROM_ADDRESS 0
#define PRESS_BUTTON_EEPROM_ADDRESS 1 #define DISPENSER_MODE_EEPROM_ADDRESS 1
#define HOLD_DOWN_BUTTON_EEPROM_ADDRESS 2 #define LAG_TIME_MIN_EEPROM_ADDRESS 2 // Minutos, tiempo de retraso
#define LAG_TIME_MIN_EEPROM_ADDRESS 3 // Minutos, tiempo de retraso #define LAG_TIME_SEG_EEPROM_ADDRESS 3 // Segundo, tiempo de retraso
#define LAG_TIME_SEG_EEPROM_ADDRESS 4 // Segundo, tiempo de retraso #define LAG_TIME_DEC_EEPROM_ADDRESS 4 // Décimas de segundo, tiempo de retraso
#define LAG_TIME_DEC_EEPROM_ADDRESS 5 // Décimas de segundo, tiempo de retraso #define DOSING_TIME_MIN_EEPROM_ADDRESS 5 // Minutos, tiempo dosificación
#define DOSING_TIME_MIN_EEPROM_ADDRESS 6 // Minutos, tiempo dosificación #define DOSING_TIME_SEG_EEPROM_ADDRESS 6 // Segundos, tiempo dosificación
#define DOSING_TIME_SEG_EEPROM_ADDRESS 7 // Segundos, tiempo dosificación #define DOSING_TIME_DEC_EEPROM_ADDRESS 7 // Décimas de segundo, tiempo dosificación
#define DOSING_TIME_DEC_EEPROM_ADDRESS 8 // Décimas de segundo, tiempo dosificación
// FACTORY SETTINGS // FACTORY SETTINGS
#define BUTTON_SENSITIVITY_DEFAULT_VALUE 9 #define BUTTON_SENSITIVITY_DEFAULT_VALUE 10
#define PRESS_BUTTON_DEFAULT_VALUE 3 #define DISPENSER_MODE_DEFAULT_VALUE 2
#define HOLD_DOWN_BUTTON_DEFAULT_VALUE 1
#define LAG_TIME_MIN_DEFAULT_VALUE 0 // Minutos, tiempo de retraso #define LAG_TIME_MIN_DEFAULT_VALUE 0 // Minutos, tiempo de retraso
#define LAG_TIME_SEG_DEFAULT_VALUE 3 // Segundo, tiempo de retraso #define LAG_TIME_SEG_DEFAULT_VALUE 3 // Segundo, tiempo de retraso
#define LAG_TIME_DEC_DEFAULT_VALUE 5 // Décimas de segundo, tiempo de retraso #define LAG_TIME_DEC_DEFAULT_VALUE 5 // Décimas de segundo, tiempo de retraso
@ -62,32 +60,33 @@
#define DOSING_TIME_DEC_DEFAULT_VALUE 9 // Décimas de segundo, tiempo dosificación #define DOSING_TIME_DEC_DEFAULT_VALUE 9 // Décimas de segundo, tiempo dosificación
// SETTINGS MENU // SETTINGS MENU
#define ALL_SETTINGS 0 #define OUT_OF_MENU 0
#define OUT_OF_MENU 0 #define ALL_SETTINGS 0
#define IN_SENSITIVITY_BUTTON 1 // POSITION MENU
#define IN_PRESS_BUTTON 2 #define IN_SENSITIVITY_BUTTON 1
#define IN_HOLD_DOWN_BUTTON 3 #define IN_DISPENSER_MODE 2
#define IN_LAG 4 #define IN_LAG 3
#define IN_DOSING 5 #define IN_DOSING 4
#define IN_FACTORY_RESET 6 #define IN_FACTORY_RESET 5
#define IN_RESTART 7 #define IN_RESTART 6
#define IN_EXIT 8 #define IN_EXIT 7
#define VIEW 0 #define VIEW 0
#define UPDATE 1 #define UPDATE 1
#define POSITION_ONE 0 #define POSITION_ONE 0
#define POSITION_TWO 1 #define POSITION_TWO 1
#define POSITION_THREE 2 #define POSITION_THREE 2
#define MODE_1 0 // text_info[] index
#define MODE_2 1 #define DISPENSER_MODE 0
#define MODE_3 2 #define BELT_MODE 1
#define FACTORY_RESET 3 #define FACTORY_RESET 2
#define RESTART 4 #define RESTART 3
#define CANCEL 5 #define CANCEL 4
// MENU & LCD
#define AUTO_EXIT_MENU_MILLIS 15000 #define AUTO_EXIT_MENU_MILLIS 15000
#define BLINK_MILLIS 1600 #define BLINK_MILLIS 1600
#define LCD_PROCESS_REFRESH_MILLIS 333 #define LCD_PROCESS_REFRESH_MILLIS 333
@ -100,13 +99,22 @@
#define DISPENSER_DOSING 3 #define DISPENSER_DOSING 3
#define DISPENSER_BLOCK 4 #define DISPENSER_BLOCK 4
// STATUS RELAY // MODE EEPROM DISPENSER
#define RELAY_HIGH HIGH #define DISPENSER_MODE_VALUE 1
#define RELAY_LOW LOW #define BELT_MODE_VALUE 2
// STATUS BUTTON // RELAY STATUS
#define DOSING_BUTTON_PUSH 0 #define RELAY_HIGH HIGH
#define DOSING_BUTTON_IDLE 1 #define RELAY_LOW LOW
// SENSOR STATUS
#define SENSOR_UNLOCK 0
#define SENSOR_LOCK 1
#define SENSOR_ACTIVATED LOW
// SENSOR ACTIVATION BUFFER SIZE
#define SENSOR_BUFFER_SIZE 25
/************************************************** /**************************************************
@ -134,35 +142,49 @@
/************************************************** /**************************************************
* ENVIRONMENT VARIABLES * ENVIRONMENT VARIABLES
**************************************************/ **************************************************/
// Dosing // Configuraciones del dosificador
uint16_t button_sensitivity_millis; uint16_t button_sensitivity_millis;
uint8_t press_button_mode; uint8_t dispenser_mode;
uint8_t hold_down_button_mode;
uint16_t lag_time_decseg; uint16_t lag_time_decseg;
uint16_t dosing_time_decseg; uint16_t dosing_time_decseg;
uint32_t button_pressed_millis;
uint8_t release_button;
// Momento del bloqueo del sensor
uint32_t sensor_lock_millis;
// Registro del sensor
uint8_t last_sensor_status = SENSOR_UNLOCK;
uint8_t relay_activation_pointer;
uint32_t relay_activation_millis_ini[SENSOR_BUFFER_SIZE];
uint32_t relay_activation_millis_end[SENSOR_BUFFER_SIZE];
// Estado del Relevador
uint8_t relay_state = RELAY_LOW;
// Estado del dosificador
uint8_t dispenser_status; uint8_t dispenser_status;
uint32_t dispenser_status_time_millis; uint32_t dispenser_status_time_millis;
// Navegación de menú
uint8_t setup_var[3];
uint8_t menu_section; uint8_t menu_section;
uint8_t menu_status; uint8_t menu_status;
uint8_t menu_cursor_var; uint8_t menu_cursor_var;
uint8_t setup_var[3]; uint32_t blink_millis;
uint32_t last_change_menu_millis; uint32_t last_change_menu_millis;
boolean refresh_lcd_menu;
// LCD2004 Render // LCD2004 Render
LiquidCrystal_I2C lcd(LCD_I2C_ADDRESS, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); LiquidCrystal_I2C lcd(LCD_I2C_ADDRESS, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
String menu[] = { String menu[] = {
"SENSIBILIDAD BOTON", "SENSIBILIDAD SENSOR",
"AL PRESIONAR BOTON", "MODO DE TRABAJO",
"AL MANTENER PRESIO",
"RETARDO AL INICIAR", "RETARDO AL INICIAR",
"TIEMPO DOSIFICACION", "TIEMPO DOSIFICACION",
"VALORES DE FABRICA", "VALORES DE FABRICA",
@ -179,17 +201,13 @@
}; };
String text_info[] = { String text_info[] = {
"MODO 1", "DOSIFICADOR",
"MODO 2", "BANDA TRANSPORTADOR",
"MODO 3",
"RESTAURAR", "RESTAURAR",
"REINICAR", "REINICAR",
"CANCELAR", "CANCELAR",
}; };
boolean refresh_lcd_menu;
uint32_t blink_millis;
/************************************************** /**************************************************
* FRONT PANEL OF CONFIGURATIONS * FRONT PANEL OF CONFIGURATIONS
@ -291,20 +309,12 @@
save_setting(IN_SENSITIVITY_BUTTON); save_setting(IN_SENSITIVITY_BUTTON);
break; break;
case IN_PRESS_BUTTON: case IN_DISPENSER_MODE:
if(menu_status == VIEW) if(menu_status == VIEW)
menu_status = UPDATE; menu_status = UPDATE;
else if(++menu_cursor_var > POSITION_ONE) else if(++menu_cursor_var > POSITION_ONE)
save_setting(IN_PRESS_BUTTON); save_setting(IN_DISPENSER_MODE);
break;
case IN_HOLD_DOWN_BUTTON:
if(menu_status == VIEW)
menu_status = UPDATE;
else if(++menu_cursor_var > POSITION_ONE)
save_setting(IN_HOLD_DOWN_BUTTON);
break; break;
case IN_LAG: case IN_LAG:
@ -374,19 +384,10 @@
} }
break; break;
case IN_PRESS_BUTTON: case IN_DISPENSER_MODE:
if(menu_status == VIEW){ if(menu_status == VIEW){
load_menu_variables(IN_SENSITIVITY_BUTTON); load_menu_variables(IN_SENSITIVITY_BUTTON);
}else{ // UPDATE
setup_var[0] = setup_var[0] <= 1 ? 3 : --setup_var[0];
}
break;
case IN_HOLD_DOWN_BUTTON:
if(menu_status == VIEW){
load_menu_variables(IN_PRESS_BUTTON);
}else{ // UPDATE }else{ // UPDATE
setup_var[0] = setup_var[0] <= 1 ? 2 : --setup_var[0]; setup_var[0] = setup_var[0] <= 1 ? 2 : --setup_var[0];
} }
@ -394,7 +395,7 @@
case IN_LAG: case IN_LAG:
if(menu_status == VIEW){ if(menu_status == VIEW){
load_menu_variables(IN_SENSITIVITY_BUTTON); load_menu_variables(IN_DISPENSER_MODE);
}else{ // UPDATE }else{ // UPDATE
if(menu_cursor_var == POSITION_ONE) if(menu_cursor_var == POSITION_ONE)
@ -426,7 +427,9 @@
case IN_FACTORY_RESET: case IN_FACTORY_RESET:
if(menu_status == VIEW){ if(menu_status == VIEW){
load_menu_variables(IN_DOSING); dispenser_mode == DISPENSER_MODE_VALUE?
load_menu_variables(IN_DOSING):
load_menu_variables(IN_LAG);
}else{ // UPDATE }else{ // UPDATE
setup_var[0] = setup_var[0] >= 1 ? 0 : ++setup_var[0]; setup_var[0] = setup_var[0] >= 1 ? 0 : ++setup_var[0];
@ -443,7 +446,7 @@
break; break;
case IN_EXIT: case IN_EXIT:
load_menu_variables(IN_FACTORY_RESET); load_menu_variables(IN_RESTART);
break; break;
} }
break; break;
@ -456,23 +459,14 @@
case IN_SENSITIVITY_BUTTON: case IN_SENSITIVITY_BUTTON:
if(menu_status == VIEW){ if(menu_status == VIEW){
load_menu_variables(IN_LAG); load_menu_variables(IN_DISPENSER_MODE);
}else{ // UPDATE }else{ // UPDATE
setup_var[0] = setup_var[0] <= 1 ? 10 : --setup_var[0]; setup_var[0] = setup_var[0] <= 1 ? 10 : --setup_var[0];
} }
break; break;
case IN_PRESS_BUTTON: case IN_DISPENSER_MODE:
if(menu_status == VIEW){
load_menu_variables(IN_LAG);
}else{ // UPDATE
setup_var[0] = setup_var[0] >= 3 ? 1 : ++setup_var[0];
}
break;
case IN_HOLD_DOWN_BUTTON:
if(menu_status == VIEW){ if(menu_status == VIEW){
load_menu_variables(IN_LAG); load_menu_variables(IN_LAG);
@ -483,7 +477,9 @@
case IN_LAG: case IN_LAG:
if(menu_status == VIEW){ if(menu_status == VIEW){
load_menu_variables(IN_DOSING); dispenser_mode == DISPENSER_MODE_VALUE?
load_menu_variables(IN_DOSING):
load_menu_variables(IN_FACTORY_RESET);
}else{ // UPDATE }else{ // UPDATE
if(menu_cursor_var == POSITION_ONE) if(menu_cursor_var == POSITION_ONE)
@ -541,8 +537,8 @@
refresh_lcd_menu = true; refresh_lcd_menu = true;
last_change_menu_millis = millis(); last_change_menu_millis = millis();
serialPrint("button_value: "); //serialPrint("button_value: ");
serialPrintln(button_value); //serialPrintln(button_value);
serialPrint("menu_section: "); serialPrint("menu_section: ");
serialPrint(menu_section); serialPrint(menu_section);
@ -572,20 +568,12 @@
serialPrintln("Save button_sensitivity_millis"); serialPrintln("Save button_sensitivity_millis");
break; break;
case IN_PRESS_BUTTON: case IN_DISPENSER_MODE:
EEPROM.write(PRESS_BUTTON_EEPROM_ADDRESS, setup_var[0]); EEPROM.write(DISPENSER_MODE_EEPROM_ADDRESS, setup_var[0]);
load_setting(IN_PRESS_BUTTON); load_setting(IN_DISPENSER_MODE);
serialPrintln("Save press_button_mode"); serialPrintln("Save dispenser_mode");
break;
case IN_HOLD_DOWN_BUTTON:
EEPROM.write(HOLD_DOWN_BUTTON_EEPROM_ADDRESS, setup_var[0]);
load_setting(IN_HOLD_DOWN_BUTTON);
serialPrintln("Save hold_down_button_mode");
break; break;
case IN_LAG: case IN_LAG:
@ -611,8 +599,7 @@
case IN_FACTORY_RESET: case IN_FACTORY_RESET:
if(setup_var[0]){ if(setup_var[0]){
EEPROM.write(BUTTON_SENSITIVITY_EEPROM_ADDRESS, BUTTON_SENSITIVITY_DEFAULT_VALUE); EEPROM.write(BUTTON_SENSITIVITY_EEPROM_ADDRESS, BUTTON_SENSITIVITY_DEFAULT_VALUE);
EEPROM.write(PRESS_BUTTON_EEPROM_ADDRESS, PRESS_BUTTON_DEFAULT_VALUE); EEPROM.write(DISPENSER_MODE_EEPROM_ADDRESS, DISPENSER_MODE_DEFAULT_VALUE);
EEPROM.write(HOLD_DOWN_BUTTON_EEPROM_ADDRESS, HOLD_DOWN_BUTTON_DEFAULT_VALUE);
EEPROM.write(LAG_TIME_MIN_EEPROM_ADDRESS, LAG_TIME_MIN_DEFAULT_VALUE); EEPROM.write(LAG_TIME_MIN_EEPROM_ADDRESS, LAG_TIME_MIN_DEFAULT_VALUE);
EEPROM.write(LAG_TIME_SEG_EEPROM_ADDRESS, LAG_TIME_SEG_DEFAULT_VALUE); EEPROM.write(LAG_TIME_SEG_EEPROM_ADDRESS, LAG_TIME_SEG_DEFAULT_VALUE);
EEPROM.write(LAG_TIME_DEC_EEPROM_ADDRESS, LAG_TIME_DEC_DEFAULT_VALUE); EEPROM.write(LAG_TIME_DEC_EEPROM_ADDRESS, LAG_TIME_DEC_DEFAULT_VALUE);
@ -629,8 +616,11 @@
case IN_RESTART: case IN_RESTART:
if(setup_var[0]){ if(setup_var[0]){
dispenser_status = DISPENSER_DOSING; for (int i = 0; i < SENSOR_BUFFER_SIZE; ++i){
dispenser_status_time_millis = 0; relay_activation_pointer = 0;
relay_activation_millis_ini[i] = 0;
relay_activation_millis_end[i] = 0;
}
load_menu_variables(OUT_OF_MENU); load_menu_variables(OUT_OF_MENU);
@ -645,8 +635,7 @@
switch(_setting){ switch(_setting){
case ALL_SETTINGS: case ALL_SETTINGS:
load_setting(IN_SENSITIVITY_BUTTON); load_setting(IN_SENSITIVITY_BUTTON);
load_setting(IN_PRESS_BUTTON); load_setting(IN_DISPENSER_MODE);
load_setting(IN_HOLD_DOWN_BUTTON);
load_setting(IN_LAG); load_setting(IN_LAG);
load_setting(IN_DOSING); load_setting(IN_DOSING);
break; break;
@ -658,22 +647,15 @@
serialPrintln(button_sensitivity_millis); serialPrintln(button_sensitivity_millis);
break; break;
case IN_PRESS_BUTTON: case IN_DISPENSER_MODE:
press_button_mode = EEPROM.read(PRESS_BUTTON_EEPROM_ADDRESS); dispenser_mode = EEPROM.read(DISPENSER_MODE_EEPROM_ADDRESS);
serialPrint("press_button_mode: "); serialPrint("dispenser_mode: ");
serialPrintln(press_button_mode); serialPrintln(dispenser_mode);
break;
case IN_HOLD_DOWN_BUTTON:
hold_down_button_mode = EEPROM.read(HOLD_DOWN_BUTTON_EEPROM_ADDRESS);
serialPrint("hold_down_button_mode: ");
serialPrintln(hold_down_button_mode);
break; break;
case IN_LAG: case IN_LAG:
lag_time_decseg = (EEPROM.read(LAG_TIME_SEG_EEPROM_ADDRESS) * 10) + EEPROM.read(LAG_TIME_DEC_EEPROM_ADDRESS); lag_time_decseg = (EEPROM.read(LAG_TIME_MIN_EEPROM_ADDRESS) * 600) + (EEPROM.read(LAG_TIME_SEG_EEPROM_ADDRESS) * 10) + EEPROM.read(LAG_TIME_DEC_EEPROM_ADDRESS);
serialPrint("lag_time_decseg: "); serialPrint("lag_time_decseg: ");
serialPrintln(lag_time_decseg); serialPrintln(lag_time_decseg);
@ -707,12 +689,8 @@
setup_var[0] = EEPROM.read(BUTTON_SENSITIVITY_EEPROM_ADDRESS); setup_var[0] = EEPROM.read(BUTTON_SENSITIVITY_EEPROM_ADDRESS);
break; break;
case IN_PRESS_BUTTON: case IN_DISPENSER_MODE:
setup_var[0] = EEPROM.read(PRESS_BUTTON_EEPROM_ADDRESS); setup_var[0] = EEPROM.read(DISPENSER_MODE_EEPROM_ADDRESS);
break;
case IN_HOLD_DOWN_BUTTON:
setup_var[0] = EEPROM.read(HOLD_DOWN_BUTTON_EEPROM_ADDRESS);
break; break;
case IN_LAG: case IN_LAG:
@ -816,19 +794,14 @@
lcd.print(fill_string_ws(fill_string_ws(String(setup_var[0]), 2, 1, "0"), 20, 3)); lcd.print(fill_string_ws(fill_string_ws(String(setup_var[0]), 2, 1, "0"), 20, 3));
break; break;
case IN_PRESS_BUTTON: case IN_DISPENSER_MODE:
case IN_HOLD_DOWN_BUTTON:
switch(setup_var[0]){ switch(setup_var[0]){
case 1: case DISPENSER_MODE_VALUE:
lcd.print(fill_string_ws(text_info[MODE_1], 20, 3)); lcd.print(fill_string_ws(text_info[DISPENSER_MODE], 20));
break; break;
case 2: case BELT_MODE_VALUE:
lcd.print(fill_string_ws(text_info[MODE_2], 20, 3)); lcd.print(fill_string_ws(text_info[BELT_MODE], 20));
break;
case 3:
lcd.print(fill_string_ws(text_info[MODE_3], 20, 3));
break; break;
} }
break; break;
@ -889,11 +862,10 @@
break; break;
case DISPENSER_DOSING: case DISPENSER_DOSING:
lcd.print(fill_string_ws(process_time(), 8, 1)); lcd.print(fill_string_ws(dispenser_mode == DISPENSER_MODE_VALUE? process_time(): "--:--", 8, 1));
break; break;
case DISPENSER_BLOCK: case DISPENSER_BLOCK:
//lcd.print(fill_string_ws(process_time(), 8, 1));
break; break;
} }
} }
@ -920,12 +892,15 @@
break; break;
case IN_SENSITIVITY_BUTTON: case IN_SENSITIVITY_BUTTON:
case IN_PRESS_BUTTON:
case IN_HOLD_DOWN_BUTTON:
case IN_FACTORY_RESET: case IN_FACTORY_RESET:
case IN_RESTART: case IN_RESTART:
lcd.setCursor(3,1); lcd.setCursor(3,1);
break; break;
case IN_DISPENSER_MODE:
lcd.setCursor(0,1);
break;
} }
lcd.cursor(); lcd.cursor();
@ -938,113 +913,138 @@
**************************************************/ **************************************************/
void loop_dosage_process() void loop_dosage_process()
{ {
if(digitalRead(DOSING_BUTTON_PIN) == DOSING_BUTTON_PUSH){ dispenser_status = DISPENSER_IDLE;
if(button_pressed_millis == 0)
button_pressed_millis = millis();
// Se supero el button_sensitivity_millis
if (millis() >= (button_pressed_millis + button_sensitivity_millis)) // Se a activado el Sensor
start_dosing_process(); if(digitalRead(DOSING_BUTTON_PIN) == SENSOR_ACTIVATED){
if(sensor_lock_millis == 0)
sensor_lock_millis = millis();
// Se supero el button_sensitivity_millis
if(last_sensor_status == SENSOR_UNLOCK && millis() >= (sensor_lock_millis + button_sensitivity_millis)){
// Registramos en Inicio de Proceso de dosifiación
relay_activation_millis_ini[relay_activation_pointer] = millis() + (lag_time_decseg * 100);
// En modo Dosificador
if(dispenser_mode == DISPENSER_MODE_VALUE)
relay_activation_millis_end[relay_activation_pointer] = relay_activation_millis_ini[relay_activation_pointer] + (dosing_time_decseg * 100);
last_sensor_status = SENSOR_LOCK;
}
if(dispenser_mode == DISPENSER_MODE_VALUE && relay_activation_millis_end[relay_activation_pointer] == 0){
dispenser_status = DISPENSER_BLOCK;
}
}else if(last_sensor_status == SENSOR_LOCK){
if(dispenser_mode == DISPENSER_MODE_VALUE){
relay_activation_millis_ini[relay_activation_pointer] = 0;
relay_activation_millis_end[relay_activation_pointer] = 0;
}else{
relay_activation_millis_end[relay_activation_pointer++] = millis() + (lag_time_decseg * 100);
// Si supera el tamaño del buffer vamos al inicio del buffer
if(relay_activation_pointer >= SENSOR_BUFFER_SIZE)
relay_activation_pointer = 0;
}
sensor_lock_millis = 0;
last_sensor_status = SENSOR_UNLOCK;
}
// Determinamos el estado del Relevador
relay_state = RELAY_LOW;
if(dispenser_mode == DISPENSER_MODE_VALUE){
// Depuramos
if(relay_activation_millis_end[relay_activation_pointer] > 0 && millis() >= relay_activation_millis_end[relay_activation_pointer]){
relay_activation_millis_ini[relay_activation_pointer] = 0;
relay_activation_millis_end[relay_activation_pointer] = 0;
}
// Existe periodo de dosificación
if(relay_activation_millis_ini[relay_activation_pointer] > 0) {
// Revisamos si se debe encender el Dosificador
if(millis() >= relay_activation_millis_ini[relay_activation_pointer]){
dispenser_status = DISPENSER_DOSING;
dispenser_status_time_millis = relay_activation_millis_end[relay_activation_pointer];
relay_state = RELAY_HIGH;
// Aun no comienza dosificación
}else{
dispenser_status = DISPENSER_LAG;
dispenser_status_time_millis = relay_activation_millis_ini[relay_activation_pointer];
}
}
}else{ }else{
for (int i = 0; i < SENSOR_BUFFER_SIZE; ++i){
// Depuramos el Buffer
if(relay_activation_millis_end[i] > 0 && millis() >= relay_activation_millis_end[i]){
relay_activation_millis_ini[i] = 0;
relay_activation_millis_end[i] = 0;
}
release_button = 0; if(relay_activation_millis_ini[i] > 0){
button_pressed_millis = 0; // Revisamos en el Buffer si se debe encender el Dosificador
if(millis() >= relay_activation_millis_ini[i]){
dispenser_status = DISPENSER_DOSING;
dispenser_status_time_millis = 0;
relay_state = RELAY_HIGH;
// Aun no comienza dosificación
}else if (relay_state == RELAY_LOW){
dispenser_status = DISPENSER_LAG;
dispenser_status_time_millis = relay_activation_millis_ini[i];
}
}
}
} }
continue_dosing_process();
}
void start_dosing_process() // Aplicamos cambios en el estado del relevador
{ digitalWrite(RELAY_PIN, relay_state);
/*
Modo 1:
Modo 2:
Modo 3:
*/
/* /*
if(press_button_mode == 3 && dispenser_status_time_millis
dispenser_status != DISPENSER_IDLE &&
dispenser_status_time_millis >= button_pressed_millis &&
release_button == 0){
dispenser_status = DISPENSER_DOSING; dispenser_status = DISPENSER_IDLE;
dispenser_status_time_millis = 0; dispenser_status = DISPENSER_LAG;
dispenser_status = DISPENSER_DOSING;
serialPrint("Proceso detenido"); dispenser_status = DISPENSER_BLOCK;
serialPrintln(millis());
}else if((press_button_mode == 1 || press_button_mode == 3) && dispenser_status == DISPENSER_IDLE){
dispenser_status = DISPENSER_LAG;
dispenser_status_time_millis = millis() + ((uint32_t) lag_time_decseg * 100);
release_button = 1; // Determinamos el estado del Dosificador
if(dispenser_mode == DISPENSER_MODE_VALUE){
serialPrint("Iniciando proceso ");
serialPrintln(millis());
}else if(press_button_mode == 2){ }else{
dispenser_status = DISPENSER_RESTART;
release_button = 1; }
}
for (int i = 0; i < SENSOR_BUFFER_SIZE; ++i){
serialPrint(i);
serialPrint(") ");
serialPrint(relay_activation_millis_ini[i]);
serialPrint(", ");
serialPrint(relay_activation_millis_end[i]);
serialPrint(" - ");
serialPrintln((relay_activation_millis_end[i] - relay_activation_millis_ini[i]));
}
serialPrintln("");
serialPrintln("");
serialPrintln("");
*/ */
switch(press_button_mode){
case 1:
dispenser_status = DISPENSER_RESTART;
serialPrintln("Modo 1 ");
break;
case 2:
dispenser_status = DISPENSER_RESTART;
serialPrintln("Modo 2 ");
break;
case 3:
dispenser_status = DISPENSER_RESTART;
serialPrintln("Modo 3 ");
break;
}
}
void continue_dosing_process()
{
switch(dispenser_status){
case DISPENSER_RESTART:
digitalWrite(RELAY_PIN, RELAY_LOW);
dispenser_status = DISPENSER_LAG;
dispenser_status_time_millis = millis() + ((uint32_t) lag_time_decseg * 100);
break;
case DISPENSER_LAG:
if(millis() >= dispenser_status_time_millis){
dispenser_status = DISPENSER_DOSING;
dispenser_status_time_millis = millis() + ((uint32_t) dosing_time_decseg * 100);
digitalWrite(RELAY_PIN, RELAY_HIGH);
}
break;
case DISPENSER_DOSING:
if(millis() >= dispenser_status_time_millis){
dispenser_status = button_pressed_millis == 0? DISPENSER_IDLE: DISPENSER_BLOCK;
dispenser_status_time_millis = 0;
digitalWrite(RELAY_PIN, RELAY_LOW);
}
break;
case DISPENSER_BLOCK:
if(button_pressed_millis == 0)
dispenser_status = DISPENSER_IDLE;
break;
}
} }
@ -1058,7 +1058,7 @@
pinMode(SETTINGS_BUTTONS_PIN, INPUT_PULLUP); pinMode(SETTINGS_BUTTONS_PIN, INPUT_PULLUP);
// Salida Serial // Salida Serial
serialBegin(9600); serialBegin(115200);
serialBeginWhile(); serialBeginWhile();
// Cargamos configuraciones de la EEPROM a la ram // Cargamos configuraciones de la EEPROM a la ram