Piñas update
This commit is contained in:
parent
2eeedbe232
commit
87af839da4
@ -41,19 +41,17 @@
|
|||||||
**************************************************/
|
**************************************************/
|
||||||
// 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,17 +60,17 @@
|
|||||||
#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
|
||||||
|
|
||||||
|
// POSITION MENU
|
||||||
#define IN_SENSITIVITY_BUTTON 1
|
#define IN_SENSITIVITY_BUTTON 1
|
||||||
#define IN_PRESS_BUTTON 2
|
#define IN_DISPENSER_MODE 2
|
||||||
#define IN_HOLD_DOWN_BUTTON 3
|
#define IN_LAG 3
|
||||||
#define IN_LAG 4
|
#define IN_DOSING 4
|
||||||
#define IN_DOSING 5
|
#define IN_FACTORY_RESET 5
|
||||||
#define IN_FACTORY_RESET 6
|
#define IN_RESTART 6
|
||||||
#define IN_RESTART 7
|
#define IN_EXIT 7
|
||||||
#define IN_EXIT 8
|
|
||||||
|
|
||||||
#define VIEW 0
|
#define VIEW 0
|
||||||
#define UPDATE 1
|
#define UPDATE 1
|
||||||
@ -81,13 +79,14 @@
|
|||||||
#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 DISPENSER_MODE_VALUE 1
|
||||||
|
#define BELT_MODE_VALUE 2
|
||||||
|
|
||||||
|
// RELAY STATUS
|
||||||
#define RELAY_HIGH HIGH
|
#define RELAY_HIGH HIGH
|
||||||
#define RELAY_LOW LOW
|
#define RELAY_LOW LOW
|
||||||
|
|
||||||
// STATUS BUTTON
|
// SENSOR STATUS
|
||||||
#define DOSING_BUTTON_PUSH 0
|
#define SENSOR_UNLOCK 0
|
||||||
#define DOSING_BUTTON_IDLE 1
|
#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 a activado el Sensor
|
||||||
|
if(digitalRead(DOSING_BUTTON_PIN) == SENSOR_ACTIVATED){
|
||||||
|
if(sensor_lock_millis == 0)
|
||||||
|
sensor_lock_millis = millis();
|
||||||
|
|
||||||
// Se supero el button_sensitivity_millis
|
// Se supero el button_sensitivity_millis
|
||||||
if (millis() >= (button_pressed_millis + button_sensitivity_millis))
|
if(last_sensor_status == SENSOR_UNLOCK && millis() >= (sensor_lock_millis + button_sensitivity_millis)){
|
||||||
start_dosing_process();
|
// 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{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(relay_activation_millis_ini[i] > 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];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Aplicamos cambios en el estado del relevador
|
||||||
|
digitalWrite(RELAY_PIN, relay_state);
|
||||||
|
|
||||||
|
/*
|
||||||
|
dispenser_status_time_millis
|
||||||
|
|
||||||
|
dispenser_status = DISPENSER_IDLE;
|
||||||
|
dispenser_status = DISPENSER_LAG;
|
||||||
|
dispenser_status = DISPENSER_DOSING;
|
||||||
|
dispenser_status = DISPENSER_BLOCK;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Determinamos el estado del Dosificador
|
||||||
|
if(dispenser_mode == DISPENSER_MODE_VALUE){
|
||||||
|
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
|
|
||||||
release_button = 0;
|
|
||||||
button_pressed_millis = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
continue_dosing_process();
|
|
||||||
|
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]));
|
||||||
}
|
}
|
||||||
|
|
||||||
void start_dosing_process()
|
serialPrintln("");
|
||||||
{
|
serialPrintln("");
|
||||||
/*
|
serialPrintln("");
|
||||||
Modo 1:
|
|
||||||
Modo 2:
|
|
||||||
Modo 3:
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
if(press_button_mode == 3 &&
|
|
||||||
dispenser_status != DISPENSER_IDLE &&
|
|
||||||
dispenser_status_time_millis >= button_pressed_millis &&
|
|
||||||
release_button == 0){
|
|
||||||
|
|
||||||
dispenser_status = DISPENSER_DOSING;
|
|
||||||
dispenser_status_time_millis = 0;
|
|
||||||
|
|
||||||
serialPrint("Proceso detenido");
|
|
||||||
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;
|
|
||||||
|
|
||||||
serialPrint("Iniciando proceso ");
|
|
||||||
serialPrintln(millis());
|
|
||||||
|
|
||||||
}else if(press_button_mode == 2){
|
|
||||||
dispenser_status = DISPENSER_RESTART;
|
|
||||||
|
|
||||||
release_button = 1;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user