一 前记
前几天,看到了一个笑话,一个朋友在群里吼道,老婆送的皮带,用了半年之后,怎么里面掉出来一个电路板,这个是是啥?
笔者看了回复道,哥们,老婆不放心你啊。
在这个万物都可智能的时代,产品不加上智能,都不好意思说你的产品是高科技产品。这不来了,客户提出新的需求了,他要做
做一个智能的灯。咋个智能法呢?
1 有流光,冷白,暖白,渐变等灯光的效果可以切换。
2 可以根据时间和周围环境亮暗来调整灯光亮度。
3 可以通过手机APP和按键双重控制开关。
本着有求必应的态度,我这不就开始倒腾起来了。
二 代码解析
1 ble无线通信,这个就是通过APP下发命令进行解析,以前讲过ble的通信流程,这里不做赘述了。
2 灯光效果函数:
流光函数:
void app_fluxay_mode_set(void) { uint8_t tmp_rgb_a = OFF,tmp_rgb_b = OFF,tmp_rgb_c = OFF,tmp_rgb_d = OFF; #if 1 if(ON == fluxay_flow_four) { fluaxy_flow_mode_reset_out(); if(APP_MODE_ID_FLUXAY != app_xp_get_mode_id()) { app_xp_set_mode_id_no_flash(APP_MODE_ID_FLUXAY); } }
渐变灯函数:
void app_pwm_led_loop(int data,uint8_t from_state) { printf("app_pwm_led_loop data :%d\r\n",data); static uint8_t local_led_state = 0; //daylight if (data>=0&&data<=100) { app_pwm_rgb_stop(); local_led_state = 1; app_pwm_cw_on(100-data); app_pwm_ww_on(data); }
3 按键处理:
unsigned int key_debounce_filter( u32 mtrx_cur[], u32 filt_en ){ u32 kc = 0; #if (LONG_PRESS_KEY_POWER_OPTIMIZE) unsigned char matrix_differ = 0; #endif static u32 mtrx_pre[ARRAY_SIZE(drive_pins)]; static u32 mtrx_last[ARRAY_SIZE(drive_pins)]; foreach_arr(i, drive_pins){ u32 mtrx_tmp = mtrx_cur[i]; #if (STUCK_KEY_PROCESS_ENABLE) stuckKeyPress[i] = mtrx_tmp ? 1 : 0; #endif if(
4 传感器处理
一个光敏传感器,通过ADC信号,来采集光线的强度,这个后期进行专门的讲解。
三 效果展示
初步的demo已经搭建好,接下来就是产品的细节打磨和PCBA的适配了。
四 总结备忘
825x系列作为一个mcu+ble的平台芯片,在氛围灯市场占有一定的市场份额。具有性价比高,功耗低,功能强大等特点。
加上自研的系统,开发这个产品真是速度快啊。
作者:虚生 出处:https://www.cnblogs.com/dylancao/ 以音频和传感器算法为核心的智能可穿戴产品解决方案提供商 ,提供可穿戴智能软硬件解决方案的设计,开发和咨询服务。 勾搭热线:邮箱:1173496664@qq.com weixin:18019245820 市场技术对接群:347609188 |
![]() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2021-03-17 DRC音频处理算法原理解析及仿真结果
2019-03-17 shell脚本获取进程ID并杀死的实现及问题解析
2018-03-17 双系统Ubuntu无法访问Win10磁盘分区解决方法