小安派Knob-在例程上简单添加RGB颜色调光

[复制链接]
查看1288 | 回复18 | 2024-1-19 21:19:01 | 显示全部楼层 |阅读模式
小安派Knob的例程中有个可以通过旋钮调节LED色温和亮度的例程,在这个基础上简单添加上可以切换其他颜色的功能
这里以简单地红绿蓝为例,在枚举中添加RGB
  1. typedef enum {
  2.     LIGHT_CCK_WARM,
  3.     LIGHT_CCK_COOL,
  4.     //加入RGB枚举
  5.     LIGHT_CCK_R,
  6.     LIGHT_CCK_G,
  7.     LIGHT_CCK_B,
  8.     LIGHT_CCK_MAX,
  9. } LIGHT_CCK_TYPE;
复制代码
在处理旋钮点击的地方修改切换方式
  1. else if (LV_EVENT_CLICKED == code) {
  2.         // light_set_conf.light_cck = \
  3.         //                            (LIGHT_CCK_WARM == light_set_conf.light_cck) ? (LIGHT_CCK_COOL) : (LIGHT_CCK_WARM);
  4.         //修改灯光切换
  5.         if(light_set_conf.light_cck < LIGHT_CCK_MAX - 1 )
  6.             light_set_conf.light_cck += 1;
  7.         else
  8.             light_set_conf.light_cck = 0;
  9.         set_light_warm_cool();
  10.     }
复制代码
在处理PWM输出的地方加入计算RGB值的方法
  1. // if (LIGHT_CCK_COOL == light_xor.light_cck) {
  2.             //     pwm_RGB_start(light_xor.light_pwm, light_xor.light_pwm, light_xor.light_pwm);
  3.             //     // RGB_color = (0xFF * light_xor.light_pwm / 100) << 16 | (0xFF * light_xor.light_pwm / 100) << 8 | (0xFF * light_xor.light_pwm / 100) << 0;
  4.             // } else {
  5.             //     pwm_RGB_start(light_xor.light_pwm, light_xor.light_pwm, 0);
  6.             //     // RGB_color = (0xFF * light_xor.light_pwm / 100) << 16 | (0xFF * light_xor.light_pwm / 100) << 8 | (0x33 * light_xor.light_pwm / 100) << 0;
  7.             // }
  8.             //修改PWM输出
  9.             switch (light_xor.light_cck)
  10.             {
  11.                 case LIGHT_CCK_COOL:
  12.                     r = 100;
  13.                     g = 100;
  14.                     b = 100;
  15.                     break;
  16.                 case LIGHT_CCK_WARM:
  17.                     r = 100;
  18.                     g = 100;
  19.                     b = 0;
  20.                     break;
  21.                 case LIGHT_CCK_R:
  22.                     r = 100;
  23.                     g = 0;
  24.                     b = 0;
  25.                     break;
  26.                 case LIGHT_CCK_G:
  27.                     r = 0;
  28.                     g = 100;
  29.                     b = 0;
  30.                     break;
  31.                 case LIGHT_CCK_B:
  32.                     r = 0;
  33.                     g = 0;
  34.                     b = 100;
  35.                     break;
  36.                
  37.                 default:
  38.                     break;
  39.             }
  40.             pwm_RGB_start(light_xor.light_pwm*r/100, light_xor.light_pwm*g/100, light_xor.light_pwm*b/100);
复制代码
最终实现效果,点按切换颜色
WeChat_20240119205041 00_00_00-00_00_30.gif
旋转切换亮度
WeChat_20240119205028 00_00_00-00_00_30.gif

回复

使用道具 举报

18350766600@139 | 2024-1-19 22:04:17 | 显示全部楼层
666太厉害了
回复 支持 反对

使用道具 举报

bzhou830 | 2024-1-20 08:00:08 | 显示全部楼层
选择去发光,而不是被照亮
回复

使用道具 举报

wukong50 | 2024-1-20 08:29:37 | 显示全部楼层
学习了
回复

使用道具 举报

1084504793 | 2024-1-20 10:57:19 | 显示全部楼层
回复

使用道具 举报

WT_0213 | 2024-1-20 12:48:31 | 显示全部楼层
歪歪的小屏幕可以扭一扭吗
回复 支持 反对

使用道具 举报

timo | 2024-1-20 15:56:09 | 显示全部楼层
这也是“我歪了”吗?
回复 支持 反对

使用道具 举报

干簧管 | 2024-1-20 20:24:57 | 显示全部楼层
👍
回复

使用道具 举报

yuyy1989 | 2024-1-21 13:47:58 | 显示全部楼层
timo 发表于 2024-1-20 15:56
这也是“我歪了”吗?

开始看到外盒上的“我歪了”还纳闷呢,点亮屏幕才知道是这意思
回复 支持 反对

使用道具 举报

爱笑 | 2024-1-22 08:38:07 | 显示全部楼层
确实歪了
用心做好保姆工作
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则