17 Star 59 Fork 24

Talkweb_OpenHarmony / Niobe

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 2.86 KB
一键复制 编辑 原始数据 按行查看 历史
angeyan 提交于 2021-11-16 08:43 . update demo check

OpenHarmony模组开发-环境联动三色灯控制

本案例使用到了四组设备,通过环境光照和人体红外感应,联动三色灯和蜂鸣器的使能控制。

目录结构:

include

beep_demo.h             --蜂鸣器控制头文件
infrared_demo.h         --红外人体感应头文件
light_demo.h            --环境光照感应头文件
tricolor_light_demo.h   --三色灯控制头文件

src

beep_demo.c             --蜂鸣器控制源文件
infrared_demo.c         --红外人体感应源文件
light_demo.c            --环境光照感应源文件
main_demo.c             --本案例环境联动控制源文件
tricolor_light_demo.c   --三色灯控制源文件

相关API介绍

beep_demo

1.BeepInit(): 蜂鸣器初始化函数,初始化GPIO9为PWM0输出
2.BeepStart(): 蜂鸣器使能函数
3.BeepStop():  蜂鸣器停止函数
4.BeepCtrl(struct BEEPCTRLATTR* ctrlAttr):蜂鸣器控制函数
    ctrlAttr参数说明:
        times    //响的次数
        duty     //每次响的占空比
        period   //每响一次的时间周期
        callTime //控制函数的调用周期 

infrared_demo

1.InfraredSensorInit():   红外传感初始化函数,初始化GPIO7为IO输入
2.GetInfraredSensorVal(): 获取红外传感IO引脚当前的状态值
3.GetEnvBodyState(): 获取红外人体感应目前的环境状态
    返回值(enum ENV_BODY_STATE):
        BODY_NOT   //无人靠近
        BODY_COME  //有人靠近
        BODY_KEEP  //有人靠近后保持
        BODY_LEAVE //有人离开

light_demo

1.LightSensorVal(unsigned short* val):  获取当前环境光照值,保存到val中
2.GetLightAverageVal(unsigned char cnt): 多次获取当前环境光照并取平均值
    cnt为多次获取次数
    return 返回多次获取的平均值
3.GetEnvLightState(): 获取当前环境光照状态
    返回值(enum ENV_LIGHT_STATE):
        LIGHT_DAY   //白天    
        LIGHT_DUSK  //黄昏
        LIGHT_NIGHT //黑夜

tricolor_light_demo

1.TricolorLightInit(): 三色灯初始化函数,初始化GPIO10,GPIO11,GPIO12为PWM1,PWM2,PWM3输出
2.TricolorLightStart(char redDuty, char GreenDuty, char BlueDuty): 设置PWM输出值,并开启PWM输出
    redDuty:   红灯PWM占空比
    GreenDuty: 绿灯PWM占空比
    BlueDuty:  蓝灯PWM占空比
3.TricolorLightStop(): 三色灯P输出停止函数

运行结果

当红外检测到有人接近时,蜂鸣器响两声,同时:
    当环境光线充足时,三色灯熄灭;
    当环境光线较昏暗时,三色灯显示低亮度;
    当环境光线非常不足时,三色灯显示高亮度;
当红外检测到有人离开时,蜂鸣器响两声,且三色灯熄灭
1
https://gitee.com/talkweb_oh/niobe.git
git@gitee.com:talkweb_oh/niobe.git
talkweb_oh
niobe
Niobe
master

搜索帮助