183
by Selene Scriven
Updated Narsil to NarsilM 1.0 |
1 |
/****************************************************************************************
|
2 |
* ModeSets.h - sets of fixed mode levels
|
|
3 |
* ==========
|
|
4 |
*
|
|
5 |
****************************************************************************************/
|
|
6 |
||
7 |
#ifndef MODESETS_H_
|
|
8 |
#define MODESETS_H_
|
|
9 |
||
10 |
//---------------------------------------------------------------------------------------
|
|
11 |
#if OUT_CHANNELS == 2 // FET+1 |
|
12 |
//---------------------------------------------------------------------------------------
|
|
13 |
||
14 |
// 1 mode (max) max
|
|
15 |
PROGMEM const byte modeFetSet1[] = { 255}; |
|
16 |
PROGMEM const byte mode7135Set1[] = { 0}; |
|
17 |
||
18 |
// 2 modes (10-max) ~10% max
|
|
19 |
PROGMEM const byte modeFetSet2[] = { 0, 255}; |
|
20 |
PROGMEM const byte mode7135Set2[] = { 255, 0}; |
|
21 |
||
22 |
// 3 modes (5-35-max) ~5% ~35% max
|
|
23 |
PROGMEM const byte modeFetSet3[] = { 0, 70, 255 }; // Must be low to high |
|
24 |
PROGMEM const byte mode7135Set3[] = { 120, 255, 0 }; // for secondary (7135) output |
|
25 |
||
26 |
// ************************************************************
|
|
27 |
// *** TEST ONLY ***
|
|
28 |
// ************************************************************
|
|
29 |
//PROGMEM const byte modeFetSet3[] = { 3, 64, 128, 255 }; // Must be low to high
|
|
30 |
//PROGMEM const byte mode7135Set3[] = { 0, 0, 0, 0 }; // for secondary (7135) output
|
|
31 |
// ************************************************************
|
|
32 |
||
33 |
// 4 modes (2-10-40-max) 1-2% ~10% ~40% max
|
|
34 |
PROGMEM const byte modeFetSet4[] = { 0, 0, 80, 255 }; // Must be low to high |
|
35 |
PROGMEM const byte mode7135Set4[] = { 30, 255, 255, 0 }; // for secondary (7135) output |
|
36 |
||
37 |
// 5 modes (2-10-40-max) 1-2% ~5% ~10% ~40% max
|
|
38 |
PROGMEM const byte modeFetSet5[] = { 0, 0, 0, 80, 255 }; // Must be low to high |
|
39 |
PROGMEM const byte mode7135Set5[] = { 30, 120, 255, 255, 0 }; // for secondary (7135) output |
|
40 |
//PROGMEM const byte modePwmSet5[] = { FAST, FAST, PHASE, FAST, PHASE }; // Define one per mode above
|
|
41 |
||
42 |
// 6 modes - copy of BLF A6 7 mode set
|
|
43 |
PROGMEM const byte modeFetSet6[] = { 0, 0, 7, 56, 137, 255}; |
|
44 |
PROGMEM const byte mode7135Set6[] = { 20, 110, 255, 255, 255, 0}; |
|
45 |
||
46 |
// 7 modes (1-2.5-6-10-35-65-max) ~1% ~2.5% ~6% ~10% ~35% ~65% max
|
|
47 |
PROGMEM const byte modeFetSet7[] = { 0, 0, 0, 0, 70, 140, 255 }; // Must be low to high |
|
48 |
PROGMEM const byte mode7135Set7[] = { 24, 63, 150, 255, 255, 255, 0 }; // for secondary (7135) output |
|
49 |
||
50 |
// #8: 3 modes (10-25-50) ~10% ~25% ~50%
|
|
51 |
PROGMEM const byte modeFetSet8[] = { 0, 37, 110 }; // Must be low to high |
|
52 |
PROGMEM const byte mode7135Set8[] = { 255, 255, 255 }; // for secondary (7135) output |
|
53 |
||
54 |
// #9: 3 modes (2-20-max) ~2% ~20% max
|
|
55 |
PROGMEM const byte modeFetSet9[] = { 0, 25, 255 }; // Must be low to high |
|
56 |
PROGMEM const byte mode7135Set9[] = { 30, 255, 0 }; // for secondary (7135) output |
|
57 |
||
58 |
// #10: 3 modes (2-40-max) ~2% ~40% max
|
|
59 |
PROGMEM const byte modeFetSet10[] = { 0, 80, 255 }; // Must be low to high |
|
60 |
PROGMEM const byte mode7135Set10[] = { 30, 255, 0 }; // for secondary (7135) output |
|
61 |
||
62 |
// #11: 3 modes (10-35-max) ~10% ~35% max
|
|
63 |
PROGMEM const byte modeFetSet11[] = { 0, 70, 255 }; // Must be low to high |
|
64 |
PROGMEM const byte mode7135Set11[] = { 255, 255, 0 }; // for secondary (7135) output |
|
65 |
||
66 |
// #12: 4 modes - copy of BLF A6 4 mode
|
|
67 |
PROGMEM const byte modeFetSet12[] = { 0, 0, 90, 255}; |
|
68 |
PROGMEM const byte mode7135Set12[] = { 20, 230, 255, 0}; |
|
69 |
||
70 |
||
71 |
PROGMEM const byte modeSetCnts[] = { |
|
72 |
sizeof(modeFetSet1), sizeof(modeFetSet2), sizeof(modeFetSet3), sizeof(modeFetSet4), sizeof(modeFetSet5), sizeof(modeFetSet6), |
|
73 |
sizeof(modeFetSet7), sizeof(modeFetSet8), sizeof(modeFetSet9), sizeof(modeFetSet10), sizeof(modeFetSet11), sizeof(modeFetSet12)}; |
|
74 |
||
75 |
const byte *(modeTableFet[]) = { modeFetSet1, modeFetSet2, modeFetSet3, modeFetSet4, modeFetSet5, modeFetSet6, |
|
76 |
modeFetSet7, modeFetSet8, modeFetSet9, modeFetSet10, modeFetSet11, modeFetSet12}; |
|
77 |
const byte *modeTable7135[] = { mode7135Set1, mode7135Set2, mode7135Set3, mode7135Set4, mode7135Set5, mode7135Set6, |
|
78 |
mode7135Set7, mode7135Set8, mode7135Set9, mode7135Set10, mode7135Set11, mode7135Set12}; |
|
79 |
||
80 |
// Index 0 value must be zero for OFF state (up to 8 modes max, including moonlight)
|
|
81 |
byte byFETModes[10]; // FET output |
|
82 |
byte by7135Modes[10]; // 7135 output |
|
83 |
||
84 |
volatile byte currOutLvl1; // set to current: by7135modes[mode] |
|
85 |
volatile byte currOutLvl2; // set to current: byFETmodes[mode] |
|
86 |
||
87 |
// output to use for blinks on battery check mode
|
|
88 |
// Use 20,0 for a single-channel driver or 40,0 for a two-channel driver
|
|
89 |
#define MAX_BRIGHTNESS 0,255
|
|
90 |
#define MAX_7135 255,0
|
|
91 |
#define BLINK_BRIGHTNESS 40,0
|
|
92 |
#define OFF_OUTPUT 0,0
|
|
93 |
||
94 |
||
95 |
//---------------------------------------------------------------------------------------
|
|
96 |
#elif OUT_CHANNELS == 3 // Triple Channel |
|
97 |
//---------------------------------------------------------------------------------------
|
|
98 |
||
99 |
//------------------- MODE SETS (must be low to high) --------------------------
|
|
100 |
||
101 |
// 1 mode (max) max
|
|
102 |
PROGMEM const byte mode7135Set1[] = { 0}; // for single 7135 |
|
103 |
PROGMEM const byte mode7135sSet1[] ={ 0}; // for 7135 bank |
|
104 |
PROGMEM const byte modeFetSet1[] = { 255}; // FET only |
|
105 |
||
106 |
// 2 modes (7135-FET) ~10% max
|
|
107 |
PROGMEM const byte mode7135Set2[] = { 255, 0}; |
|
108 |
PROGMEM const byte mode7135sSet2[] ={ 0, 0}; |
|
109 |
PROGMEM const byte modeFetSet2[] = { 0, 255}; |
|
110 |
||
111 |
// 3 modes (7135-7135s-max) ~10% ~50% max
|
|
112 |
PROGMEM const byte mode7135Set3[] = { 255, 0, 0}; |
|
113 |
PROGMEM const byte mode7135sSet3[] ={ 0, 255, 0}; |
|
114 |
PROGMEM const byte modeFetSet3[] = { 0, 0, 255}; |
|
115 |
||
116 |
// 4 modes (1.2-10-50-max) ~1.2% ~10% ~50% max
|
|
117 |
PROGMEM const byte mode7135Set4[] = { 30, 255, 0, 0}; |
|
118 |
PROGMEM const byte mode7135sSet4[] ={ 0, 0, 255, 0}; |
|
119 |
PROGMEM const byte modeFetSet4[] = { 0, 0, 0, 255}; |
|
120 |
||
121 |
// 5 modes (1.2-5-10-50-max) ~1.2% ~5% ~10% ~50% max
|
|
122 |
PROGMEM const byte mode7135Set5[] = { 30, 120, 255, 0, 0}; |
|
123 |
PROGMEM const byte mode7135sSet5[] ={ 0, 0, 0, 255, 0}; |
|
124 |
PROGMEM const byte modeFetSet5[] = { 0, 0, 0, 0, 255}; |
|
125 |
||
126 |
// 6 modes 0.8-2-5-10-50-max ~0.8% ~2% ~5% ~10% ~50% max
|
|
127 |
PROGMEM const byte mode7135Set6[] = { 20, 110, 255, 255, 0, 0}; |
|
128 |
PROGMEM const byte mode7135sSet6[] ={ 0, 0, 0, 0, 255, 0}; |
|
129 |
PROGMEM const byte modeFetSet6[] = { 0, 0, 0, 0, 0, 255}; |
|
130 |
||
131 |
// 7 modes (0.5-2.5-5-10-25-50-max) ~0.5% ~2.5% ~5% ~10% ~25% ~50% max
|
|
132 |
PROGMEM const byte mode7135Set7[] = { 12, 63, 150, 255, 255, 0, 0}; |
|
133 |
PROGMEM const byte mode7135sSet7[] ={ 0, 0, 0, 0, 120, 255, 0}; |
|
134 |
PROGMEM const byte modeFetSet7[] = { 0, 0, 0, 0, 0, 0, 255}; |
|
135 |
||
136 |
// 2 modes (all 7135s-FET) ~60% max
|
|
137 |
PROGMEM const byte mode7135Set8[] = { 255, 0}; |
|
138 |
PROGMEM const byte mode7135sSet8[] ={ 255, 0}; |
|
139 |
PROGMEM const byte modeFetSet8[] = { 0, 255}; |
|
140 |
||
141 |
PROGMEM const byte modeSetCnts[] = { |
|
142 |
sizeof(modeFetSet1), sizeof(modeFetSet2), sizeof(modeFetSet3), sizeof(modeFetSet4), sizeof(modeFetSet5), sizeof(modeFetSet6), |
|
143 |
sizeof(modeFetSet7), sizeof(modeFetSet8)}; |
|
144 |
||
145 |
const byte *modeTable7135[] = { mode7135Set1, mode7135Set2, mode7135Set3, mode7135Set4, |
|
146 |
mode7135Set5, mode7135Set6, mode7135Set7, mode7135Set8}; |
|
147 |
const byte *modeTable7135s[] = { mode7135sSet1, mode7135sSet2, mode7135sSet3, mode7135sSet4, |
|
148 |
mode7135sSet5, mode7135sSet6, mode7135sSet7, mode7135sSet8}; |
|
149 |
const byte *modeTableFet[] = { modeFetSet1, modeFetSet2, modeFetSet3, modeFetSet4, |
|
150 |
modeFetSet5, modeFetSet6, modeFetSet7, modeFetSet8}; |
|
151 |
||
152 |
// Index 0 value must be zero for OFF state (up to 8 modes max, including moonlight)
|
|
153 |
byte by7135Modes[10]; // one 7135 |
|
154 |
byte by7135sModes[10]; // bank of 7135s |
|
155 |
byte byFETModes[10]; // FET |
|
156 |
||
157 |
volatile byte currOutLvl1; // set to current: by7135Modes[mode] |
|
158 |
volatile byte currOutLvl2; // set to current: by7135sModes[mode] |
|
159 |
volatile byte currOutLvl3; // set to current: byFetModes[mode] |
|
160 |
||
161 |
// output to use for blinks on battery check mode
|
|
162 |
#define MAX_BRIGHTNESS 0,0,255
|
|
163 |
#define MAX_7135 255,0,0
|
|
164 |
#define BLINK_BRIGHTNESS 50,0,0 // use bout 20% of single 7135 |
|
165 |
#define OFF_OUTPUT 0,0,0
|
|
166 |
||
167 |
//---------------------------------------------------------------------------------------
|
|
168 |
#elif OUT_CHANNELS == 1 // single FET or single bank of 7135's |
|
169 |
//---------------------------------------------------------------------------------------
|
|
170 |
||
171 |
// 1 mode (max) max
|
|
172 |
PROGMEM const byte modeSet1[] = { 255}; |
|
173 |
||
174 |
// 2 modes (10-max) 10% max
|
|
175 |
PROGMEM const byte modeSet2[] = { 25, 255}; |
|
176 |
||
177 |
// 3 modes (5-35-max) 5% 35% max
|
|
178 |
PROGMEM const byte modeSet3[] = { 13, 89, 255 }; // Must be low to high |
|
179 |
||
180 |
// 4 modes (3-10-40-max) 3% 10% 40% max
|
|
181 |
PROGMEM const byte modeSet4[] = { 8, 25, 102, 255 }; // Must be low to high |
|
182 |
||
183 |
// 5 modes (3-5-10-40-max) 3% 5% 10% 40% max
|
|
184 |
PROGMEM const byte modeSet5[] = { 8, 13, 25, 102, 255 }; // Must be low to high |
|
185 |
||
186 |
// 6 modes (3-7-15-32-55-max) 3% 7% 15% 32% 55% max
|
|
187 |
PROGMEM const byte modeSet6[] = { 8, 18, 38, 56, 137, 255}; |
|
188 |
||
189 |
// 7 modes (3-5-10-18-40-65-max) 3% 5% 10% 18% 40% 65% max
|
|
190 |
PROGMEM const byte modeSet7[] = { 8, 13, 25, 46, 102, 166, 255 }; // Must be low to high |
|
191 |
||
192 |
// #8: 3 modes (10-25-50) 10% 25% 50%
|
|
193 |
PROGMEM const byte modeSet8[] = { 25, 64, 128 }; // Must be low to high |
|
194 |
||
195 |
// #9: 3 modes (3-20-max) 3% 20% max
|
|
196 |
PROGMEM const byte modeSet9[] = { 8, 51, 255 }; // Must be low to high |
|
197 |
||
198 |
// #10: 3 modes (3-40-max) 3% 40% max
|
|
199 |
PROGMEM const byte modeSet10[] = { 8, 102, 255 }; // Must be low to high |
|
200 |
||
201 |
// #11: 3 modes (10-35-max) 10% 35% max
|
|
202 |
PROGMEM const byte modeSet11[] = { 25, 89, 255 }; // Must be low to high |
|
203 |
||
204 |
// #12: 4 modes (5-15-55-max) 5% 15% 55% max
|
|
205 |
PROGMEM const byte modeSet12[] = { 13, 38, 137, 255}; |
|
206 |
||
207 |
||
208 |
PROGMEM const byte modeSetCnts[] = { |
|
209 |
sizeof(modeSet1), sizeof(modeSet2), sizeof(modeSet3), sizeof(modeSet4), sizeof(modeSet5), sizeof(modeSet6), |
|
210 |
sizeof(modeSet7), sizeof(modeSet8), sizeof(modeSet9), sizeof(modeSet10), sizeof(modeSet11), sizeof(modeSet12)}; |
|
211 |
||
212 |
const byte *(modeTable1Chan[]) = { |
|
213 |
modeSet1, modeSet2, modeSet3, modeSet4, modeSet5, modeSet6, |
|
214 |
modeSet7, modeSet8, modeSet9, modeSet10, modeSet11, modeSet12}; |
|
215 |
||
216 |
// Index 0 value must be zero for OFF state (up to 8 modes max, including moonlight)
|
|
217 |
byte byMainModes[10]; // main LED output |
|
218 |
#define byFETModes byMainModes // map references for FET modes to the single one channel modes |
|
219 |
||
220 |
volatile byte currOutLvl; // set to current: byMainModes[mode] |
|
221 |
||
222 |
// output to use for blinks on battery check mode
|
|
223 |
#define MAX_BRIGHTNESS 255
|
|
224 |
#define MAX_7135 25 // about 10% |
|
225 |
#define BLINK_BRIGHTNESS 20 // about 7.8% |
|
226 |
#define OFF_OUTPUT 0
|
|
227 |
||
228 |
#endif
|
|
229 |
||
230 |
||
231 |
#endif /* MODESETS_H_ */ |