~toykeeper/flashlight-firmware/fsm

483.9.7 by Selene ToyKeeper
renamed MD11 -> DM11 because Hank changed the product name
1
// Noctigon DM11 config options for Anduril
483.12.14 by Selene ToyKeeper
switched the rest of FSM + Anduril to use SPDX license headers
2
// Copyright (C) 2021-2023 Selene ToyKeeper
3
// SPDX-License-Identifier: GPL-3.0-or-later
4
#pragma once
5
483.9.2 by Selene Scriven
just a few adjustments to start with
6
#define MODEL_NUMBER "0271"
483.12.86 by Selene ToyKeeper
converted noctigon-dm11-* builds to multi-channel
7
#include "hwdef-noctigon-dm11.h"
483.9.1 by Selene Scriven
copied Noctigon K1 -> MD11 to start defining a new light
8
#include "hank-cfg.h"
9
// ATTINY: 1634
10
11
// this light has three aux LED channels: R, G, B
12
#define USE_AUX_RGB_LEDS
483.9.2 by Selene Scriven
just a few adjustments to start with
13
// ... and a single LED in the button
14
#define USE_BUTTON_LED
15
// don't use aux LEDs while main LED is on
16
#ifdef USE_INDICATOR_LED_WHILE_RAMPING
17
#undef USE_INDICATOR_LED_WHILE_RAMPING
18
#endif
483.9.1 by Selene Scriven
copied Noctigon K1 -> MD11 to start defining a new light
19
483.12.86 by Selene ToyKeeper
converted noctigon-dm11-* builds to multi-channel
20
#define RAMP_SIZE 150
483.9.1 by Selene Scriven
copied Noctigon K1 -> MD11 to start defining a new light
21
483.9.3 by Selene Scriven
added dynamic PWM and FET to MD11
22
// power channels:
23
// - linear: 5A?
24
// - FET: DD
483.9.11 by Selene ToyKeeper
a bit more fine-tuning for DM11
25
483.9.3 by Selene Scriven
added dynamic PWM and FET to MD11
26
// maxreg at 130, dynamic PWM: level_calc.py 5.01 2 149 7135 1 0.3 1740 FET 1 10 3190 --pwm dyn:64:16384:255
27
// (plus one extra level at the beginning for moon)
483.12.86 by Selene ToyKeeper
converted noctigon-dm11-* builds to multi-channel
28
#define PWM1_LEVELS  0,1,1,2,2,3,4,5,6,7,8,9,11,12,14,16,17,19,22,24,26,29,31,34,37,40,43,46,49,53,56,60,63,67,71,74,78,82,86,89,93,96,99,103,105,108,110,112,114,115,116,116,115,114,112,109,106,101,95,89,81,71,60,48,34,19,20,21,22,23,24,26,27,28,30,31,32,34,36,37,39,41,43,45,47,49,51,53,56,58,61,63,66,69,72,75,78,81,84,88,91,95,99,103,107,111,115,119,124,129,133,138,143,149,154,159,165,171,177,183,189,196,203,210,217,224,231,239,247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0
29
#define PWM2_LEVELS  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,20,30,41,52,63,75,87,99,112,125,138,151,165,179,194,208,224,239,255
30
#define PWM_TOPS     16383,16383,11750,14690,9183,12439,13615,13955,13877,13560,13093,12529,13291,12513,12756,12769,11893,11747,12085,11725,11329,11316,10851,10713,10518,10282,10016,9729,9428,9298,8971,8794,8459,8257,8043,7715,7497,7275,7052,6753,6538,6260,5994,5798,5501,5271,5006,4758,4525,4268,4030,3775,3508,3263,3010,2752,2517,2256,1998,1763,1512,1249,994,749,497,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
31
#define MIN_THERM_STEPDOWN 66  // should be above highest dyn_pwm level
483.9.3 by Selene Scriven
added dynamic PWM and FET to MD11
32
483.12.86 by Selene ToyKeeper
converted noctigon-dm11-* builds to multi-channel
33
#define MAX_1x7135 130
483.9.11 by Selene ToyKeeper
a bit more fine-tuning for DM11
34
#define DEFAULT_LEVEL 70
483.9.3 by Selene Scriven
added dynamic PWM and FET to MD11
35
#define HALFSPEED_LEVEL 12
36
#define QUARTERSPEED_LEVEL 4
37
38
#define RAMP_SMOOTH_FLOOR 10  // low levels may be unreliable
483.9.1 by Selene Scriven
copied Noctigon K1 -> MD11 to start defining a new light
39
#define RAMP_SMOOTH_CEIL  130
483.9.11 by Selene ToyKeeper
a bit more fine-tuning for DM11
40
// 10, 30, 50, [70], 90, 110, 130
483.9.1 by Selene Scriven
copied Noctigon K1 -> MD11 to start defining a new light
41
#define RAMP_DISCRETE_FLOOR 10
42
#define RAMP_DISCRETE_CEIL  RAMP_SMOOTH_CEIL
43
#define RAMP_DISCRETE_STEPS 7
44
45
// safe limit ~75% power
46
#define SIMPLE_UI_FLOOR RAMP_DISCRETE_FLOOR
47
#define SIMPLE_UI_CEIL RAMP_DISCRETE_CEIL
48
#define SIMPLE_UI_STEPS 5
49
50
// stop panicking at ~70% power or ~600 lm
51
#define THERM_FASTER_LEVEL 130
52
53
#define THERM_CAL_OFFSET 5
54
483.12.86 by Selene ToyKeeper
converted noctigon-dm11-* builds to multi-channel
55
483.9.3 by Selene Scriven
added dynamic PWM and FET to MD11
56
// the power regulator is a bit slow, so push it harder for a quick response from off
57
#define DEFAULT_JUMP_START_LEVEL 21
483.9.11 by Selene ToyKeeper
a bit more fine-tuning for DM11
58
#define BLINK_BRIGHTNESS 50
483.9.5 by Selene Scriven
added MD11-noFET, tweaked values in MD11-FET build too
59
#define BLINK_ONCE_TIME 12
483.9.3 by Selene Scriven
added dynamic PWM and FET to MD11
60
483.12.86 by Selene ToyKeeper
converted noctigon-dm11-* builds to multi-channel
61
// show each channel while it scroll by in the menu
62
#define USE_CONFIG_COLORS
63
64
// there is usually no lighted button, so
65
// blink numbers on the main LEDs by default (but allow user to change it)
66
#define DEFAULT_BLINK_CHANNEL  CM_MAIN
67
68
// slow down party strobe; this driver can't pulse for 1ms or less
69
// (only needed on no-FET build)
70
//#define PARTY_STROBE_ONTIME 2
71
72
// use aux red + aux blue for police strobe
73
#define USE_POLICE_COLOR_STROBE_MODE
74
#define POLICE_STROBE_USES_AUX
75
#define POLICE_COLOR_STROBE_CH1        CM_AUXRED
76
#define POLICE_COLOR_STROBE_CH2        CM_AUXBLU
77
78
// make candle mode wobble more
79
#define CANDLE_AMPLITUDE 30
80
81
// don't blink while ramping
82
#ifdef BLINK_AT_RAMP_MIDDLE
83
#undef BLINK_AT_RAMP_MIDDLE
84
#endif
85
483.9.11 by Selene ToyKeeper
a bit more fine-tuning for DM11
86
// added for convenience
483.9.3 by Selene Scriven
added dynamic PWM and FET to MD11
87
#define USE_SOFT_FACTORY_RESET
483.1.169 by Selene ToyKeeper
allow supporting single-color and RGB side button in the same build
88