forked from PAWPAW/lib_rgb
新增一个单色示例
This commit is contained in:
29
examples/app_vol_level_smooth_example/src/main.xc
Normal file
29
examples/app_vol_level_smooth_example/src/main.xc
Normal file
@@ -0,0 +1,29 @@
|
||||
/** @brief 测试音量响应&HSV色彩循环
|
||||
*
|
||||
* 此函数不断地循环通过HSV色彩空间,并根据音量水平来更新RGB条的颜色。
|
||||
* 每个颜色组都会根据音量水平的随机值来更新其亮度。当前色相值从红色开始,
|
||||
* 并在每次循环中更新,以通过HSV色彩空间进行循环。每次循环后,将当前颜色
|
||||
* 应用到RGB条的相应组中。此函数旨在并发执行,以模拟实时音乐响应的灯光效果。
|
||||
* @author Vergil Wong
|
||||
* @date 2023-11-25
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
|
||||
#include <platform.h> // 包含对封装的定义,引用以使用 on tile[] 语法
|
||||
|
||||
extern "C"{
|
||||
void vol_level_smooth_example();
|
||||
}
|
||||
|
||||
int main() // 定义主函数
|
||||
{
|
||||
par
|
||||
{
|
||||
on tile[1]:
|
||||
{
|
||||
vol_level_smooth_example();
|
||||
}
|
||||
}
|
||||
return 0; // 返回0,表示程序正常结束
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h> // 包含基本的输入输出函数
|
||||
#include "rgb_effect.h"
|
||||
#include "timer.h"
|
||||
|
||||
#define DELAY_DECREASE 40 // 降低亮度时的额外延迟
|
||||
void vol_level_smooth_example()
|
||||
{
|
||||
uint32_t buf[NUM_RGBS]; // 定义一个用于存储RGB值的缓冲区,大小由NUM_RGBS宏确定
|
||||
uint32_t current_color[NUM_RGB_GROUPS] = {0xFF0000, 0xFF0000};
|
||||
|
||||
srand(1); // 初始化随机数种子
|
||||
size_t random_levels[NUM_RGB_GROUPS];
|
||||
size_t previous_levels[NUM_RGB_GROUPS] = {0}; // 存储先前的音量级别
|
||||
while (1)
|
||||
{
|
||||
for (size_t i = 0; i < NUM_RGB_GROUPS; i++)
|
||||
{
|
||||
*(random_levels + i) = get_volume_level(rand() % 101 - 100);
|
||||
// 如果新的级别低于之前的级别,逐渐降低
|
||||
while (previous_levels[i] > random_levels[i])
|
||||
{
|
||||
previous_levels[i]--; // 降低当前级别
|
||||
// 用当前颜色和级别填充渐变
|
||||
fill_gradient_with_groups(buf, current_color, previous_levels);
|
||||
delay_milliseconds(DELAY_DECREASE); // 延迟
|
||||
}
|
||||
}
|
||||
|
||||
// 用当前渐变颜色填充RGB数组,然后发送给rgb阵列
|
||||
fill_gradient_with_groups(buf, current_color, random_levels);
|
||||
// 延迟以控制显示持续时间
|
||||
delay_milliseconds(DELAY_TIME_RGB);
|
||||
|
||||
// 更新先前的音量级别
|
||||
for (size_t i = 0; i < NUM_RGB_GROUPS; i++)
|
||||
{
|
||||
previous_levels[i] = random_levels[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user