前言


一、代码及编译

1.代码

#include <stdio.h>
#include <unistd.h>#include "ohos_init.h"
#include "cmsis_os2.h"
#include "wifiiot_gpio.h"
#include "wifiiot_gpio_ex.h"
#include "wifiiot_adc.h"#define PHOTO_SENSOR_CHAN_NAME WIFI_IOT_ADC_CHANNEL_4unsigned short data = 0;
static void HummanSensorLightTask(void *arg)
{(void)arg;WifiIotGpioValue rel = 0;while (1){GpioGetInputVal(WIFI_IOT_IO_NAME_GPIO_7, &rel) ;AdcRead(PHOTO_SENSOR_CHAN_NAME, &data, WIFI_IOT_ADC_EQU_MODEL_4, WIFI_IOT_ADC_CUR_BAIS_DEFAULT, 0);if((int)data>1800){GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, (int)rel);GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, (int)rel);GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_12, (int)rel);usleep(2000);}else{GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 0);GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 0);GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_12, 0);}}
}static void HummanSensorLightDemo(void)
{GpioInit();//设置红色,蓝 色,绿色 LED IO为输出状态IoSetFunc(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_IO_FUNC_GPIO_10_GPIO);GpioSetDir(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_GPIO_DIR_OUT);IoSetFunc(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_IO_FUNC_GPIO_11_GPIO);GpioSetDir(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_GPIO_DIR_OUT);IoSetFunc(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_IO_FUNC_GPIO_12_GPIO);GpioSetDir(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_GPIO_DIR_OUT);IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_GPIO);GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_IN);IoSetFunc(WIFI_IOT_IO_NAME_GPIO_7, WIFI_IOT_IO_FUNC_GPIO_7_GPIO);GpioSetDir(WIFI_IOT_IO_NAME_GPIO_7, WIFI_IOT_GPIO_DIR_IN);IoSetPull(WIFI_IOT_IO_NAME_GPIO_7, WIFI_IOT_IO_PULL_UP);osThreadAttr_t attr;attr.name = "HummanSensorLightTask";attr.attr_bits = 0U;attr.cb_mem = NULL;attr.cb_size = 0U;attr.stack_mem = NULL;attr.stack_size = 4096;attr.priority = osPriorityNormal;if (osThreadNew(HummanSensorLightTask, NULL, &attr) == NULL){printf("[HummanSensorDemo] Falied to create HummanSensorTask!\n");}
}APP_FEATURE_INIT(HummanSensorLightDemo);

2.配置BUILD.gn

3.编译及烧写

二、功能解释

1.白天时人体靠近无反应(灯不亮)

2.夜晚

3.人靠近灯不亮

三、改进:

1.代码:

#include <stdio.h>#include <unistd.h>#include "ohos_init.h"#include "cmsis_os2.h"#include "wifiiot_gpio.h"#include "wifiiot_gpio_ex.h"#include "wifiiot_pwm.h"#include "wifiiot_adc.h"#include "wifiiot_errno.h"#define ADC_RESOLUTION 4096#define PWM_FREQ_DIVITION 64000void initLightGPIO(void){GpioInit();// GpioDeinit();IoSetFunc(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_IO_FUNC_GPIO_10_PWM1_OUT);IoSetFunc(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_IO_FUNC_GPIO_11_PWM2_OUT);PwmInit(WIFI_IOT_PWM_PORT_PWM1); // RPwmInit(WIFI_IOT_PWM_PORT_PWM2); // G}void sasTask(void){initLightGPIO();int state = 0;unsigned short humanData = 0;unsigned short photosensitiveData = 0;while(1){//读取 光敏电阻或 人体红外感应器的值,AdcRead(WIFI_IOT_ADC_CHANNEL_3, &humanData, WIFI_IOT_ADC_EQU_MODEL_4, WIFI_IOT_ADC_CUR_BAIS_DEFAULT, 0);AdcRead(WIFI_IOT_ADC_CHANNEL_4, &photosensitiveData, WIFI_IOT_ADC_EQU_MODEL_4, WIFI_IOT_ADC_CUR_BAIS_DEFAULT, 0);state = photosensitiveData>=800 && humanData  >=800;if(state){ //满足条件 红灯亮,报警//红灯亮PwmStart(WIFI_IOT_PWM_PORT_PWM2, PWM_FREQ_DIVITION, PWM_FREQ_DIVITION);//绿灯灭PwmStop(WIFI_IOT_PWM_PORT_PWM1);}else{//绿灯 PwmStop(WIFI_IOT_PWM_PORT_PWM2);//红灯 灭//绿灯闪烁PwmStart(WIFI_IOT_PWM_PORT_PWM1, PWM_FREQ_DIVITION, PWM_FREQ_DIVITION);sleep(1);PwmStop(WIFI_IOT_PWM_PORT_PWM1);}sleep(1);}}APP_FEATURE_INIT(sasTask);

2.实现:

人不在:绿

人在:红


总结

