Calibración de botones
This commit is contained in:
parent
ad68ba1cac
commit
a2ca4cb087
11
README.md
11
README.md
@ -1,3 +1,14 @@
|
|||||||
# Arduino Temporizador SSR DS3231 LCD2004
|
# 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -14,23 +14,23 @@
|
|||||||
* PINOUT / MEMORY ADDRESS
|
* PINOUT / MEMORY ADDRESS
|
||||||
**************************************************/
|
**************************************************/
|
||||||
#define LCD_I2C_ADDRESS 0x27
|
#define LCD_I2C_ADDRESS 0x27
|
||||||
#define RELAY_PIN 4
|
#define RELAY_PIN 2
|
||||||
#define SETTINGS_BUTTONS_PIN A3
|
#define SETTINGS_BUTTONS_PIN A2
|
||||||
|
|
||||||
/**************************************************
|
/**************************************************
|
||||||
* BOTONES
|
* BOTONES
|
||||||
**************************************************/
|
**************************************************/
|
||||||
#define SETTING_BUTTON_IN_VAL 16
|
#define SETTING_BUTTON_IN_VAL 1023
|
||||||
#define SETTING_BUTTON_OUT_VAL 91
|
#define SETTING_BUTTON_UP_VAL 931
|
||||||
#define SETTING_BUTTON_UP_VAL 41
|
#define SETTING_BUTTON_DOWN_VAL 657
|
||||||
#define SETTING_BUTTON_DOWN_VAL 69
|
#define SETTING_BUTTON_OUT_VAL 401
|
||||||
|
|
||||||
#define SETTING_BUTTON_TOLERANCE_READ 8
|
#define SETTING_BUTTON_TOLERANCE_READ 5
|
||||||
#define SETTING_BUTTON_CONFIRMATION_REPEATS_MILLIS 1
|
#define SETTING_BUTTON_CONFIRMATION_REPEATS_MILLIS 5
|
||||||
#define SETTING_BUTTON_DELAY_MILLIS 350
|
#define SETTING_BUTTON_DELAY_MILLIS 350
|
||||||
|
|
||||||
// 4-button configuration
|
// 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 _bt[sizeof(button_values)]; // millis
|
||||||
uint32_t confirmation_repeats_millis;
|
uint32_t confirmation_repeats_millis;
|
||||||
|
|
||||||
@ -61,11 +61,10 @@
|
|||||||
#define MENU_T_ARRANQUE_ESPERA 3
|
#define MENU_T_ARRANQUE_ESPERA 3
|
||||||
#define MENU_T_ENCENDIDO 4
|
#define MENU_T_ENCENDIDO 4
|
||||||
#define MENU_T_ENCENDIDO_ESPERA 5
|
#define MENU_T_ENCENDIDO_ESPERA 5
|
||||||
#define MENU_FECHA_Y_HORA 6
|
#define MENU_DETENER_PROCESO 6
|
||||||
#define MENU_DETENER_PROCESO 7
|
#define MENU_REANUDAR_PROCESO 7
|
||||||
#define MENU_REANUDAR_PROCESO 8
|
#define MENU_REINICIAR_EQUIPO 8
|
||||||
#define MENU_REINICIAR_EQUIPO 9
|
#define MENU_VALORES_DE_FABRICA 9
|
||||||
#define MENU_VALORES_DE_FABRICA 10
|
|
||||||
|
|
||||||
#define DETENER 0
|
#define DETENER 0
|
||||||
#define REANUDAR 1
|
#define REANUDAR 1
|
||||||
@ -98,7 +97,6 @@
|
|||||||
"T. ESPERA ARRANQUE",
|
"T. ESPERA ARRANQUE",
|
||||||
"T. ENCENDIDO",
|
"T. ENCENDIDO",
|
||||||
"T. ESPERA ENCENDIDO",
|
"T. ESPERA ENCENDIDO",
|
||||||
"CAMBIAR FECHA Y HORA",
|
|
||||||
"DETENER PROCESO",
|
"DETENER PROCESO",
|
||||||
"REANUDAR PROCESO",
|
"REANUDAR PROCESO",
|
||||||
"REINICIAR EQUIPO",
|
"REINICIAR EQUIPO",
|
||||||
@ -147,7 +145,7 @@
|
|||||||
* Define DEBUG_SERIAL_ENABLE to enable debug serial.
|
* Define DEBUG_SERIAL_ENABLE to enable debug serial.
|
||||||
* Comment it to disable debug serial.
|
* Comment it to disable debug serial.
|
||||||
**************************************************/
|
**************************************************/
|
||||||
#define DEBUG_SERIAL_ENABLE
|
//#define DEBUG_SERIAL_ENABLE
|
||||||
|
|
||||||
#define dbSerial Serial
|
#define dbSerial Serial
|
||||||
|
|
||||||
@ -178,8 +176,6 @@
|
|||||||
button_value = button_values[i];
|
button_value = button_values[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
serialPrintln(button_value);
|
|
||||||
|
|
||||||
//Valoramos si se presiono un botón y ejecutamos el metodo correspondiente
|
//Valoramos si se presiono un botón y ejecutamos el metodo correspondiente
|
||||||
switch(button_value) {
|
switch(button_value) {
|
||||||
case SETTING_BUTTON_IN_VAL:
|
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) {
|
switch(button_value) {
|
||||||
case SETTING_BUTTON_IN_VAL:
|
case SETTING_BUTTON_IN_VAL:
|
||||||
@ -294,13 +290,6 @@
|
|||||||
save_setting(menu_section);
|
save_setting(menu_section);
|
||||||
break;
|
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:
|
case MENU_SALIR:
|
||||||
load_menu_variables(OUT_OF_MENU);
|
load_menu_variables(OUT_OF_MENU);
|
||||||
@ -360,30 +349,6 @@
|
|||||||
}
|
}
|
||||||
break;
|
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:
|
case MENU_DETENER_PROCESO:
|
||||||
if(menu_edition == VIEW)
|
if(menu_edition == VIEW)
|
||||||
@ -426,6 +391,8 @@
|
|||||||
case SETTING_BUTTON_DOWN_VAL:
|
case SETTING_BUTTON_DOWN_VAL:
|
||||||
switch(menu_section) {
|
switch(menu_section) {
|
||||||
case OUT_OF_MENU:
|
case OUT_OF_MENU:
|
||||||
|
serialPrintln("DOWN_OUT");
|
||||||
|
|
||||||
load_menu_variables(1);
|
load_menu_variables(1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -461,30 +428,6 @@
|
|||||||
}
|
}
|
||||||
break;
|
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:
|
case MENU_DETENER_PROCESO:
|
||||||
if(menu_edition == VIEW)
|
if(menu_edition == VIEW)
|
||||||
@ -574,9 +517,6 @@
|
|||||||
myTimer_lite.setTiempoEncendidoEspera(setup_var[0], setup_var[1], setup_var[2]);
|
myTimer_lite.setTiempoEncendidoEspera(setup_var[0], setup_var[1], setup_var[2]);
|
||||||
break;
|
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:
|
case MENU_DETENER_PROCESO:
|
||||||
if(setup_var[0]){
|
if(setup_var[0]){
|
||||||
@ -641,7 +581,7 @@
|
|||||||
setup_var[1] = uint8_t(valor_guardado - (setup_var[0] * 60)); // Segundos
|
setup_var[1] = uint8_t(valor_guardado - (setup_var[0] * 60)); // Segundos
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case int8_t(MENU_T_ARRANQUE):
|
case MENU_T_ARRANQUE:
|
||||||
valor_guardado = myTimer_lite.getTiempoArranque();
|
valor_guardado = myTimer_lite.getTiempoArranque();
|
||||||
|
|
||||||
setup_var[0] = uint8_t(valor_guardado / 3600); // horas
|
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
|
setup_var[2] = uint8_t(valor_guardado - (setup_var[0] * 3600) - (setup_var[1] * 60)); // Segundos
|
||||||
break;
|
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;
|
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)
|
String seg_to_string(uint32_t _seg)
|
||||||
{
|
{
|
||||||
uint32_t hrs = _seg / 3600;
|
uint32_t hrs = _seg / 3600;
|
||||||
@ -762,7 +678,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(millis() % LCD_PROCESS_REFRESH_MILLIS == 0){
|
if(millis() % LCD_PROCESS_REFRESH_MILLIS == 0){
|
||||||
print_lcd_datetime();
|
|
||||||
print_lcd_process();
|
print_lcd_process();
|
||||||
setCursor_lcd_menu();
|
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));
|
lcd.print(fill_string_ws(hrs_min_seg_to_string(setup_var[0], setup_var[1], setup_var[2]), 20, 3));
|
||||||
break;
|
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:
|
case MENU_DETENER_PROCESO:
|
||||||
if(menu_edition == UPDATE){
|
if(menu_edition == UPDATE){
|
||||||
text_info_idx = setup_var[0]? DETENER: CANCELAR;
|
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()
|
void print_lcd_process()
|
||||||
{
|
{
|
||||||
lcd.setCursor(0, 3);
|
lcd.setCursor(0, 3);
|
||||||
@ -921,27 +816,6 @@
|
|||||||
lcd.setCursor(9, 2);
|
lcd.setCursor(9, 2);
|
||||||
break;
|
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_DETENER_PROCESO:
|
||||||
case MENU_REANUDAR_PROCESO:
|
case MENU_REANUDAR_PROCESO:
|
||||||
case MENU_REINICIAR_EQUIPO:
|
case MENU_REINICIAR_EQUIPO:
|
||||||
@ -958,20 +832,19 @@
|
|||||||
* Setup / Loop
|
* Setup / Loop
|
||||||
**************************************************/
|
**************************************************/
|
||||||
void setup() {
|
void setup() {
|
||||||
pinMode(SETTINGS_BUTTONS_PIN, INPUT_PULLUP);
|
pinMode(SETTINGS_BUTTONS_PIN, INPUT);
|
||||||
|
|
||||||
// Salida Serial
|
// Salida Serial
|
||||||
serialBegin(9600);
|
serialBegin(57600);
|
||||||
serialBeginWhile();
|
serialBeginWhile();
|
||||||
|
|
||||||
// Iniciamos la pantalla
|
// Iniciamos la pantalla
|
||||||
lcd.begin(20, 4);
|
lcd.begin(20, 4);
|
||||||
|
|
||||||
lcd.setCursor(0, 0);
|
//lcd.setCursor(0, 0);
|
||||||
lcd.print("DIKEN INTERNATIONAL");
|
lcd.print("REALI S.A. DE C.V.");
|
||||||
|
|
||||||
myTimer_lite.initialize();
|
myTimer_lite.initialize();
|
||||||
//myTimer_lite.setFechaHoraSistema();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user