Calibración de botones

This commit is contained in:
Arturo Corro 2021-12-15 19:07:47 -06:00
parent ad68ba1cac
commit a2ca4cb087
3 changed files with 737 additions and 853 deletions

View File

@ -1,3 +1,14 @@
# Arduino Temporizador SSR DS3231 LCD2004
* Atmega328p
* RTC DS3231
* LCD2004
### 4 Botones 1 pin analogo
* 1 Resistencia Pull Down 10K
* 3 Resistencias en botones
* 10K
* 4.7K
* 1K

View File

@ -14,23 +14,23 @@
* PINOUT / MEMORY ADDRESS
**************************************************/
#define LCD_I2C_ADDRESS 0x27
#define RELAY_PIN 4
#define SETTINGS_BUTTONS_PIN A3
#define RELAY_PIN 2
#define SETTINGS_BUTTONS_PIN A2
/**************************************************
* BOTONES
**************************************************/
#define SETTING_BUTTON_IN_VAL 16
#define SETTING_BUTTON_OUT_VAL 91
#define SETTING_BUTTON_UP_VAL 41
#define SETTING_BUTTON_DOWN_VAL 69
#define SETTING_BUTTON_IN_VAL 1023
#define SETTING_BUTTON_UP_VAL 931
#define SETTING_BUTTON_DOWN_VAL 657
#define SETTING_BUTTON_OUT_VAL 401
#define SETTING_BUTTON_TOLERANCE_READ 8
#define SETTING_BUTTON_CONFIRMATION_REPEATS_MILLIS 1
#define SETTING_BUTTON_TOLERANCE_READ 5
#define SETTING_BUTTON_CONFIRMATION_REPEATS_MILLIS 5
#define SETTING_BUTTON_DELAY_MILLIS 350
// 4-button configuration
uint8_t button_values[] = {SETTING_BUTTON_IN_VAL, SETTING_BUTTON_OUT_VAL, SETTING_BUTTON_UP_VAL, SETTING_BUTTON_DOWN_VAL};
uint16_t button_values[] = {SETTING_BUTTON_IN_VAL, SETTING_BUTTON_OUT_VAL, SETTING_BUTTON_UP_VAL, SETTING_BUTTON_DOWN_VAL};
uint32_t _bt[sizeof(button_values)]; // millis
uint32_t confirmation_repeats_millis;
@ -61,11 +61,10 @@
#define MENU_T_ARRANQUE_ESPERA 3
#define MENU_T_ENCENDIDO 4
#define MENU_T_ENCENDIDO_ESPERA 5
#define MENU_FECHA_Y_HORA 6
#define MENU_DETENER_PROCESO 7
#define MENU_REANUDAR_PROCESO 8
#define MENU_REINICIAR_EQUIPO 9
#define MENU_VALORES_DE_FABRICA 10
#define MENU_DETENER_PROCESO 6
#define MENU_REANUDAR_PROCESO 7
#define MENU_REINICIAR_EQUIPO 8
#define MENU_VALORES_DE_FABRICA 9
#define DETENER 0
#define REANUDAR 1
@ -98,7 +97,6 @@
"T. ESPERA ARRANQUE",
"T. ENCENDIDO",
"T. ESPERA ENCENDIDO",
"CAMBIAR FECHA Y HORA",
"DETENER PROCESO",
"REANUDAR PROCESO",
"REINICIAR EQUIPO",
@ -147,7 +145,7 @@
* Define DEBUG_SERIAL_ENABLE to enable debug serial.
* Comment it to disable debug serial.
**************************************************/
#define DEBUG_SERIAL_ENABLE
//#define DEBUG_SERIAL_ENABLE
#define dbSerial Serial
@ -178,8 +176,6 @@
button_value = button_values[i];
}
serialPrintln(button_value);
//Valoramos si se presiono un botón y ejecutamos el metodo correspondiente
switch(button_value) {
case SETTING_BUTTON_IN_VAL:
@ -253,7 +249,7 @@
}
}
void action_button(uint8_t button_value)
void action_button(uint16_t button_value)
{
switch(button_value) {
case SETTING_BUTTON_IN_VAL:
@ -294,13 +290,6 @@
save_setting(menu_section);
break;
case MENU_FECHA_Y_HORA:
if(menu_edition == VIEW)
menu_edition = UPDATE;
else if(++menu_cursor_var > POSITION_SIX)
save_setting(menu_section);
break;
case MENU_SALIR:
load_menu_variables(OUT_OF_MENU);
@ -360,30 +349,6 @@
}
break;
case MENU_FECHA_Y_HORA:
if(menu_edition == VIEW){
load_menu_variables(menu_section -1);
}else{ // UPDATE
if(menu_cursor_var == POSITION_ONE)
setup_var[0] = setup_var[0] >= 23 ? 1 : ++setup_var[0]; // Horas
else if(menu_cursor_var == POSITION_TWO)
setup_var[1] = setup_var[1] >= 59 ? 0 : ++setup_var[1]; // Minutos
else if(menu_cursor_var == POSITION_THREE)
setup_var[2] = setup_var[2] >= 59 ? 0 : ++setup_var[2]; // Segundo
else if(menu_cursor_var == POSITION_FOUR)
setup_var[3] = setup_var[3] >= 31 ? 0 : ++setup_var[3]; // Día
else if(menu_cursor_var == POSITION_FIVE)
setup_var[4] = setup_var[4] >= 12 ? 0 : ++setup_var[4]; // Mes
else if(menu_cursor_var == POSITION_SIX)
setup_var[5] = setup_var[5] >= 10 ? 0 : ++setup_var[5]; // año
}
break;
case MENU_DETENER_PROCESO:
if(menu_edition == VIEW)
@ -426,6 +391,8 @@
case SETTING_BUTTON_DOWN_VAL:
switch(menu_section) {
case OUT_OF_MENU:
serialPrintln("DOWN_OUT");
load_menu_variables(1);
break;
@ -461,30 +428,6 @@
}
break;
case MENU_FECHA_Y_HORA:
if(menu_edition == VIEW){
load_menu_variables(menu_section + (myTimer_lite.getTimerDetenido()? 2: 1));
}else{ // UPDATE
if(menu_cursor_var == POSITION_ONE)
setup_var[0] = setup_var[0] <= 0 ? 23 : --setup_var[0]; // Horas
else if(menu_cursor_var == POSITION_TWO)
setup_var[1] = setup_var[1] <= 0 ? 59 : --setup_var[1]; // Minutos
else if(menu_cursor_var == POSITION_THREE)
setup_var[2] = setup_var[2] <= 0 ? 59 : --setup_var[2]; // Segundos
else if(menu_cursor_var == POSITION_FOUR)
setup_var[3] = setup_var[3] <= 0? 31 : --setup_var[3]; // Día
else if(menu_cursor_var == POSITION_FIVE)
setup_var[4] = setup_var[4] <= 0? 12 : --setup_var[4]; // Mes
else if(menu_cursor_var == POSITION_SIX)
setup_var[5] = setup_var[5] <= 0? 10 : --setup_var[5]; // año
}
break;
case MENU_DETENER_PROCESO:
if(menu_edition == VIEW)
@ -574,9 +517,6 @@
myTimer_lite.setTiempoEncendidoEspera(setup_var[0], setup_var[1], setup_var[2]);
break;
case MENU_FECHA_Y_HORA:
myTimer_lite.setFechaHora(YEARS_DATETIME + setup_var[5], setup_var[4], setup_var[3], setup_var[0], setup_var[1], setup_var[2]);
break;
case MENU_DETENER_PROCESO:
if(setup_var[0]){
@ -641,7 +581,7 @@
setup_var[1] = uint8_t(valor_guardado - (setup_var[0] * 60)); // Segundos
break;
case int8_t(MENU_T_ARRANQUE):
case MENU_T_ARRANQUE:
valor_guardado = myTimer_lite.getTiempoArranque();
setup_var[0] = uint8_t(valor_guardado / 3600); // horas
@ -673,17 +613,6 @@
setup_var[2] = uint8_t(valor_guardado - (setup_var[0] * 3600) - (setup_var[1] * 60)); // Segundos
break;
case MENU_FECHA_Y_HORA:
setup_var[0] = Timer_lite::_now.hour();
setup_var[1] = Timer_lite::_now.minute();
setup_var[2] = Timer_lite::_now.second();
setup_var[3] = Timer_lite::_now.day();
setup_var[4] = Timer_lite::_now.month();
if(Timer_lite::_now.year() >= 2020)
setup_var[5] = (Timer_lite::_now.year() - YEARS_DATETIME);
break;
}
}
@ -724,19 +653,6 @@
return hrs + ":" + min + ":" + seg;
}
String hrs_min_seg_dia_mes_ano_to_string(uint8_t _hrs, uint8_t _min, uint8_t _seg, uint8_t _dia, uint8_t _mes, uint8_t _ano)
{
String hrs = String(_hrs < 10? "0": "") + String(_hrs);
String min = String(_min < 10? "0": "") + String(_min);
String seg = String(_seg < 10? "0": "") + String(_seg);
String dia = String(_dia < 10? "0": "") + String(_dia);
String mes = String(_mes < 10? "0": "") + String(_mes);
String ano = String(YEARS_DATETIME + _ano);
return hrs + ":" + min + ":" + seg + " " + dia + "/" + mes + "/" + ano;
}
String seg_to_string(uint32_t _seg)
{
uint32_t hrs = _seg / 3600;
@ -762,7 +678,6 @@
}
if(millis() % LCD_PROCESS_REFRESH_MILLIS == 0){
print_lcd_datetime();
print_lcd_process();
setCursor_lcd_menu();
}
@ -801,16 +716,6 @@
lcd.print(fill_string_ws(hrs_min_seg_to_string(setup_var[0], setup_var[1], setup_var[2]), 20, 3));
break;
case MENU_FECHA_Y_HORA:
if(menu_edition == UPDATE){
text_info_idx = setup_var[0]? DETENER: CANCELAR;
lcd.print(hrs_min_seg_dia_mes_ano_to_string(setup_var[0], setup_var[1], setup_var[2], setup_var[3], setup_var[4], setup_var[5]));
}else
lcd.print(fill_string_ws("", 20));
break;
case MENU_DETENER_PROCESO:
if(menu_edition == UPDATE){
text_info_idx = setup_var[0]? DETENER: CANCELAR;
@ -863,16 +768,6 @@
*/
}
void print_lcd_datetime()
{
/*
lcd.setCursor(0, 0);
lcd.print(myTimer_lite.getHora());
lcd.setCursor(10, 0);
lcd.print(myTimer_lite.getFecha());
*/
}
void print_lcd_process()
{
lcd.setCursor(0, 3);
@ -921,27 +816,6 @@
lcd.setCursor(9, 2);
break;
case MENU_FECHA_Y_HORA:
// Posicionamos el cursos, para la edición
if(menu_cursor_var == POSITION_ONE)
lcd.setCursor(0, 2);
else if(menu_cursor_var == POSITION_TWO)
lcd.setCursor(3, 2);
else if(menu_cursor_var == POSITION_THREE)
lcd.setCursor(6, 2);
else if(menu_cursor_var == POSITION_FOUR)
lcd.setCursor(10, 2);
else if(menu_cursor_var == POSITION_FIVE)
lcd.setCursor(13, 2);
else if(menu_cursor_var == POSITION_SIX)
lcd.setCursor(16, 2);
break;
case MENU_DETENER_PROCESO:
case MENU_REANUDAR_PROCESO:
case MENU_REINICIAR_EQUIPO:
@ -958,20 +832,19 @@
* Setup / Loop
**************************************************/
void setup() {
pinMode(SETTINGS_BUTTONS_PIN, INPUT_PULLUP);
pinMode(SETTINGS_BUTTONS_PIN, INPUT);
// Salida Serial
serialBegin(9600);
serialBegin(57600);
serialBeginWhile();
// Iniciamos la pantalla
lcd.begin(20, 4);
lcd.setCursor(0, 0);
lcd.print("DIKEN INTERNATIONAL");
//lcd.setCursor(0, 0);
lcd.print("REALI S.A. DE C.V.");
myTimer_lite.initialize();
//myTimer_lite.setFechaHoraSistema();
}
void loop() {

Binary file not shown.