diff options
| author | Selene ToyKeeper | 2017-08-24 02:25:58 -0600 |
|---|---|---|
| committer | Selene ToyKeeper | 2017-08-24 02:25:58 -0600 |
| commit | 939a13fe9949c576e21914939e1d847641f215c9 (patch) | |
| tree | 567a37486c824492c5052dfd9d242fc13cfaaa86 /spaghetti-monster/ramping-ui.c | |
| parent | Added a ramping UI example. (diff) | |
| download | anduril-939a13fe9949c576e21914939e1d847641f215c9.tar.gz anduril-939a13fe9949c576e21914939e1d847641f215c9.tar.bz2 anduril-939a13fe9949c576e21914939e1d847641f215c9.zip | |
Made ramping UI able to toggle between smooth and discrete ramping with 4 clicks.
Diffstat (limited to 'spaghetti-monster/ramping-ui.c')
| -rw-r--r-- | spaghetti-monster/ramping-ui.c | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/spaghetti-monster/ramping-ui.c b/spaghetti-monster/ramping-ui.c index b51d2f4..bd5a016 100644 --- a/spaghetti-monster/ramping-ui.c +++ b/spaghetti-monster/ramping-ui.c @@ -19,7 +19,7 @@ #define FSM_EMISAR_D4_LAYOUT #define USE_LVP -#define USE_THERMAL_REGULATION +//#define USE_THERMAL_REGULATION #define DEFAULT_THERM_CEIL 32 #define USE_DEBUG_BLINK #define USE_DELAY_MS @@ -35,7 +35,11 @@ uint8_t party_strobe_state(EventPtr event, uint16_t arg); // brightness control uint8_t memorized_level = 1; +// smooth vs discrete ramping +uint8_t ramp_step_size = 1; + #ifdef USE_THERMAL_REGULATION +// brightness before thermal step-down uint8_t target_level = 0; #endif @@ -134,11 +138,24 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { set_state(party_strobe_state, 0xff); return 0; } + // 4 clicks: toggle smooth vs discrete ramping + else if (event == EV_4clicks) { + if (ramp_step_size == 1) ramp_step_size = MAX_LEVEL/6; + else ramp_step_size = 1; + set_level(0); + delay_ms(20); + set_level(memorized_level); + return 0; + } // hold: change brightness (brighter) else if (event == EV_click1_hold) { + if (arg % ramp_step_size != 0) { + return 0; + } // FIXME: make it ramp down instead, if already at max - if (actual_level < MAX_LEVEL) - memorized_level = (actual_level+1); + if (actual_level + ramp_step_size < MAX_LEVEL) + memorized_level = actual_level + ramp_step_size; + else memorized_level = MAX_LEVEL; #ifdef USE_THERMAL_REGULATION target_level = memorized_level; #endif @@ -152,9 +169,14 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { } // click-release-hold: change brightness (dimmer) else if (event == EV_click2_hold) { + if (arg % ramp_step_size != 0) { + return 0; + } // FIXME: make it ramp up instead, if already at min - if (actual_level > 1) - memorized_level = (actual_level-1); + if (actual_level > ramp_step_size) + memorized_level = (actual_level-ramp_step_size); + else + memorized_level = 1; #ifdef USE_THERMAL_REGULATION target_level = memorized_level; #endif |
