实训作业2-光敏电阻,人体感应灯
前言
一、代码及编译
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-光敏电阻,人体感应灯相关推荐
- 基于51控制的人体感应灯
文章目录 前言 1 背景 2 可实现功能 3 制作材料 4 设计电路 5 设计原理 5.1 原理一(人体感应) 5.2 原理二(距离感应) 5.3 原理三(灯的亮度调节) 6 程序设计 7 成品模型展 ...
- 单片机人体感应灯c语言,单片机光控人体感应灯案例.doc
本科毕业论文(设计) 题目: 单片机光控人体感应灯 学院: 物理与电子科学学院 班级: 2010级电子三班 姓名: 许鋆 指导教师: 杨春花 职称: 教授 完成日期: 2014 年 5 月 26 日 ...
- 红外线人体感应灯arduino_第五章 自制一盏人体感应灯(人体红外传感器SR501)(Arduino边做边学:从点亮Led到物联网)...
本系列文章为作者原创,未经作者书面同意,不得转载! 现在很多有老人的家庭都会在卫生间安装一种感应灯,当人进入卫生间时,灯就会发光,过一会儿就自动关闭了.这种灯比传统的声控灯要科学一下,尤其晚上,不会打 ...
- ⑤电子产品拆解分析-人体感应灯
⑤电子产品拆解分析-人体感应灯 一.功能介绍 二.电路分析以及器件作用 三.原理图复现与学习 一.功能介绍 ①感应人体活动亮灯20S: ②Micro-USB进行锂电池充电: 二.电路分析以及器件作用 ...
- 和12岁小同志搞创客开发:手撕代码,做一款人体感应灯
目录 1.传感器原理 2.代码实践 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/categ ...
- 计算机基础与应用23页思考与实训,《计算机基础与应用》实训作业三
<计算机基础与应用>实训作业(三) 实训练习一.数据库技术基础综合应用 [实训要求] 1.能够建立和维护Access数据库 2.能够使用SQL中的四条基本语句:INSERT.UPDATE. ...
- 第六次实训作业异常处理
第六次实训作业异常处理 编写一个类ExceptionTest,在main方法中使用try-catch-finally语句结构实现: 在try语句块中,编写两个数相除操作,相除的两个操作数要求程序运行时 ...
- 微波感应模块电路图_关于人体感应灯,你不知道的“冷”知识
早些年前,人体感应灯大多应用在小区楼道,公共洗手间等场所,"人来灯亮,人走灯灭",使他们在生活中极为常见. 近几年来,智能人体感应灯越来越多的应用到家庭生活中,给我们的生活带来很多 ...
- C语言实训作业PPT,C语言实训作业.docx
C语言实训作业.docx . C语言通识教育实训指导书 实训课 (2 学时)指导教师何天成2016 年月日前言C 语言是现代最流行的通用程序设计语言之一,它既具有高级程序设计语言的优点,又具有低级程序 ...
- 头歌c语言实训作业题解
头歌c语言实训作业题解 持续更新 C语言程序设计编辑与调试环境 1.打印输出 Hello World 2.打印输出图形 3.求三个数的最大值 4.熟悉C语言调试环境 C语言中最基本的输入输出 1.看看 ...
最新文章
- Android发布项目到外部仓库
- 线性布局 相对布局 参数
- 善用各类知识管理工具,达到事半功倍的效果
- Tableau 2020.3 发布!新增 写入外部数据库 与 预测建模 等功能,进一步增强扩展分析
- SQL语言学习(四)常见函数学习
- python(numpy,pandas8)——pandas大范围赋值和增加特定数据,处理丢失数据(nan)
- Web前端开发笔记——第四章 JavaScript程序设计 第五节 数组
- Spring Boot 动态数据源(Spring 注解数据源)
- 两个月拿到N个offer,看看我是如何做到的
- CNCC2018 即将开幕,报名优惠截止倒计时5天!
- 初学objective c语言4 dealloc
- C/C++程序员面试宝典-2
- 2017初二上期中考试总结
- 百度热力图颜色说明_各大软件地图中的热力图是什么?如何正确使用?收藏了...
- Kibana:更有效地构建 Kibana 仪表板 - 7.12 发布
- c# 扫描局域网IP列表的几种方法
- 【双剑合璧】Git和Github使用指南
- 流批一体技术框架探索及在袋鼠云数栈中的实践
- 行云管家V4.8版本正式发布:一键唤醒本地工具
- python里import as什么意思_import as和 from import 区别