diff options
| author | Selene ToyKeeper | 2017-08-25 02:14:31 -0600 |
|---|---|---|
| committer | Selene ToyKeeper | 2017-08-25 02:14:31 -0600 |
| commit | 39b30b41f92978a3e05a8de0a416279fb35b35b1 (patch) | |
| tree | ab349e516b72389820703e8eb7d4dbf4854875e6 /spaghetti-monster/ramping-ui.c | |
| parent | Started on some documentation, spaghetti-monster.txt. (diff) | |
| download | anduril-39b30b41f92978a3e05a8de0a416279fb35b35b1.tar.gz anduril-39b30b41f92978a3e05a8de0a416279fb35b35b1.tar.bz2 anduril-39b30b41f92978a3e05a8de0a416279fb35b35b1.zip | |
Added battcheck mode to ramping-ui. It's bigger than I had hoped. :(
Added fsm-misc.*, which currently only has interruptible blink functions in it.
(for blinking out numbers and such)
Diffstat (limited to 'spaghetti-monster/ramping-ui.c')
| -rw-r--r-- | spaghetti-monster/ramping-ui.c | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/spaghetti-monster/ramping-ui.c b/spaghetti-monster/ramping-ui.c index 562cd1b..0b5bbda 100644 --- a/spaghetti-monster/ramping-ui.c +++ b/spaghetti-monster/ramping-ui.c @@ -25,6 +25,8 @@ #define USE_DELAY_4MS #define USE_DELAY_ZERO #define USE_RAMPING +#define USE_BATTCHECK +#define BATTCHECK_VpT #define RAMP_LENGTH 150 #include "spaghetti-monster.h" @@ -32,6 +34,9 @@ uint8_t off_state(EventPtr event, uint16_t arg); uint8_t steady_state(EventPtr event, uint16_t arg); uint8_t strobe_state(EventPtr event, uint16_t arg); +#ifdef USE_BATTCHECK +uint8_t battcheck_state(EventPtr event, uint16_t arg); +#endif // brightness control uint8_t memorized_level = MAX_1x7135; @@ -72,6 +77,11 @@ uint8_t off_state(EventPtr event, uint16_t arg) { set_state(steady_state, memorized_level); return MISCHIEF_MANAGED; } + // 2 clicks (initial press): off, to prep for later events + else if (event == EV_click2_press) { + set_level(0); + return MISCHIEF_MANAGED; + } // 2 clicks: highest mode else if (event == EV_2clicks) { set_state(steady_state, MAX_LEVEL); @@ -82,6 +92,13 @@ uint8_t off_state(EventPtr event, uint16_t arg) { set_state(strobe_state, 0); return MISCHIEF_MANAGED; } + #ifdef USE_BATTCHECK + // 4 clicks: battcheck mode + else if (event == EV_4clicks) { + set_state(battcheck_state, 0); + return MISCHIEF_MANAGED; + } + #endif // hold: go to lowest level else if (event == EV_click1_hold) { // don't start ramping immediately; @@ -149,7 +166,7 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { if (ramp_step_size == 1) ramp_step_size = MAX_LEVEL/6; else ramp_step_size = 1; set_level(0); - delay_ms(20); + delay_4ms(20/4); set_level(memorized_level); return MISCHIEF_MANAGED; } @@ -171,7 +188,7 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { && ((memorized_level == MAX_1x7135) || (memorized_level == MAX_LEVEL))) { set_level(0); - delay_ms(7); + delay_4ms(8/4); } set_level(memorized_level); return MISCHIEF_MANAGED; @@ -195,7 +212,7 @@ uint8_t steady_state(EventPtr event, uint16_t arg) { && ((memorized_level == MAX_1x7135) || (memorized_level == 1))) { set_level(0); - delay_ms(7); + delay_4ms(8/4); } set_level(memorized_level); return MISCHIEF_MANAGED; @@ -263,6 +280,18 @@ uint8_t strobe_state(EventPtr event, uint16_t arg) { } +#ifdef USE_BATTCHECK +uint8_t battcheck_state(EventPtr event, uint16_t arg) { + // 1 click: off + if (event == EV_1click) { + set_state(off_state, 0); + return MISCHIEF_MANAGED; + } + return EVENT_NOT_HANDLED; +} +#endif + + void low_voltage() { // "step down" from strobe to something low if (current_state == strobe_state) { @@ -301,4 +330,9 @@ void loop() { set_level(0); nice_delay_ms(strobe_delay); } + #ifdef USE_BATTCHECK + else if (current_state == battcheck_state) { + battcheck(); + } + #endif } |
