一 前记
前几天,看到了一个笑话,一个朋友在群里吼道,老婆送的皮带,用了半年之后,怎么里面掉出来一个电路板,这个是是啥?
笔者看了回复道,哥们,老婆不放心你啊。
在这个万物都可智能的时代,产品不加上智能,都不好意思说你的产品是高科技产品。这不来了,客户提出新的需求了,他要做
做一个智能的灯。咋个智能法呢?
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 |