2222
2323#define TAG "vfx"
2424
25- #define VFX_PERIOD GDISP_NEED_TIMERFLUSH
26-
2725static vfx_config_t vfx = {
2826 .mode = DEFAULT_VFX_MODE ,
2927 .scale_factor = DEFAULT_VFX_SCALE_FACTOR ,
@@ -110,7 +108,6 @@ static void vfx_task(void *pvParameter)
110108 break ;
111109 }
112110 case 0x0E : { // 音樂頻譜-漸變-對數
113- uint8_t color_cnt = 0 ;
114111 uint16_t color_tmp = 0 ;
115112 uint16_t color_h = 0 ;
116113 uint16_t color_l = vfx .lightness ;
@@ -200,17 +197,13 @@ static void vfx_task(void *pvParameter)
200197 }
201198 }
202199
203- if (++ color_cnt % ( 16 / VFX_PERIOD ) == 0 ) {
204- color_h = ++ color_tmp ;
200+ if (color_tmp ++ == 511 ) {
201+ color_h = 0 ;
205202 } else {
206203 color_h = color_tmp ;
207204 }
208205
209- if (color_h > 511 ) {
210- color_h = 0 ;
211- }
212-
213- vTaskDelayUntil (& xLastWakeTime , VFX_PERIOD / portTICK_RATE_MS );
206+ vTaskDelayUntil (& xLastWakeTime , 16 / portTICK_RATE_MS );
214207 }
215208
216209 xEventGroupClearBits (user_event_group , AUDIO_INPUT_FFT_BIT );
@@ -308,7 +301,7 @@ static void vfx_task(void *pvParameter)
308301 }
309302 }
310303
311- vTaskDelayUntil (& xLastWakeTime , VFX_PERIOD / portTICK_RATE_MS );
304+ vTaskDelayUntil (& xLastWakeTime , 16 / portTICK_RATE_MS );
312305 }
313306
314307 xEventGroupClearBits (user_event_group , AUDIO_INPUT_FFT_BIT );
@@ -318,7 +311,6 @@ static void vfx_task(void *pvParameter)
318311 break ;
319312 }
320313 case 0x10 : { // 音樂頻譜-漸變-線性
321- uint8_t color_cnt = 0 ;
322314 uint16_t color_tmp = 0 ;
323315 uint16_t color_h = 0 ;
324316 uint16_t color_l = vfx .lightness ;
@@ -404,17 +396,13 @@ static void vfx_task(void *pvParameter)
404396 }
405397 }
406398
407- if (++ color_cnt % ( 16 / VFX_PERIOD ) == 0 ) {
408- color_h = ++ color_tmp ;
399+ if (color_tmp ++ == 511 ) {
400+ color_h = 0 ;
409401 } else {
410402 color_h = color_tmp ;
411403 }
412404
413- if (color_h > 511 ) {
414- color_h = 0 ;
415- }
416-
417- vTaskDelayUntil (& xLastWakeTime , VFX_PERIOD / portTICK_RATE_MS );
405+ vTaskDelayUntil (& xLastWakeTime , 16 / portTICK_RATE_MS );
418406 }
419407
420408 xEventGroupClearBits (user_event_group , AUDIO_INPUT_FFT_BIT );
@@ -508,7 +496,7 @@ static void vfx_task(void *pvParameter)
508496 }
509497 }
510498
511- vTaskDelayUntil (& xLastWakeTime , VFX_PERIOD / portTICK_RATE_MS );
499+ vTaskDelayUntil (& xLastWakeTime , 16 / portTICK_RATE_MS );
512500 }
513501
514502 xEventGroupClearBits (user_event_group , AUDIO_INPUT_FFT_BIT );
@@ -560,7 +548,7 @@ static void vfx_task(void *pvParameter)
560548 }
561549 }
562550
563- vTaskDelayUntil (& xLastWakeTime , VFX_PERIOD / portTICK_RATE_MS );
551+ vTaskDelayUntil (& xLastWakeTime , 16 / portTICK_RATE_MS );
564552 }
565553 break ;
566554 }
@@ -600,12 +588,13 @@ static void vfx_task(void *pvParameter)
600588 }
601589 }
602590
603- color_h = ++ color_tmp ;
604- if (color_h > 511 ) {
591+ if (color_tmp ++ == 511 ) {
605592 color_h = 0 ;
593+ } else {
594+ color_h = color_tmp ;
606595 }
607596
608- vTaskDelayUntil (& xLastWakeTime , VFX_PERIOD / portTICK_RATE_MS );
597+ vTaskDelayUntil (& xLastWakeTime , 16 / portTICK_RATE_MS );
609598 }
610599 break ;
611600 }
@@ -629,14 +618,13 @@ static void vfx_task(void *pvParameter)
629618 color_h = 0 ;
630619 }
631620
632- vTaskDelayUntil (& xLastWakeTime , VFX_PERIOD / portTICK_RATE_MS );
621+ vTaskDelayUntil (& xLastWakeTime , 16 / portTICK_RATE_MS );
633622 }
634623 break ;
635624 }
636625 case VFX_MODE_IDX_BREATHING : { // 呼吸
637626 uint8_t scale_dir = 0 ;
638- uint8_t color_cnt = 0 ;
639- uint16_t color_h = 0 ;
627+ uint16_t color_h = esp_random () % 512 ;
640628 uint16_t color_l = 0 ;
641629
642630 gdispGSetBacklight (vfx_gdisp , vfx .backlight );
@@ -660,15 +648,11 @@ static void vfx_task(void *pvParameter)
660648 if (color_l -- == 0 ) {
661649 color_l = 0 ;
662650 scale_dir = 0 ;
663- }
664- }
665- if (++ color_cnt % 16 == 0 ) {
666- if (color_h ++ == 511 ) {
667- color_h = 0 ;
651+ color_h = esp_random () % 512 ;
668652 }
669653 }
670654
671- vTaskDelayUntil (& xLastWakeTime , VFX_PERIOD / portTICK_RATE_MS );
655+ vTaskDelayUntil (& xLastWakeTime , 16 / portTICK_RATE_MS );
672656 }
673657 break ;
674658 }
@@ -730,6 +714,7 @@ static void vfx_task(void *pvParameter)
730714
731715 vTaskDelayUntil (& xLastWakeTime , 8 / portTICK_RATE_MS );
732716 }
717+
733718 if (idx_base ++ == 511 ) {
734719 idx_base = - led_num ;
735720 }
@@ -794,6 +779,7 @@ static void vfx_task(void *pvParameter)
794779
795780 vTaskDelayUntil (& xLastWakeTime , 8 / portTICK_RATE_MS );
796781 }
782+
797783 if (idx_base ++ == 511 ) {
798784 idx_base = - led_num ;
799785 }
@@ -858,6 +844,7 @@ static void vfx_task(void *pvParameter)
858844
859845 vTaskDelayUntil (& xLastWakeTime , 8 / portTICK_RATE_MS );
860846 }
847+
861848 if (idx_base ++ == 511 ) {
862849 idx_base = - led_num ;
863850 }
@@ -887,8 +874,7 @@ static void vfx_task(void *pvParameter)
887874 vfx_draw_layer_number (num , 4 , color_h , color_l );
888875 vfx_draw_layer_number (num , 5 , color_h , color_l );
889876
890- color_h += 8 ;
891- if (color_h > 511 ) {
877+ if ((color_h += 8 ) == 512 ) {
892878 color_h = 0 ;
893879 }
894880
@@ -1010,10 +996,10 @@ static void vfx_task(void *pvParameter)
1010996 }
1011997 }
1012998
1013- if (frame_pre == 27 ) {
999+ if (frame_pre ++ == 27 ) {
10141000 frame_idx = 0 ;
10151001 } else {
1016- frame_idx = frame_pre + 1 ;
1002+ frame_idx = frame_pre ;
10171003 }
10181004
10191005 vTaskDelayUntil (& xLastWakeTime , 40 / portTICK_RATE_MS );
@@ -1045,10 +1031,10 @@ static void vfx_task(void *pvParameter)
10451031 }
10461032 }
10471033
1048- if (frame_pre == 0 ) {
1034+ if (frame_pre -- == 0 ) {
10491035 frame_idx = 27 ;
10501036 } else {
1051- frame_idx = frame_pre - 1 ;
1037+ frame_idx = frame_pre ;
10521038 }
10531039
10541040 vTaskDelayUntil (& xLastWakeTime , 40 / portTICK_RATE_MS );
@@ -1145,7 +1131,7 @@ static void vfx_task(void *pvParameter)
11451131 }
11461132 }
11471133
1148- vTaskDelayUntil (& xLastWakeTime , VFX_PERIOD / portTICK_RATE_MS );
1134+ vTaskDelayUntil (& xLastWakeTime , 16 / portTICK_RATE_MS );
11491135 }
11501136
11511137 xEventGroupClearBits (user_event_group , AUDIO_INPUT_FFT_BIT );
@@ -1241,20 +1227,19 @@ static void vfx_task(void *pvParameter)
12411227 }
12421228 }
12431229
1244- color_h += 8 ;
1245- if (color_h > 511 ) {
1230+ if ((color_h += 8 ) == 512 ) {
12461231 color_h = 0 ;
12471232 }
12481233 }
12491234
1250- if (++ color_cnt % ( 128 / VFX_PERIOD ) == 0 ) {
1251- color_tmp += 8 ;
1252- if (color_tmp > 511 ) {
1235+ if (color_cnt ++ == 7 ) {
1236+ color_cnt = 0 ;
1237+ if (( color_tmp += 8 ) == 512 ) {
12531238 color_tmp = 0 ;
12541239 }
12551240 }
12561241
1257- vTaskDelayUntil (& xLastWakeTime , VFX_PERIOD / portTICK_RATE_MS );
1242+ vTaskDelayUntil (& xLastWakeTime , 16 / portTICK_RATE_MS );
12581243 }
12591244
12601245 xEventGroupClearBits (user_event_group , AUDIO_INPUT_FFT_BIT );
@@ -1371,13 +1356,14 @@ static void vfx_task(void *pvParameter)
13711356 }
13721357 }
13731358
1374- if (++ color_cnt % (32 / VFX_PERIOD ) == 0 ) {
1359+ if (color_cnt ++ == 1 ) {
1360+ color_cnt = 0 ;
13751361 color_flg = 1 ;
13761362 } else {
13771363 color_flg = 0 ;
13781364 }
13791365
1380- vTaskDelayUntil (& xLastWakeTime , VFX_PERIOD / portTICK_RATE_MS );
1366+ vTaskDelayUntil (& xLastWakeTime , 16 / portTICK_RATE_MS );
13811367 }
13821368
13831369 xEventGroupClearBits (user_event_group , AUDIO_INPUT_FFT_BIT );
@@ -1476,7 +1462,7 @@ static void vfx_task(void *pvParameter)
14761462 }
14771463 }
14781464
1479- vTaskDelayUntil (& xLastWakeTime , VFX_PERIOD / portTICK_RATE_MS );
1465+ vTaskDelayUntil (& xLastWakeTime , 16 / portTICK_RATE_MS );
14801466 }
14811467
14821468 xEventGroupClearBits (user_event_group , AUDIO_INPUT_FFT_BIT );
@@ -1572,20 +1558,19 @@ static void vfx_task(void *pvParameter)
15721558 }
15731559 }
15741560
1575- color_h += 8 ;
1576- if (color_h > 511 ) {
1561+ if ((color_h += 8 ) == 512 ) {
15771562 color_h = 0 ;
15781563 }
15791564 }
15801565
1581- if (++ color_cnt % ( 128 / VFX_PERIOD ) == 0 ) {
1582- color_tmp += 8 ;
1583- if (color_tmp > 511 ) {
1566+ if (color_cnt ++ == 7 ) {
1567+ color_cnt = 0 ;
1568+ if (( color_tmp += 8 ) == 512 ) {
15841569 color_tmp = 0 ;
15851570 }
15861571 }
15871572
1588- vTaskDelayUntil (& xLastWakeTime , VFX_PERIOD / portTICK_RATE_MS );
1573+ vTaskDelayUntil (& xLastWakeTime , 16 / portTICK_RATE_MS );
15891574 }
15901575
15911576 xEventGroupClearBits (user_event_group , AUDIO_INPUT_FFT_BIT );
@@ -1702,13 +1687,14 @@ static void vfx_task(void *pvParameter)
17021687 }
17031688 }
17041689
1705- if (++ color_cnt % (32 / VFX_PERIOD ) == 0 ) {
1690+ if (color_cnt ++ == 1 ) {
1691+ color_cnt = 0 ;
17061692 color_flg = 1 ;
17071693 } else {
17081694 color_flg = 0 ;
17091695 }
17101696
1711- vTaskDelayUntil (& xLastWakeTime , VFX_PERIOD / portTICK_RATE_MS );
1697+ vTaskDelayUntil (& xLastWakeTime , 16 / portTICK_RATE_MS );
17121698 }
17131699
17141700 xEventGroupClearBits (user_event_group , AUDIO_INPUT_FFT_BIT );
0 commit comments