HarmonyOS鸿蒙Next WiFi IoT智能家居套件 - LED灯、按键、蜂鸣器的实现
HarmonyOS鸿蒙Next WiFi IoT智能家居套件 - LED灯、按键、蜂鸣器的实现 本次在3.helloworld的基础上,新增点亮LED灯、按键操作、蜂鸣器功能。本次需要用到红黄绿灯扩展板。
添加这三个功能,主要是因为这几个功能都是比较简单的功能,而且,这三个功能配合起来,可以实现比较有意思的功能。
实现功能:按下扩展板上的按键,蜂鸣器发声,并且红黄绿灯会按照红、黄、绿、全灭的顺序进行发光,按键抬起,蜂鸣器停止发声。
本代码借鉴了唐佐林老师的教程:实现按键“按下事件”和“释放事件”的通用框架(V0.0.1)
- 点亮LED灯,使用了GPIO的输出功能,高电平点亮,低电平熄灭。
主要调用wifiiot_gpio.c中的函数以下函数,实现GPIO初始化为输出功能,且控制该IO输出高、低电平
unsigned int IoSetFunc(WifiIotIoName id, unsigned char val) //选择IO的功能(GPIO、I2C、SPI、PWM等等)
unsigned int GpioSetDir(WifiIotGpioIdx id, WifiIotGpioDir dir) //设置为输出或输入
unsigned int GpioSetOutputVal(WifiIotGpioIdx id, WifiIotGpioValue val) //设置输出值
示例:
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_10, 0 WIFI_IOT_IO_FUNC_GPIO_10_GPIO);//IO10设置为GPIO
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_GPIO_DIR_OUT);//IO10设置为输出
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10,WIFI_IOT_GPIO_VALUE1);//IO10输出高电平
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10,WIFI_IOT_GPIO_VALUE0);//IO10输出低电平
- 按键响应,使用的GPIO的输入中断功能,并且识别了按键按下(下降沿)和按键抬起(上升沿)
对中断不熟悉的朋友,请参考唐佐林老师的教程:实现按键“按下事件”和“释放事件”的通用框架(V0.0.1) 此处仅将用到几个函数列出
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_8, WIFI_IOT_IO_FUNC_GPIO_8_GPIO);//IO复用为GPIO功能
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_8, WIFI_IOT_GPIO_DIR_IN);//设置为输入
IoSetPull(WIFI_IOT_IO_NAME_GPIO_8, WIFI_IOT_IO_PULL_UP);//输入带上拉
GpioRegisterIsrFunc(WIFI_IOT_IO_NAME_GPIO_8,
WIFI_IOT_INT_TYPE_EDGE,
WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW,
OnButtonPressed_isr, NULL);//注册中断服务函数,边沿触发,下降沿触发,按键按下后,会调用中断服务函数 OnButtonPressed_isr
- 蜂鸣器,主要使用了PWM功能,也就是脉冲宽度调制,通过调节占空比,可以控制输出的电平,使得蜂鸣器发出不同的响声,PWM还用于电机的控制。
注意,为了能使用PWM功能,需要使能PWM功能:将vendor\hisi\hi3861\hi3861\build\config\usr_config.mk文件中的CONFIG_PWM_SUPPORT行:# CONFIG_PWM_SUPPORT is not set修改为CONFIG_PWM_SUPPORT=y , 否则会编译失败
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_PWM0_OUT);//IO复用为PWM功能
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_OUT);//设置为输出
PwmInit(WIFI_IOT_PWM_PORT_PWM0);//初始化PWM
PwmStart(WIFI_IOT_PWM_PORT_PWM0, 5 * 1000, 40 * 1000);//启动PWM功能,此处不做详细解释,会单独开一个帖子讲解参数的含义
PwmStop(WIFI_IOT_PWM_PORT_PWM0);//停止PWM
好棒,学起来
更多关于HarmonyOS鸿蒙Next WiFi IoT智能家居套件 - LED灯、按键、蜂鸣器的实现的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
写的真心不错呢
有办法快些上手么
来,一起围观就是了
有你的日子更精彩
顶一顶!
吃瓜群众来凑热闹
这才是大家的最爱
你们太厉害啦,我可不行
你怎么懂的这么多呢
HarmonyOS鸿蒙Next WiFi IoT智能家居套件中,LED灯、按键、蜂鸣器的实现主要依赖于鸿蒙系统的分布式能力和设备管理框架。LED灯的控制通过调用Light
接口实现,支持开关、亮度调节等功能。按键的检测通过Input
模块实现,可以监听按键的按下和释放事件。蜂鸣器的控制通过Audio
模块实现,支持播放指定频率的声音。这些功能可以通过鸿蒙的Ability
框架进行封装,实现跨设备的协同操作。具体实现代码可以参考鸿蒙开发者文档中的相关示例。
HarmonyOS鸿蒙Next WiFi IoT智能家居套件中,LED灯、按键和蜂鸣器的实现主要依赖于鸿蒙的分布式能力和设备间通信机制。通过鸿蒙的HiLink协议,设备可以轻松接入网络并实现互联。LED灯的控制可以通过发送特定的控制指令来调整亮度或颜色;按键则用于触发事件,如开关灯或调整设备状态;蜂鸣器则用于发出提示音或警报。开发者可以使用鸿蒙提供的API和开发工具,快速实现这些功能,并确保设备间的协同工作。