实训作业2-光敏电阻,人体感应灯相关推荐

  1. 基于51控制的人体感应灯

    文章目录 前言 1 背景 2 可实现功能 3 制作材料 4 设计电路 5 设计原理 5.1 原理一(人体感应) 5.2 原理二(距离感应) 5.3 原理三(灯的亮度调节) 6 程序设计 7 成品模型展 ...

  2. 单片机人体感应灯c语言,单片机光控人体感应灯案例.doc

    本科毕业论文(设计) 题目: 单片机光控人体感应灯 学院: 物理与电子科学学院 班级: 2010级电子三班 姓名: 许鋆 指导教师: 杨春花 职称: 教授 完成日期: 2014 年 5 月 26 日 ...

  3. 红外线人体感应灯arduino_第五章 自制一盏人体感应灯(人体红外传感器SR501)(Arduino边做边学:从点亮Led到物联网)...

    本系列文章为作者原创,未经作者书面同意,不得转载! 现在很多有老人的家庭都会在卫生间安装一种感应灯,当人进入卫生间时,灯就会发光,过一会儿就自动关闭了.这种灯比传统的声控灯要科学一下,尤其晚上,不会打 ...

  4. ⑤电子产品拆解分析-人体感应灯

    ⑤电子产品拆解分析-人体感应灯 一.功能介绍 二.电路分析以及器件作用 三.原理图复现与学习 一.功能介绍 ①感应人体活动亮灯20S: ②Micro-USB进行锂电池充电: 二.电路分析以及器件作用 ...

  5. 和12岁小同志搞创客开发:手撕代码,做一款人体感应灯

    目录 1.传感器原理 2.代码实践 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/categ ...

  6. 计算机基础与应用23页思考与实训,《计算机基础与应用》实训作业三

    <计算机基础与应用>实训作业(三) 实训练习一.数据库技术基础综合应用 [实训要求] 1.能够建立和维护Access数据库 2.能够使用SQL中的四条基本语句:INSERT.UPDATE. ...

  7. 第六次实训作业异常处理

    第六次实训作业异常处理 编写一个类ExceptionTest,在main方法中使用try-catch-finally语句结构实现: 在try语句块中,编写两个数相除操作,相除的两个操作数要求程序运行时 ...

  8. 微波感应模块电路图_关于人体感应灯,你不知道的“冷”知识

    早些年前,人体感应灯大多应用在小区楼道,公共洗手间等场所,"人来灯亮,人走灯灭",使他们在生活中极为常见. 近几年来,智能人体感应灯越来越多的应用到家庭生活中,给我们的生活带来很多 ...

  9. C语言实训作业PPT,C语言实训作业.docx

    C语言实训作业.docx . C语言通识教育实训指导书 实训课 (2 学时)指导教师何天成2016 年月日前言C 语言是现代最流行的通用程序设计语言之一,它既具有高级程序设计语言的优点,又具有低级程序 ...

  10. 头歌c语言实训作业题解

    头歌c语言实训作业题解 持续更新 C语言程序设计编辑与调试环境 1.打印输出 Hello World 2.打印输出图形 3.求三个数的最大值 4.熟悉C语言调试环境 C语言中最基本的输入输出 1.看看 ...

最新文章

  1. Android发布项目到外部仓库
  2. 线性布局 相对布局 参数
  3. 善用各类知识管理工具,达到事半功倍的效果
  4. Tableau 2020.3 发布!新增 写入外部数据库 与 预测建模 等功能,进一步增强扩展分析
  5. SQL语言学习(四)常见函数学习
  6. python(numpy,pandas8)——pandas大范围赋值和增加特定数据,处理丢失数据(nan)
  7. Web前端开发笔记——第四章 JavaScript程序设计 第五节 数组
  8. Spring Boot 动态数据源(Spring 注解数据源)
  9. 两个月拿到N个offer,看看我是如何做到的
  10. CNCC2018 即将开幕,报名优惠截止倒计时5天!
  11. 初学objective c语言4 dealloc
  12. C/C++程序员面试宝典-2
  13. 2017初二上期中考试总结
  14. 百度热力图颜色说明_各大软件地图中的热力图是什么?如何正确使用?收藏了...
  15. Kibana:更有效地构建 Kibana 仪表板 - 7.12 发布
  16. c# 扫描局域网IP列表的几种方法
  17. 【双剑合璧】Git和Github使用指南
  18. 流批一体技术框架探索及在袋鼠云数栈中的实践
  19. 行云管家V4.8版本正式发布:一键唤醒本地工具
  20. python里import as什么意思_import as和 from import 区别

热门文章

  1. 怎样用命令行方式添加打印机端口? (已解决)
  2. 微信开发怎么控制手机返回键问题
  3. 什么是JDK?Java JDK 下载,安装与环境变量配置注意点。使用记事本编写运行环境配置后的第一个Java程序
  4. 哪些人不适合当程序员?
  5. 执业药师禁止挂靠!别急!还有这些出路。
  6. 牛客网之字符串排序与DNA合成
  7. Python获取当前时间日期
  8. ps实操——基础篇(2)
  9. 目标检测学习笔记——yolov5的坐标输出形式和损失函数计算
  10. Python机器学习算法入门教程(一)