Piñas update
This commit is contained in:
parent
2eeedbe232
commit
87af839da4
@ -40,20 +40,18 @@
|
||||
* MENÚ
|
||||
**************************************************/
|
||||
// BLOQUES DE MEMORIA EEPROM
|
||||
#define BUTTON_SENSITIVITY_EEPROM_ADDRESS 0
|
||||
#define PRESS_BUTTON_EEPROM_ADDRESS 1
|
||||
#define HOLD_DOWN_BUTTON_EEPROM_ADDRESS 2
|
||||
#define LAG_TIME_MIN_EEPROM_ADDRESS 3 // Minutos, tiempo de retraso
|
||||
#define LAG_TIME_SEG_EEPROM_ADDRESS 4 // Segundo, tiempo de retraso
|
||||
#define LAG_TIME_DEC_EEPROM_ADDRESS 5 // Décimas de segundo, tiempo de retraso
|
||||
#define DOSING_TIME_MIN_EEPROM_ADDRESS 6 // Minutos, tiempo dosificación
|
||||
#define DOSING_TIME_SEG_EEPROM_ADDRESS 7 // Segundos, tiempo dosificación
|
||||
#define DOSING_TIME_DEC_EEPROM_ADDRESS 8 // Décimas de segundo, tiempo dosificación
|
||||
#define BUTTON_SENSITIVITY_EEPROM_ADDRESS 0
|
||||
#define DISPENSER_MODE_EEPROM_ADDRESS 1
|
||||
#define LAG_TIME_MIN_EEPROM_ADDRESS 2 // Minutos, tiempo de retraso
|
||||
#define LAG_TIME_SEG_EEPROM_ADDRESS 3 // Segundo, tiempo de retraso
|
||||
#define LAG_TIME_DEC_EEPROM_ADDRESS 4 // Décimas de segundo, tiempo de retraso
|
||||
#define DOSING_TIME_MIN_EEPROM_ADDRESS 5 // Minutos, tiempo dosificación
|
||||
#define DOSING_TIME_SEG_EEPROM_ADDRESS 6 // Segundos, tiempo dosificación
|
||||
#define DOSING_TIME_DEC_EEPROM_ADDRESS 7 // Décimas de segundo, tiempo dosificación
|
||||
|
||||
// FACTORY SETTINGS
|
||||
#define BUTTON_SENSITIVITY_DEFAULT_VALUE 9
|
||||
#define PRESS_BUTTON_DEFAULT_VALUE 3
|
||||
#define HOLD_DOWN_BUTTON_DEFAULT_VALUE 1
|
||||
#define BUTTON_SENSITIVITY_DEFAULT_VALUE 10
|
||||
#define DISPENSER_MODE_DEFAULT_VALUE 2
|
||||
#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_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
|
||||
|
||||
// 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
|
||||
#define IN_PRESS_BUTTON 2
|
||||
#define IN_HOLD_DOWN_BUTTON 3
|
||||
#define IN_LAG 4
|
||||
#define IN_DOSING 5
|
||||
#define IN_FACTORY_RESET 6
|
||||
#define IN_RESTART 7
|
||||
#define IN_EXIT 8
|
||||
// POSITION MENU
|
||||
#define IN_SENSITIVITY_BUTTON 1
|
||||
#define IN_DISPENSER_MODE 2
|
||||
#define IN_LAG 3
|
||||
#define IN_DOSING 4
|
||||
#define IN_FACTORY_RESET 5
|
||||
#define IN_RESTART 6
|
||||
#define IN_EXIT 7
|
||||
|
||||
#define VIEW 0
|
||||
#define UPDATE 1
|
||||
#define VIEW 0
|
||||
#define UPDATE 1
|
||||
|
||||
#define POSITION_ONE 0
|
||||
#define POSITION_TWO 1
|
||||
#define POSITION_THREE 2
|
||||
#define POSITION_ONE 0
|
||||
#define POSITION_TWO 1
|
||||
#define POSITION_THREE 2
|
||||
|
||||
#define MODE_1 0
|
||||
#define MODE_2 1
|
||||
#define MODE_3 2
|
||||
#define FACTORY_RESET 3
|
||||
#define RESTART 4
|
||||
#define CANCEL 5
|
||||
// text_info[] index
|
||||
#define DISPENSER_MODE 0
|
||||
#define BELT_MODE 1
|
||||
#define FACTORY_RESET 2
|
||||
#define RESTART 3
|
||||
#define CANCEL 4
|
||||
|
||||
// MENU & LCD
|
||||
#define AUTO_EXIT_MENU_MILLIS 15000
|
||||
#define BLINK_MILLIS 1600
|
||||
#define LCD_PROCESS_REFRESH_MILLIS 333
|
||||
@ -100,13 +99,22 @@
|
||||
#define DISPENSER_DOSING 3
|
||||
#define DISPENSER_BLOCK 4
|
||||
|
||||
// STATUS RELAY
|
||||
#define RELAY_HIGH HIGH
|
||||
#define RELAY_LOW LOW
|
||||
// MODE EEPROM DISPENSER
|
||||
#define DISPENSER_MODE_VALUE 1
|
||||
#define BELT_MODE_VALUE 2
|
||||
|
||||
// STATUS BUTTON
|
||||
#define DOSING_BUTTON_PUSH 0
|
||||
#define DOSING_BUTTON_IDLE 1
|
||||
// RELAY STATUS
|
||||
#define RELAY_HIGH HIGH
|
||||
#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
|
||||
**************************************************/
|
||||
// Dosing
|
||||
// Configuraciones del dosificador
|
||||
uint16_t button_sensitivity_millis;
|
||||
uint8_t press_button_mode;
|
||||
uint8_t hold_down_button_mode;
|
||||
uint8_t dispenser_mode;
|
||||
uint16_t lag_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;
|
||||
uint32_t dispenser_status_time_millis;
|
||||
|
||||
|
||||
// Navegación de menú
|
||||
uint8_t setup_var[3];
|
||||
uint8_t menu_section;
|
||||
uint8_t menu_status;
|
||||
uint8_t menu_cursor_var;
|
||||
|
||||
uint8_t setup_var[3];
|
||||
|
||||
uint32_t blink_millis;
|
||||
uint32_t last_change_menu_millis;
|
||||
boolean refresh_lcd_menu;
|
||||
|
||||
|
||||
// LCD2004 Render
|
||||
LiquidCrystal_I2C lcd(LCD_I2C_ADDRESS, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
|
||||
|
||||
String menu[] = {
|
||||
"SENSIBILIDAD BOTON",
|
||||
"AL PRESIONAR BOTON",
|
||||
"AL MANTENER PRESIO",
|
||||
"SENSIBILIDAD SENSOR",
|
||||
"MODO DE TRABAJO",
|
||||
"RETARDO AL INICIAR",
|
||||
"TIEMPO DOSIFICACION",
|
||||
"VALORES DE FABRICA",
|
||||
@ -179,17 +201,13 @@
|
||||
};
|
||||
|
||||
String text_info[] = {
|
||||
"MODO 1",
|
||||
"MODO 2",
|
||||
"MODO 3",
|
||||
"DOSIFICADOR",
|
||||
"BANDA TRANSPORTADOR",
|
||||
"RESTAURAR",
|
||||
"REINICAR",
|
||||
"CANCELAR",
|
||||
};
|
||||
|
||||
boolean refresh_lcd_menu;
|
||||
uint32_t blink_millis;
|
||||
|
||||
|
||||
/**************************************************
|
||||
* FRONT PANEL OF CONFIGURATIONS
|
||||
@ -291,20 +309,12 @@
|
||||
save_setting(IN_SENSITIVITY_BUTTON);
|
||||
break;
|
||||
|
||||
case IN_PRESS_BUTTON:
|
||||
case IN_DISPENSER_MODE:
|
||||
if(menu_status == VIEW)
|
||||
menu_status = UPDATE;
|
||||
|
||||
else if(++menu_cursor_var > POSITION_ONE)
|
||||
save_setting(IN_PRESS_BUTTON);
|
||||
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);
|
||||
save_setting(IN_DISPENSER_MODE);
|
||||
break;
|
||||
|
||||
case IN_LAG:
|
||||
@ -374,19 +384,10 @@
|
||||
}
|
||||
break;
|
||||
|
||||
case IN_PRESS_BUTTON:
|
||||
case IN_DISPENSER_MODE:
|
||||
if(menu_status == VIEW){
|
||||
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
|
||||
setup_var[0] = setup_var[0] <= 1 ? 2 : --setup_var[0];
|
||||
}
|
||||
@ -394,7 +395,7 @@
|
||||
|
||||
case IN_LAG:
|
||||
if(menu_status == VIEW){
|
||||
load_menu_variables(IN_SENSITIVITY_BUTTON);
|
||||
load_menu_variables(IN_DISPENSER_MODE);
|
||||
|
||||
}else{ // UPDATE
|
||||
if(menu_cursor_var == POSITION_ONE)
|
||||
@ -426,7 +427,9 @@
|
||||
|
||||
case IN_FACTORY_RESET:
|
||||
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
|
||||
setup_var[0] = setup_var[0] >= 1 ? 0 : ++setup_var[0];
|
||||
@ -443,7 +446,7 @@
|
||||
break;
|
||||
|
||||
case IN_EXIT:
|
||||
load_menu_variables(IN_FACTORY_RESET);
|
||||
load_menu_variables(IN_RESTART);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -456,23 +459,14 @@
|
||||
|
||||
case IN_SENSITIVITY_BUTTON:
|
||||
if(menu_status == VIEW){
|
||||
load_menu_variables(IN_LAG);
|
||||
load_menu_variables(IN_DISPENSER_MODE);
|
||||
|
||||
}else{ // UPDATE
|
||||
setup_var[0] = setup_var[0] <= 1 ? 10 : --setup_var[0];
|
||||
}
|
||||
break;
|
||||
|
||||
case IN_PRESS_BUTTON:
|
||||
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:
|
||||
case IN_DISPENSER_MODE:
|
||||
if(menu_status == VIEW){
|
||||
load_menu_variables(IN_LAG);
|
||||
|
||||
@ -483,7 +477,9 @@
|
||||
|
||||
case IN_LAG:
|
||||
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
|
||||
if(menu_cursor_var == POSITION_ONE)
|
||||
@ -541,8 +537,8 @@
|
||||
refresh_lcd_menu = true;
|
||||
last_change_menu_millis = millis();
|
||||
|
||||
serialPrint("button_value: ");
|
||||
serialPrintln(button_value);
|
||||
//serialPrint("button_value: ");
|
||||
//serialPrintln(button_value);
|
||||
|
||||
serialPrint("menu_section: ");
|
||||
serialPrint(menu_section);
|
||||
@ -572,20 +568,12 @@
|
||||
serialPrintln("Save button_sensitivity_millis");
|
||||
break;
|
||||
|
||||
case IN_PRESS_BUTTON:
|
||||
EEPROM.write(PRESS_BUTTON_EEPROM_ADDRESS, setup_var[0]);
|
||||
case IN_DISPENSER_MODE:
|
||||
EEPROM.write(DISPENSER_MODE_EEPROM_ADDRESS, setup_var[0]);
|
||||
|
||||
load_setting(IN_PRESS_BUTTON);
|
||||
load_setting(IN_DISPENSER_MODE);
|
||||
|
||||
serialPrintln("Save press_button_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");
|
||||
serialPrintln("Save dispenser_mode");
|
||||
break;
|
||||
|
||||
case IN_LAG:
|
||||
@ -611,8 +599,7 @@
|
||||
case IN_FACTORY_RESET:
|
||||
if(setup_var[0]){
|
||||
EEPROM.write(BUTTON_SENSITIVITY_EEPROM_ADDRESS, BUTTON_SENSITIVITY_DEFAULT_VALUE);
|
||||
EEPROM.write(PRESS_BUTTON_EEPROM_ADDRESS, PRESS_BUTTON_DEFAULT_VALUE);
|
||||
EEPROM.write(HOLD_DOWN_BUTTON_EEPROM_ADDRESS, HOLD_DOWN_BUTTON_DEFAULT_VALUE);
|
||||
EEPROM.write(DISPENSER_MODE_EEPROM_ADDRESS, DISPENSER_MODE_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_DEC_EEPROM_ADDRESS, LAG_TIME_DEC_DEFAULT_VALUE);
|
||||
@ -629,8 +616,11 @@
|
||||
|
||||
case IN_RESTART:
|
||||
if(setup_var[0]){
|
||||
dispenser_status = DISPENSER_DOSING;
|
||||
dispenser_status_time_millis = 0;
|
||||
for (int i = 0; i < SENSOR_BUFFER_SIZE; ++i){
|
||||
relay_activation_pointer = 0;
|
||||
relay_activation_millis_ini[i] = 0;
|
||||
relay_activation_millis_end[i] = 0;
|
||||
}
|
||||
|
||||
load_menu_variables(OUT_OF_MENU);
|
||||
|
||||
@ -645,8 +635,7 @@
|
||||
switch(_setting){
|
||||
case ALL_SETTINGS:
|
||||
load_setting(IN_SENSITIVITY_BUTTON);
|
||||
load_setting(IN_PRESS_BUTTON);
|
||||
load_setting(IN_HOLD_DOWN_BUTTON);
|
||||
load_setting(IN_DISPENSER_MODE);
|
||||
load_setting(IN_LAG);
|
||||
load_setting(IN_DOSING);
|
||||
break;
|
||||
@ -658,22 +647,15 @@
|
||||
serialPrintln(button_sensitivity_millis);
|
||||
break;
|
||||
|
||||
case IN_PRESS_BUTTON:
|
||||
press_button_mode = EEPROM.read(PRESS_BUTTON_EEPROM_ADDRESS);
|
||||
case IN_DISPENSER_MODE:
|
||||
dispenser_mode = EEPROM.read(DISPENSER_MODE_EEPROM_ADDRESS);
|
||||
|
||||
serialPrint("press_button_mode: ");
|
||||
serialPrintln(press_button_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);
|
||||
serialPrint("dispenser_mode: ");
|
||||
serialPrintln(dispenser_mode);
|
||||
break;
|
||||
|
||||
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: ");
|
||||
serialPrintln(lag_time_decseg);
|
||||
@ -707,12 +689,8 @@
|
||||
setup_var[0] = EEPROM.read(BUTTON_SENSITIVITY_EEPROM_ADDRESS);
|
||||
break;
|
||||
|
||||
case IN_PRESS_BUTTON:
|
||||
setup_var[0] = EEPROM.read(PRESS_BUTTON_EEPROM_ADDRESS);
|
||||
break;
|
||||
|
||||
case IN_HOLD_DOWN_BUTTON:
|
||||
setup_var[0] = EEPROM.read(HOLD_DOWN_BUTTON_EEPROM_ADDRESS);
|
||||
case IN_DISPENSER_MODE:
|
||||
setup_var[0] = EEPROM.read(DISPENSER_MODE_EEPROM_ADDRESS);
|
||||
break;
|
||||
|
||||
case IN_LAG:
|
||||
@ -816,19 +794,14 @@
|
||||
lcd.print(fill_string_ws(fill_string_ws(String(setup_var[0]), 2, 1, "0"), 20, 3));
|
||||
break;
|
||||
|
||||
case IN_PRESS_BUTTON:
|
||||
case IN_HOLD_DOWN_BUTTON:
|
||||
case IN_DISPENSER_MODE:
|
||||
switch(setup_var[0]){
|
||||
case 1:
|
||||
lcd.print(fill_string_ws(text_info[MODE_1], 20, 3));
|
||||
case DISPENSER_MODE_VALUE:
|
||||
lcd.print(fill_string_ws(text_info[DISPENSER_MODE], 20));
|
||||
break;
|
||||
|
||||
case 2:
|
||||
lcd.print(fill_string_ws(text_info[MODE_2], 20, 3));
|
||||
break;
|
||||
|
||||
case 3:
|
||||
lcd.print(fill_string_ws(text_info[MODE_3], 20, 3));
|
||||
case BELT_MODE_VALUE:
|
||||
lcd.print(fill_string_ws(text_info[BELT_MODE], 20));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -889,11 +862,10 @@
|
||||
break;
|
||||
|
||||
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;
|
||||
|
||||
case DISPENSER_BLOCK:
|
||||
//lcd.print(fill_string_ws(process_time(), 8, 1));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -920,12 +892,15 @@
|
||||
break;
|
||||
|
||||
case IN_SENSITIVITY_BUTTON:
|
||||
case IN_PRESS_BUTTON:
|
||||
case IN_HOLD_DOWN_BUTTON:
|
||||
case IN_FACTORY_RESET:
|
||||
case IN_RESTART:
|
||||
lcd.setCursor(3,1);
|
||||
break;
|
||||
|
||||
case IN_DISPENSER_MODE:
|
||||
lcd.setCursor(0,1);
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
lcd.cursor();
|
||||
@ -938,113 +913,138 @@
|
||||
**************************************************/
|
||||
void loop_dosage_process()
|
||||
{
|
||||
if(digitalRead(DOSING_BUTTON_PIN) == DOSING_BUTTON_PUSH){
|
||||
if(button_pressed_millis == 0)
|
||||
button_pressed_millis = millis();
|
||||
dispenser_status = DISPENSER_IDLE;
|
||||
|
||||
// Se supero el button_sensitivity_millis
|
||||
if (millis() >= (button_pressed_millis + button_sensitivity_millis))
|
||||
start_dosing_process();
|
||||
|
||||
// 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
|
||||
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{
|
||||
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;
|
||||
button_pressed_millis = 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];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
continue_dosing_process();
|
||||
}
|
||||
|
||||
void start_dosing_process()
|
||||
{
|
||||
/*
|
||||
Modo 1:
|
||||
Modo 2:
|
||||
Modo 3:
|
||||
*/
|
||||
// Aplicamos cambios en el estado del relevador
|
||||
digitalWrite(RELAY_PIN, relay_state);
|
||||
|
||||
/*
|
||||
if(press_button_mode == 3 &&
|
||||
dispenser_status != DISPENSER_IDLE &&
|
||||
dispenser_status_time_millis >= button_pressed_millis &&
|
||||
release_button == 0){
|
||||
dispenser_status_time_millis
|
||||
|
||||
dispenser_status = DISPENSER_DOSING;
|
||||
dispenser_status_time_millis = 0;
|
||||
|
||||
serialPrint("Proceso detenido");
|
||||
serialPrintln(millis());
|
||||
dispenser_status = DISPENSER_IDLE;
|
||||
dispenser_status = DISPENSER_LAG;
|
||||
dispenser_status = DISPENSER_DOSING;
|
||||
dispenser_status = DISPENSER_BLOCK;
|
||||
|
||||
|
||||
}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){
|
||||
dispenser_status = DISPENSER_RESTART;
|
||||
}else{
|
||||
|
||||
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);
|
||||
|
||||
// Salida Serial
|
||||
serialBegin(9600);
|
||||
serialBegin(115200);
|
||||
serialBeginWhile();
|
||||
|
||||
// Cargamos configuraciones de la EEPROM a la ram
|
||||
|
Loading…
x
Reference in New Issue
Block a user