"); //-->
| 功能设计 | 详细说明 |
| 工作模式 | 正常风 自然风:忽大忽小间隔 15 秒 睡眠风:每隔一小时自动降档,最后降到最低档 |
| 风速控制 | 编码器旋转控制风扇,顺时针旋转风速 +,逆时针旋转风速 - |
| 模式切换 | 编码器按钮短按切换模式。 |
| 本地定时 | 定时结束后自动关机,定时按键:无定时 -> 1 小时 -> 2 小时 -> 3 小时 -> 4 小时 -> 无定时。 |
| 指示灯显示 1 | 4 颗指示灯显示风速,4 颗指示灯指示 8 档风速,闪烁代表 1 档,常亮代表 2 档。4 颗指示灯还复用本地定时指示。 |
| 指示灯显示 2 | LED 有 8 颗,除指示风速 4 颗 LED 外,还有 4 颗指示灯。一颗 Wi-Fi 指示灯,指示 Wi-Fi 状态;其他三颗指示当前风扇模式。 |
| 电源 | 电源按键,控制风扇的启动和断电状态 |
| 设备配网 | 长按 Wi-Fi 按键,设备进入配网模式 |
void key_rotary_task(void)
{
INT8_T current_gear;
while(1) {
//得到当前档位
current_gear = get_cur_gear();
if((tuya_gpio_read(KEY_ROTARY_A) == FALSE) && (fan_state.on_off != FALSE)) {
while(tuya_gpio_read(KEY_ROTARY_A) == FALSE);
if(tuya_gpio_read(KEY_ROTARY_A) != tuya_gpio_read(KEY_ROTARY_B)) {
PR_NOTICE("A != B"); //顺时针方向
current_gear++;
if (current_gear > (MAX_GEAR_NUMBER-1)) {
current_gear = (MAX_GEAR_NUMBER-1);
}
fan_state.speed = g_fan_speed_gear[current_gear];
} else {
PR_NOTICE("A == B"); //逆时针方向
current_gear--;
if (current_gear < 0) {
current_gear = 0;
}
fan_state.speed = g_fan_speed_gear[current_gear];
}
/* 改变风扇状态:风速,模式,LED */
change_fan_state();
write_flash_fan_state();
PR_NOTICE("fan current_gear is : %d", current_gear);
}
tuya_hal_system_sleep(50);
}
}
//在初始化函数里创建任务
VOID_T fan_key_init(VOID_T)
{
......
tuya_hal_thread_create(NULL, "key_rotary_task", 512*4, TRD_PRIO_5, key_rotary_task, NULL);
}
/**
* @Function: hw_report_all_dp_status
* @Description: 上报所有 dp 点
* @Input: none
* @Output: none
* @Return: none
* @Others:
*/
VOID_T hw_report_all_dp_status(VOID_T)
{
OPERATE_RET op_ret = OPRT_OK;
INT_T dp_cnt = 0;
dp_cnt = 4;
/* 没有连接到路由器,退出 */
GW_WIFI_NW_STAT_E wifi_state = STAT_LOW_POWER;
get_wf_gw_nw_status(&wifi_state);
if (wifi_state <= STAT_AP_STA_DISC || wifi_state == STAT_STA_DISC) {
return;
}
TY_OBJ_DP_S *dp_arr = (TY_OBJ_DP_S *)Malloc(dp_cnt*SIZEOF(TY_OBJ_DP_S));
if(NULL == dp_arr) {
PR_ERR("malloc failed");
return;
}
memset(dp_arr, 0, dp_cnt*SIZEOF(TY_OBJ_DP_S));
dp_arr[0].dpid = fan_state.dp_id_switch;
dp_arr[0].type = PROP_BOOL;
dp_arr[0].time_stamp = 0;
dp_arr[0].value.dp_bool = fan_state.on_off;
dp_arr[1].dpid = fan_state.dp_id_mode;
dp_arr[1].type = PROP_ENUM;
dp_arr[1].time_stamp = 0;
dp_arr[1].value.dp_enum = fan_state.mode;
dp_arr[2].dpid = fan_state.dp_id_speed;
dp_arr[2].type = PROP_VALUE;
dp_arr[2].time_stamp = 0;
dp_arr[2].value.dp_value = fan_state.speed;
dp_arr[3].dpid = fan_state.dp_id_bright;
dp_arr[3].type = PROP_VALUE;
dp_arr[3].time_stamp = 0;
dp_arr[3].value.dp_value = fan_state.bright;
op_ret = dev_report_dp_json_async(NULL ,dp_arr,dp_cnt);
Free(dp_arr);
if(OPRT_OK != op_ret) {
PR_ERR("dev_report_dp_json_async relay_config data error,err_num",op_ret);
}
PR_DEBUG("dp_query report_all_dp_data");
}
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
嵌入式系统与物联网
RFID技术在移动电子商务中的应用
室内摄影补光灯电路
芯科科技驱动和重塑智能门锁行业格局
TDK 发布 SensorStage 传感器评估平台,大幅加速 IMU 开发进程
新型高性能锂离子电池充电器设计方案图(DS2770,DS2720)
物联网与RFID芯片
exiao_流水灯
新款USB音箱方案MK909D,每声道1W的输出功率
RFID中间件关键技术研究
被收购后的芯科实验室:物联网与人工智能的未来走向
纳米电力将nPZero集成电路推向超低功耗物联网的量产
ceajin_继电器滴答时钟
Taoglas 针对多无线天线系列的紧凑型物联网设计
Kwikset:超低功耗Wi-Fi解锁无缝体验
555构成的室内湿度控制电路
又有一好消息,Infineon 发布了免费的 VDSL 方案。
边缘计算与人工智能(Edge AI)如何引领新一轮技术革命
详细介绍给方案的原理图和PCB图。
1.工信部领导致辞_2010物联网峰会
频率规划方案上已报国务院 中国会发几张3G牌照?
意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
室内净化空气装置电路
SmartDV展示完整的边缘与连接IP解决方案,以高速和低功耗特性赋能移动、物联网和媒体处理设备创新
allan0403_点阵测试、点阵倒计时、花样流水灯
基于物联网的电池组均衡充电与监控系统
有线电视可寻址收费智能分支器方案
FPGA与ASSP和ASIC竞争
GPRS网“落地”笔记本电脑市场现商机?
TPMS项目推广