Fork me on GitHub

一 前记

  前几天,看到了一个笑话,一个朋友在群里吼道,老婆送的皮带,用了半年之后,怎么里面掉出来一个电路板,这个是是啥?

笔者看了回复道,哥们,老婆不放心你啊。

  在这个万物都可智能的时代,产品不加上智能,都不好意思说你的产品是高科技产品。这不来了,客户提出新的需求了,他要做

做一个智能的灯。咋个智能法呢?

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的平台芯片,在氛围灯市场占有一定的市场份额。具有性价比高,功耗低,功能强大等特点。

加上自研的系统,开发这个产品真是速度快啊。

 

posted on 2022-03-17 18:44  虚生  阅读(432)  评论(0编辑  收藏  举报