了解更多开源请访问:开源基础软件社区https://ost.51cto.com1.南向开发-粉丝业务逻辑可以用开关量或模拟量输出来控制风扇。业务代码如下[完整见附件smart_fan_iot.zip]:staticvoidWinderInit(void){IoTGpioInit(8);hi_io_set_func(8,HI_IO_FUNC_GPIO_8_PWM1_OUT);IoTPwmInit(1);//GPIO8初始化为PWM1输出可控速度IoTGpioInit(FAN_IO1);hi_io_set_func(FAN_IO1,HI_IO_FUNC_GPIO_2_GPIO);IoTGpioSetDir(FAN_IO1,IOT_GPIO_DIR_OUT);IoTGpioSetOutputVal(FAN_IO1,IOT_GPIO_VALUE0);//GPIO2初始化为输出0开关值}staticvoidWinderLoop(str){app_msg,"turnonfan")==0){IoTGpioSetOutputVal(FAN_IO1,IOT_GPIO_VALUE1);IoTPwmStart(1,95,80000);//打开风扇printf("打开风扇\r\n");}if(strcmp(app_msg,"关闭风扇")==0){IoTGpioSetOutputVal(FAN_IO1,IOT_GPIO_VALUE0);IoTPwmStop(1);//关闭风扇printf("关闭风扇\r\n");}if(strcmp(app_msg,"低速")==0){IoTPwmStart(1,40,80000);printf("低于速度\r\n");}if(strcmp(app_msg,"中速")==0){IoTPwmStart(1,75,80000);printf("中速\r\n");}osDelay(WINDER_LOOP_DELAY);}}控制原理图:2.Smart_fandemo视频:smartfandemo13.Touch机器人demo到这里,我们已经打通了Touch的开发路径,接下来我们可以实现更多有趣的项目,比如console灯具和机器人,下面是我不久前开发的桌面机器人MRobot:它可以实现触摸连接,控制它的动作,帮你开风扇,开门,浇水,甚至语音交互等等,还有一些有趣的配件可以玩,总之,HarmonyOS/OpenHarmony连接万物,实现你所想,基本开发过程类似于智能风扇。控制UI核心代码://运动控制Forward(){this.front_img='/common/images/up0.png';this.work_status="萌萌退场";this.talk_msg="F";this.sendMessage();},Backward(){this.front_img='/common/images/down0.png';this.work_status="萌萌宠宠宠";this.talk_msg="B";这个.sendMessage();},//表情聊天Emoji_smile(){this.emoji="Smile";this.talk_msg="1";//this.sendMessage();},Emoji_wao(){this.emoji="哇";这。talk_msg="2";//this.sendMessage();},//第二个控制设备Control_fan(e){varret=0;控制台日志(e.checked);if(e.checked){this.talk_msg="打开风扇";这个.sendMessage();this.fan="/common/images/fanOn.png";prompt.showToast({message:"打开风扇"});}else{this.fan="/common/images/fanOff.png";this.talk_msg="关闭fan";this.sendMessage();prompt.showToast({message:"关掉风扇"});};},sendMessage(){varret=1;varmessage=this.talk_msg;letcommonInfo={sessionId:getApp(this).ConfigParams.deviceInfo.sessionId};getApp(this).NetConfig.sendMessage(commonInfo,message,(result)=>{if(result.code==0){prompt.showToast({message:"发送成功",duration:1000,});ret=0;}else{prompt.showToast({message:"发送失败",duration:1000,});ret=-1;};});if(ret==0){return0;}elsereturn-1;},设备端接收数据代码:staticvoidMRobotProcessAppMessage(constchar*data,intdata_len){if(data_len!=MESSAGE_LEN){strcpy(app_msg,data);//app_msg=数据;printf("------app_msg:%s\r\n",app_msg);printf("-----数据:%s\r\n",数据);WINERR("数据长度无效!\n");返回;}}staticintMRobotNetEventHandler(NET_EVENT_TYPEevent,void*data){switch(event){caseNET_EVENT_CONNECTTED://网络连接成功m_netstatus=true;printf("m_netstatus:%d\n\n",m_netstatus);//显示网络连接中断;caseNET_EVENT_RECV_DATA://接收网络信息(FA发送的消息)MRobotProcessAppMessage((constchar*)data,strlen(data));//处理相应的信息break;默认值:中断;}return0;}更多开源信息请访问:开源基础软件社区https://ost.51cto.com
