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

实训作业2-光敏电阻,人体感应灯,第1张

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


前言

一、代码及编译 1.代码
#include 
#include 

#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_4

unsigned 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 

#include 



#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 64000





void 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); // R

    PwmInit(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.实现:

 

人不在:绿

人在:红


总结

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5702689.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存