-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathARGB_Effects.h
More file actions
444 lines (421 loc) · 17 KB
/
Copy pathARGB_Effects.h
File metadata and controls
444 lines (421 loc) · 17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
/**
*******************************************
* @file ARGB_Effects.h
* @author LED Effects Library
* @version 1.0
* @date 14-Oct-2025
* @brief Header file for ARGB LED Effects Library
* @note 56 stunning LED effects for ARGB strips
*******************************************
*/
#ifndef ARGB_EFFECTS_H_
#define ARGB_EFFECTS_H_
#include "ARGB.h"
#include <math.h>
#include <stdlib.h>
// 预定义颜色常量
#define COLOR_BLACK (ARGB_RGB){0, 0, 0}
#define COLOR_DIMGRAY (ARGB_RGB){105, 105, 105}
#define COLOR_GRAY (ARGB_RGB){128, 128, 128}
#define COLOR_DARK_GRAY (ARGB_RGB){169, 169, 169}
#define COLOR_SILVER (ARGB_RGB){192, 192, 192}
#define COLOR_LIGHT_GRAY (ARGB_RGB){211, 211, 211}
#define COLOR_GAINSBORO (ARGB_RGB){220, 220, 220}
#define COLOR_WHITE_SMOKE (ARGB_RGB){245, 245, 245}
#define COLOR_WHITE (ARGB_RGB){255, 255, 255}
#define COLOR_SNOW (ARGB_RGB){255, 250, 250}
#define COLOR_IRON_GRAY (ARGB_RGB){98, 91, 87}
#define COLOR_SAND_BEIGE (ARGB_RGB){230, 195, 195}
#define COLOR_ROSY_BROWN (ARGB_RGB){188, 143, 143}
#define COLOR_LIGHT_CORAL (ARGB_RGB){240, 128, 128}
#define COLOR_INDIAN_RED (ARGB_RGB){205, 92, 92}
#define COLOR_BROWN (ARGB_RGB){165, 42, 42}
#define COLOR_FIRE_BRICK (ARGB_RGB){178, 34, 34}
#define COLOR_MAROON (ARGB_RGB){128, 0, 0}
#define COLOR_DARK_RED (ARGB_RGB){139, 0, 0}
#define COLOR_STRONG_RED (ARGB_RGB){230, 0, 0}
#define COLOR_RED (ARGB_RGB){255, 0, 0}
#define COLOR_PERSIMMON (ARGB_RGB){255, 77, 64}
#define COLOR_MISTY_ROSE (ARGB_RGB){255, 228, 225}
#define COLOR_SALMON (ARGB_RGB){250, 128, 114}
#define COLOR_SCARLET (ARGB_RGB){255, 36, 0}
#define COLOR_TOMATO (ARGB_RGB){255, 99, 71}
#define COLOR_DARK_SALMON (ARGB_RGB){233, 150, 122}
#define COLOR_CORAL (ARGB_RGB){255, 127, 80}
#define COLOR_ORANGE_RED (ARGB_RGB){255, 69, 0}
#define COLOR_LIGHT_SALMON (ARGB_RGB){255, 160, 122}
#define COLOR_VERMILION (ARGB_RGB){255, 77, 0}
#define COLOR_SIENNA (ARGB_RGB){160, 82, 45}
#define COLOR_TROPICAL_ORANGE (ARGB_RGB){255, 128, 51}
#define COLOR_CAMEL (ARGB_RGB){161, 107, 71}
#define COLOR_APRICOT (ARGB_RGB){230, 153, 102}
#define COLOR_COCONUT_BROWN (ARGB_RGB){77, 31, 0}
#define COLOR_SEASHELL (ARGB_RGB){255, 245, 238}
#define COLOR_SADDLE_BROWN (ARGB_RGB){139, 69, 19}
#define COLOR_CHOCOLATE (ARGB_RGB){210, 105, 30}
#define COLOR_BURNT_ORANGE (ARGB_RGB){204, 85, 0}
#define COLOR_SUN_ORANGE (ARGB_RGB){255, 115, 0}
#define COLOR_PEACH_PUFF (ARGB_RGB){255, 218, 185}
#define COLOR_SAND_BROWN (ARGB_RGB){244, 164, 96}
#define COLOR_BRONZE (ARGB_RGB){184, 115, 51}
#define COLOR_LINEN (ARGB_RGB){250, 240, 230}
#define COLOR_HONEY_ORANGE (ARGB_RGB){255, 179, 102}
#define COLOR_PERU (ARGB_RGB){205, 133, 63}
#define COLOR_SEPIA (ARGB_RGB){112, 66, 20}
#define COLOR_OCHER (ARGB_RGB){204, 119, 34}
#define COLOR_BISQUE (ARGB_RGB){255, 228, 196}
#define COLOR_TANGERINE (ARGB_RGB){242, 133, 0}
#define COLOR_DARK_ORANGE (ARGB_RGB){255, 140, 0}
#define COLOR_ANTIQUE_WHITE (ARGB_RGB){250, 235, 215}
#define COLOR_TAN (ARGB_RGB){210, 180, 140}
#define COLOR_BURLY_WOOD (ARGB_RGB){222, 184, 135}
#define COLOR_BLANCHED_ALMOND (ARGB_RGB){255, 235, 205}
#define COLOR_NAVAJO_WHITE (ARGB_RGB){255, 222, 173}
#define COLOR_MARIGOLD (ARGB_RGB){255, 153, 0}
#define COLOR_PAPAYA_WHIP (ARGB_RGB){255, 239, 213}
#define COLOR_PALE_OCRE (ARGB_RGB){204, 179, 140}
#define COLOR_KHAKI (ARGB_RGB){153, 107, 31}
#define COLOR_MOCCASIN (ARGB_RGB){255, 228, 181}
#define COLOR_OLD_LACE (ARGB_RGB){253, 245, 230}
#define COLOR_WHEAT (ARGB_RGB){245, 222, 179}
#define COLOR_PEACH (ARGB_RGB){255, 229, 180}
#define COLOR_ORANGE (ARGB_RGB){255, 165, 0}
#define COLOR_FLORAL_WHITE (ARGB_RGB){255, 250, 240}
#define COLOR_GOLDENROD (ARGB_RGB){218, 165, 32}
#define COLOR_DARK_GOLDENROD (ARGB_RGB){184, 134, 11}
#define COLOR_COFFEE (ARGB_RGB){77, 57, 0}
#define COLOR_JASMINE (ARGB_RGB){230, 195, 92}
#define COLOR_AMBER (ARGB_RGB){255, 191, 0}
#define COLOR_CORNSILK (ARGB_RGB){255, 248, 220}
#define COLOR_CHROME_YELLOW (ARGB_RGB){230, 184, 0}
#define COLOR_GOLDEN (ARGB_RGB){255, 215, 0}
#define COLOR_LEMON_CHIFFON (ARGB_RGB){255, 250, 205}
#define COLOR_LIGHT_KHAKI (ARGB_RGB){240, 230, 140}
#define COLOR_PALE_GOLDENROD (ARGB_RGB){238, 232, 170}
#define COLOR_DARK_KHAKI (ARGB_RGB){189, 183, 107}
#define COLOR_MIMOSA (ARGB_RGB){230, 217, 51}
#define COLOR_CREAM (ARGB_RGB){255, 253, 208}
#define COLOR_IVORY (ARGB_RGB){255, 255, 240}
#define COLOR_BEIGE (ARGB_RGB){245, 245, 220}
#define COLOR_LIGHT_YELLOW (ARGB_RGB){255, 255, 224}
#define COLOR_LIGHT_GOLDENROD_YELLOW (ARGB_RGB){250, 250, 210}
#define COLOR_CHAMPAGNE_YELLOW (ARGB_RGB){255, 255, 153}
#define COLOR_MUSTARD (ARGB_RGB){204, 204, 77}
#define COLOR_MOON_YELLOW (ARGB_RGB){255, 255, 77}
#define COLOR_OLIVE (ARGB_RGB){128, 128, 0}
#define COLOR_CANARY_YELLOW (ARGB_RGB){255, 255, 0}
#define COLOR_YELLOW (ARGB_RGB){255, 255, 0}
#define COLOR_MOSS_GREEN (ARGB_RGB){105, 119, 35}
#define COLOR_LIGHT_LIME (ARGB_RGB){204, 255, 0}
#define COLOR_OLIVE_DRAB (ARGB_RGB){107, 142, 35}
#define COLOR_YELLOW_GREEN (ARGB_RGB){154, 205, 50}
#define COLOR_DARK_OLIVE_GREEN (ARGB_RGB){85, 107, 47}
#define COLOR_APPLE_GREEN (ARGB_RGB){140, 230, 0}
#define COLOR_GREEN_YELLOW (ARGB_RGB){173, 255, 47}
#define COLOR_GRASS_GREEN (ARGB_RGB){153, 230, 77}
#define COLOR_LAWN_GREEN (ARGB_RGB){124, 252, 0}
#define COLOR_CHARTREUSE (ARGB_RGB){127, 255, 0}
#define COLOR_FOLIAGE_GREEN (ARGB_RGB){115, 184, 57}
#define COLOR_FRESH_LEAVES (ARGB_RGB){153, 255, 77}
#define COLOR_BRIGHT_GREEN (ARGB_RGB){102, 255, 0}
#define COLOR_COBALT_GREEN (ARGB_RGB){102, 255, 89}
#define COLOR_HONEYDEW (ARGB_RGB){240, 255, 240}
#define COLOR_DARK_SEA_GREEN (ARGB_RGB){143, 188, 143}
#define COLOR_LIGHT_GREEN (ARGB_RGB){144, 238, 144}
#define COLOR_PALE_GREEN (ARGB_RGB){152, 251, 152}
#define COLOR_IVY_GREEN (ARGB_RGB){54, 191, 54}
#define COLOR_FOREST_GREEN (ARGB_RGB){34, 139, 34}
#define COLOR_LIME_GREEN (ARGB_RGB){50, 205, 50}
#define COLOR_DARK_GREEN (ARGB_RGB){0, 100, 0}
#define COLOR_GREEN (ARGB_RGB){0, 128, 0}
#define COLOR_LIME (ARGB_RGB){0, 255, 0}
#define COLOR_MALACHITE (ARGB_RGB){34, 195, 46}
#define COLOR_MINT (ARGB_RGB){22, 152, 43}
#define COLOR_CELADON_GREEN (ARGB_RGB){115, 230, 140}
#define COLOR_EMERALD (ARGB_RGB){80, 200, 120}
#define COLOR_TURQUOISE_GREEN (ARGB_RGB){77, 230, 128}
#define COLOR_VERIDIAN (ARGB_RGB){18, 116, 54}
#define COLOR_HORIZON_BLUE (ARGB_RGB){166, 255, 204}
#define COLOR_SEA_GREEN (ARGB_RGB){46, 139, 87}
#define COLOR_MEDIUM_SEA_GREEN (ARGB_RGB){60, 179, 113}
#define COLOR_MINT_CREAM (ARGB_RGB){245, 255, 250}
#define COLOR_SPRING_GREEN (ARGB_RGB){0, 255, 128}
#define COLOR_PEACOCK_GREEN (ARGB_RGB){0, 161, 92}
#define COLOR_MEDIUM_SPRING_GREEN (ARGB_RGB){0, 250, 154}
#define COLOR_MEDIUM_AQUAMARINE (ARGB_RGB){102, 205, 170}
#define COLOR_AQUAMARINE (ARGB_RGB){127, 255, 212}
#define COLOR_CYAN_BLUE (ARGB_RGB){13, 191, 140}
#define COLOR_AQUA_BLUE (ARGB_RGB){102, 255, 230}
#define COLOR_TURQUOISE_BLUE (ARGB_RGB){51, 230, 204}
#define COLOR_TURQUOISE (ARGB_RGB){48, 213, 200}
#define COLOR_LIGHT_SEA_GREEN (ARGB_RGB){32, 178, 170}
#define COLOR_MEDIUM_TURQUOISE (ARGB_RGB){72, 209, 204}
#define COLOR_LIGHT_CYAN (ARGB_RGB){224, 255, 255}
#define COLOR_BABY_BLUE (ARGB_RGB){224, 255, 255}
#define COLOR_PALE_TURQUOISE (ARGB_RGB){175, 238, 238}
#define COLOR_DARK_SLATE_GRAY (ARGB_RGB){47, 79, 79}
#define COLOR_TEAL (ARGB_RGB){0, 128, 128}
#define COLOR_DARK_CYAN (ARGB_RGB){0, 139, 139}
#define COLOR_CYAN (ARGB_RGB){0, 255, 255}
#define COLOR_AQUA (ARGB_RGB){175, 223, 228}
#define COLOR_DARK_TURQUOISE (ARGB_RGB){0, 206, 209}
#define COLOR_CADET_BLUE (ARGB_RGB){95, 158, 160}
#define COLOR_PEACOCK_BLUE (ARGB_RGB){0, 128, 140}
#define COLOR_POWDER_BLUE (ARGB_RGB){176, 224, 230}
#define COLOR_STRONG_BLUE (ARGB_RGB){0, 99, 116}
#define COLOR_LIGHT_BLUE (ARGB_RGB){173, 216, 230}
#define COLOR_PALE_BLUE (ARGB_RGB){122, 184, 204}
#define COLOR_SAXE_BLUE (ARGB_RGB){71, 152, 179}
#define COLOR_DEEP_SKY_BLUE (ARGB_RGB){0, 191, 255}
#define COLOR_SKY_BLUE (ARGB_RGB){135, 206, 235}
#define COLOR_LIGHT_SKY_BLUE (ARGB_RGB){135, 206, 250}
#define COLOR_MARINE_BLUE (ARGB_RGB){0, 71, 125}
#define COLOR_PRUSSIAN_BLUE (ARGB_RGB){0, 49, 83}
#define COLOR_STEEL_BLUE (ARGB_RGB){70, 130, 180}
#define COLOR_ALICE_BLUE (ARGB_RGB){240, 248, 255}
#define COLOR_SLATE_GRAY (ARGB_RGB){112, 128, 144}
#define COLOR_LIGHT_SLATE_GRAY (ARGB_RGB){119, 136, 153}
#define COLOR_DODGER_BLUE (ARGB_RGB){30, 144, 255}
#define COLOR_MINERAL_BLUE (ARGB_RGB){0, 77, 153}
#define COLOR_AZURE (ARGB_RGB){0, 127, 255}
#define COLOR_WEDGWOOD_BLUE (ARGB_RGB){86, 134, 191}
#define COLOR_LIGHT_STEEL_BLUE (ARGB_RGB){176, 196, 222}
#define COLOR_COBALT_BLUE (ARGB_RGB){0, 71, 171}
#define COLOR_PALE_DENIM (ARGB_RGB){94, 134, 193}
#define COLOR_CORNFLOWER_BLUE (ARGB_RGB){100, 149, 237}
#define COLOR_SALVIA_BLUE (ARGB_RGB){77, 128, 230}
#define COLOR_DARK_POWDER_BLUE (ARGB_RGB){0, 51, 153}
#define COLOR_SAPPHIRE (ARGB_RGB){8, 37, 103}
#define COLOR_INTERNATIONAL_KLEIN_BLUE (ARGB_RGB){0, 47, 167}
#define COLOR_CERULEAN_BLUE (ARGB_RGB){42, 82, 190}
#define COLOR_ROYAL_BLUE (ARGB_RGB){65, 105, 225}
#define COLOR_DARK_MINERAL_BLUE (ARGB_RGB){36, 54, 125}
#define COLOR_ULTRAMARINE (ARGB_RGB){0, 51, 255}
#define COLOR_LAPIS_LAZULI (ARGB_RGB){13, 51, 255}
#define COLOR_GHOST_WHITE (ARGB_RGB){248, 248, 255}
#define COLOR_LAVENDER (ARGB_RGB){230, 230, 250}
#define COLOR_PERIWINKLE (ARGB_RGB){204, 204, 255}
#define COLOR_MIDNIGHT_BLUE (ARGB_RGB){25, 25, 112}
#define COLOR_NAVY_BLUE (ARGB_RGB){0, 0, 128}
#define COLOR_DARK_BLUE (ARGB_RGB){0, 0, 139}
#define COLOR_MEDIUM_BLUE (ARGB_RGB){0, 0, 205}
#define COLOR_BLUE (ARGB_RGB){0, 0, 255}
#define COLOR_WISTERIA (ARGB_RGB){92, 80, 230}
#define COLOR_DARK_SLATE_BLUE (ARGB_RGB){72, 61, 139}
#define COLOR_SLATE_BLUE (ARGB_RGB){106, 90, 205}
#define COLOR_MEDIUM_SLATE_BLUE (ARGB_RGB){123, 104, 238}
#define COLOR_MAUVE (ARGB_RGB){102, 64, 255}
#define COLOR_LILAC (ARGB_RGB){179, 153, 255}
#define COLOR_MEDIUM_PURPLE (ARGB_RGB){147, 112, 219}
#define COLOR_AMETHYST (ARGB_RGB){102, 51, 204}
#define COLOR_GRAYISH_PURPLE (ARGB_RGB){134, 116, 161}
#define COLOR_HELIOTROPE (ARGB_RGB){80, 0, 184}
#define COLOR_MINERAL_VIOLET (ARGB_RGB){184, 161, 207}
#define COLOR_BLUE_VIOLET (ARGB_RGB){138, 43, 226}
#define COLOR_VIOLET (ARGB_RGB){139, 0, 255}
#define COLOR_INDIGO (ARGB_RGB){75, 0, 128}
#define COLOR_DARK_ORCHID (ARGB_RGB){153, 50, 204}
#define COLOR_DARK_VIOLET (ARGB_RGB){148, 0, 211}
#define COLOR_PANSY (ARGB_RGB){116, 0, 161}
#define COLOR_MALLOW (ARGB_RGB){217, 77, 255}
#define COLOR_OPERA_MAUVE (ARGB_RGB){230, 128, 255}
#define COLOR_MEDIUM_ORCHID (ARGB_RGB){186, 85, 211}
#define COLOR_PAIL_LILAC (ARGB_RGB){230, 207, 230}
#define COLOR_THISTLE (ARGB_RGB){216, 191, 216}
#define COLOR_CLEMATIS (ARGB_RGB){204, 163, 204}
#define COLOR_PLUM (ARGB_RGB){221, 160, 221}
#define COLOR_LIGHT_VIOLET (ARGB_RGB){238, 130, 238}
#define COLOR_PURPLE (ARGB_RGB){128, 0, 128}
#define COLOR_DARK_MAGENTA (ARGB_RGB){139, 0, 139}
#define COLOR_MAGENTA (ARGB_RGB){255, 0, 255}
#define COLOR_FUCHSIA (ARGB_RGB){244, 0, 161}
#define COLOR_ORCHID (ARGB_RGB){218, 112, 214}
#define COLOR_PEARL_PINK (ARGB_RGB){255, 179, 230}
#define COLOR_OLD_ROSE (ARGB_RGB){184, 87, 152}
#define COLOR_ROSE_PINK (ARGB_RGB){255, 102, 204}
#define COLOR_MEDIUM_VIOLET_RED (ARGB_RGB){199, 21, 133}
#define COLOR_MAGENTA_ROSE (ARGB_RGB){255, 13, 166}
#define COLOR_ROSE (ARGB_RGB){255, 0, 127}
#define COLOR_RUBY (ARGB_RGB){204, 0, 128}
#define COLOR_CAMELLIA (ARGB_RGB){230, 57, 149}
#define COLOR_DEEP_PINK (ARGB_RGB){255, 20, 147}
#define COLOR_FLAMINGO (ARGB_RGB){230, 138, 184}
#define COLOR_CORAL_PINK (ARGB_RGB){255, 128, 191}
#define COLOR_HOT_PINK (ARGB_RGB){255, 105, 180}
#define COLOR_BURGUNDY (ARGB_RGB){71, 0, 36}
#define COLOR_SPIEL_RED (ARGB_RGB){255, 115, 179}
#define COLOR_CARMINE (ARGB_RGB){230, 0, 92}
#define COLOR_BABY_PINK (ARGB_RGB){255, 217, 230}
#define COLOR_CARDINAL_RED (ARGB_RGB){153, 0, 54}
#define COLOR_LAVENDER_BLUSH (ARGB_RGB){255, 240, 245}
#define COLOR_PALE_VIOLET_RED (ARGB_RGB){219, 112, 147}
#define COLOR_CERISE (ARGB_RGB){222, 49, 99}
#define COLOR_SALMON_PINK (ARGB_RGB){255, 128, 153}
#define COLOR_CRIMSON (ARGB_RGB){220, 20, 60}
#define COLOR_PINK (ARGB_RGB){255, 192, 203}
#define COLOR_LIGHT_PINK (ARGB_RGB){255, 182, 193}
#define COLOR_SHELL_PINK (ARGB_RGB){255, 179, 191}
#define COLOR_ALIZARIN_CRIMSON (ARGB_RGB){227, 38, 54}
/**
* @brief Effect mode enumeration
*/
typedef enum {
FX_MODE_STATIC = 0,
FX_MODE_BLINK,
FX_MODE_BREATH,//Speed大点才明显,不然跟效果跟BLINK很像
FX_MODE_COLOR_WIPE,
FX_MODE_COLOR_WIPE_INV,
FX_MODE_COLOR_WIPE_REV,
FX_MODE_COLOR_WIPE_REV_INV,
FX_MODE_COLOR_WIPE_RANDOM,
FX_MODE_RANDOM_COLOR,
FX_MODE_SINGLE_DYNAMIC,
FX_MODE_MULTI_DYNAMIC,
FX_MODE_RAINBOW,
FX_MODE_RAINBOW_CYCLE,
FX_MODE_SCAN,
FX_MODE_DUAL_SCAN,
FX_MODE_FADE,
FX_MODE_THEATER_CHASE,
FX_MODE_THEATER_CHASE_RAINBOW,
FX_MODE_RUNNING_LIGHTS,
FX_MODE_TWINKLE,
FX_MODE_TWINKLE_RANDOM,
FX_MODE_TWINKLE_FADE,
FX_MODE_TWINKLE_FADE_RANDOM,
FX_MODE_SPARKLE,
FX_MODE_FLASH_SPARKLE,
FX_MODE_HYPER_SPARKLE,
FX_MODE_STROBE,
FX_MODE_STROBE_RAINBOW,
FX_MODE_MULTI_STROBE,
FX_MODE_BLINK_RAINBOW,
FX_MODE_CHASE_WHITE,
FX_MODE_CHASE_COLOR,
FX_MODE_CHASE_RANDOM,
FX_MODE_CHASE_RAINBOW,
FX_MODE_CHASE_FLASH,
FX_MODE_CHASE_FLASH_RANDOM,
FX_MODE_CHASE_RAINBOW_WHITE,
FX_MODE_CHASE_BLACKOUT,
FX_MODE_CHASE_BLACKOUT_RAINBOW,
FX_MODE_COLOR_SWEEP_RANDOM,
FX_MODE_RUNNING_COLOR,
FX_MODE_RUNNING_RED_BLUE,
FX_MODE_RUNNING_RANDOM,
FX_MODE_LARSON_SCANNER,
FX_MODE_COMET,
FX_MODE_FIREWORKS,
FX_MODE_FIREWORKS_RANDOM,
FX_MODE_MERRY_CHRISTMAS,
FX_MODE_FIRE_FLICKER,
FX_MODE_FIRE_FLICKER_SOFT,
FX_MODE_FIRE_FLICKER_INTENSE,
FX_MODE_CIRCUS_COMBUSTUS,
FX_MODE_HALLOWEEN,
FX_MODE_BICOLOR_CHASE,
FX_MODE_TRICOLOR_CHASE,
FX_MODE_TWINKLEFOX,
FX_MODE_COUNT
} ARGB_FX_MODE;
/**
* @brief 效果句柄结构体
*/
typedef struct {
ARGB_HandleTypeDef *hargb; ///< ARGB句柄指针
ARGB_FX_MODE mode; ///< 当前效果模式
ARGB_RGB color; ///< 主颜色
ARGB_RGB color2; ///< 第二颜色
ARGB_RGB color3; ///< 第三颜色
uint16_t speed; ///< 效果速度
uint32_t counter; ///< 内部计数器
uint16_t aux_param; ///< 辅助参数1
uint16_t aux_param2; ///< 辅助参数2
uint8_t reverse; ///< 反向标志
} ARGB_FX_HandleTypeDef;
// 初始化函数
/**
* @brief 初始化效果句柄
* @param[in] hfx 效果句柄指针
* @param[in] hargb ARGB句柄指针
*/
void ARGB_FX_Init(ARGB_FX_HandleTypeDef *hfx, ARGB_HandleTypeDef *hargb);
// 配置函数
/**
* @brief 设置效果模式
* @param[in] hfx 效果句柄指针
* @param[in] mode 效果模式
*/
void ARGB_FX_SetMode(ARGB_FX_HandleTypeDef *hfx, ARGB_FX_MODE mode);
/**
* @brief 设置主颜色
* @param[in] hfx 效果句柄指针
* @param[in] color RGB颜色
*/
void ARGB_FX_SetColor(ARGB_FX_HandleTypeDef *hfx, ARGB_RGB color);
/**
* @brief 设置多个颜色
* @param[in] hfx 效果句柄指针
* @param[in] c1 第一颜色
* @param[in] c2 第二颜色
* @param[in] c3 第三颜色
*/
void ARGB_FX_SetColors(ARGB_FX_HandleTypeDef *hfx, ARGB_RGB c1, ARGB_RGB c2,
ARGB_RGB c3);
/**
* @brief 设置效果速度
* @param[in] hfx 效果句柄指针
* @param[in] speed 速度值(越小越快)
*/
void ARGB_FX_SetSpeed(ARGB_FX_HandleTypeDef *hfx, uint16_t speed);
/**
* @brief 设置反向标志
* @param[in] hfx 效果句柄指针
* @param[in] reverse 反向标志(0或1)
*/
void ARGB_FX_SetReverse(ARGB_FX_HandleTypeDef *hfx, uint8_t reverse);
// 服务函数
/**
* @brief 效果服务函数 - 需要周期性调用以更新效果
* @param[in] hfx 效果句柄指针
* @note 在主循环中调用此函数以持续更新LED效果
*/
void ARGB_FX_Service(ARGB_FX_HandleTypeDef *hfx);
// 工具函数
/**
* @brief 生成8位随机数
* @return 随机数 [0..255]
*/
uint8_t random8(void);
/**
* @brief 生成16位随机数
* @return 随机数 [0..65535]
*/
uint16_t random16(void);
/**
* @brief 生成32位随机数
* @return 随机数
*/
uint32_t random32(void);
/**
* @brief 生成指定范围内的8位随机数
* @param min 最小值
* @param max 最大值
* @return 随机数 [min..max-1]
*/
uint8_t random8_range(uint8_t min, uint8_t max);
/**
* @brief 色轮函数 - 生成彩虹色
* @param pos 位置 [0..255]
* @return RGB颜色
*/
ARGB_RGB color_wheel(uint8_t pos);
/**
* @brief 混合两种颜色
* @param c1 第一种颜色
* @param c2 第二种颜色
* @param blend 混合比例 [0..255]
* @return 混合后的颜色
*/
ARGB_RGB color_blend(ARGB_RGB c1, ARGB_RGB c2, uint8_t blend);
#endif /* ARGB_EFFECTS_H_ */