From 5ed19b564c089d64d7a725ac3096d298b2f2901c Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Sun, 1 Dec 2019 21:18:59 +0100 Subject: [PATCH] led brightness in menu and save in eeprom --- code/inc/menu.h | 2 ++ code/src/main.c | 15 +++++---------- code/src/menu.c | 21 +++++++++++++++++---- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/code/inc/menu.h b/code/inc/menu.h index a616504..27ed90f 100644 --- a/code/inc/menu.h +++ b/code/inc/menu.h @@ -5,11 +5,13 @@ extern int8_t menu_val_timezone; extern int8_t menu_val_timezone_ee EEMEM; extern uint8_t menu_val_format; extern uint8_t menu_val_format_ee EEMEM; +extern uint8_t menu_val_leds_ee EEMEM; typedef enum { OFF, TIMEZONE, FORMAT, + LEDS, EXIT } menu_state_t; diff --git a/code/src/main.c b/code/src/main.c index 23b8ce9..2452cbc 100644 --- a/code/src/main.c +++ b/code/src/main.c @@ -42,17 +42,12 @@ int8_t parse_nmea_gps(char input_string[RX_INPUT_BUFFER_SIZE], uint8_t output_bu } void encoder_action(uint8_t dir){ - if (dir) { - if(get_menu_active()) + if(get_menu_active()) + if (dir) { menu_up_down(1); - else - OCR2A++; - } else { - if(get_menu_active()) + } else { menu_up_down(-1); - else - OCR2A--; - } + } } int main(void){ @@ -109,6 +104,7 @@ void setup(){ menu_val_format = 24; eeprom_write_byte(&menu_val_format_ee, menu_val_format); } + OCR2A = eeprom_read_byte(&menu_val_leds_ee); DDRA = ENABLE_TUBE_SUPPLY; @@ -176,7 +172,6 @@ void setup(){ TCCR2B = (1 << CS22) |(0 << CS21) |(0 << CS20); - OCR2A = 0; // Compare value 125 uart_init(); i2c_init(); diff --git a/code/src/menu.c b/code/src/menu.c index 24e9c1b..d67001f 100644 --- a/code/src/menu.c +++ b/code/src/menu.c @@ -9,6 +9,7 @@ int8_t menu_val_timezone_ee EEMEM; int8_t menu_val_timezone; uint8_t menu_val_format_ee EEMEM; uint8_t menu_val_format; +uint8_t menu_val_leds_ee EEMEM; uint8_t get_menu_active(){ if(state != OFF) @@ -52,8 +53,13 @@ const char* get_menu_text(){ res[3] = (menu_val_format % 10) + 0x30; res[4] = 'H'; break; + case LEDS: + res[3] = (OCR2A / 100) + 0x30; + res[4] = (OCR2A / 10 % 10) + 0x30; + res[5] = (OCR2A % 10) + 0x30; + break; default: - res = "ERROR"; + res = "ERROR "; break; } else @@ -64,6 +70,10 @@ const char* get_menu_text(){ case FORMAT: res = "FORMAT"; break; + case LEDS: + res = "LED "; + eeprom_write_byte(&menu_val_leds_ee, OCR2A); + break; case EXIT: res = "ZURUEK"; break; @@ -91,15 +101,18 @@ void menu_up_down(uint8_t up_down){ else if(menu_val_format == 24) menu_val_format = 12; break; + case LEDS: + OCR2A += up_down; + break; default: break; } else{ state += up_down; if(state < 1) - state = EXIT; - if(state > 3) - state = TIMEZONE; + state = 1; + if(state > EXIT) + state = EXIT;//TIMEZONE; } //debug_menu(); }