ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Harmony OS 设备开发学习记录(七)-- 通过光敏电阻感知环境光

2021-07-20 19:01:34  阅读:258  来源: 互联网

标签:环境光 光敏电阻 attr -- hi HI adc include


Harmony OS 设备开发学习记录(七)-- 通过光敏电阻感知环境光

基于hispark wifi套件采用harmony os 2.0全量代码

注:本例展示了光敏电阻的adc用法,人体红外传感器同理。

一、看原理图确定硬件电路

本例采用炫彩灯扩展版上的光敏电阻
在这里插入图片描述
注:可以发现由于光敏电阻与GPIO9相连而核心板上的led也是与GPIO9相连的,所以光敏电阻值改变时核心板板载的led也会发生变化。

二、在源码中建立demo文件

在app下建立adcdemo文件夹并创建BUILD.gn和adc_poh.c文件
在这里插入图片描述

三、编写代码

在adcdemo/adc_poh.c中写入

#include <stdio.h>
#include <unistd.h>

#include "ohos_init.h"
#include "cmsis_os2.h"

#include "hi_gpio.h"
#include "hi_io.h"
#include "hi_adc.h"
#include "hi_errno.h"


static void AdcGpioTask(void *arg){
    (void)arg;

    hi_u16 value;
    while (1)
    {
        if(hi_adc_read(HI_ADC_CHANNEL_4, &value, HI_ADC_EQU_MODEL_4, HI_ADC_CUR_BAIS_DEFAULT, 0) != HI_ERR_SUCCESS){
            printf("ADC read error!\n");
        }else{
            printf("ADC_VALUE = %d\n", (unsigned int)value);
            usleep(10000);
        }
    }
}


static void AdcGpioEntry(void){
    printf("ADC Test!\n");
    osThreadAttr_t attr;

    hi_gpio_init();
    hi_io_set_func(HI_GPIO_IDX_9, HI_IO_FUNC_GPIO_9_GPIO);
    hi_gpio_set_dir(HI_GPIO_IDX_9, HI_GPIO_DIR_IN);


    attr.name = "AdcGpioTask";
    attr.attr_bits = 0U;
    attr.cb_mem = NULL;
    attr.cb_size = 0U;
    attr.stack_mem = NULL;
    attr.stack_size = 1024;
    attr.priority = 25;

    if (osThreadNew(AdcGpioTask, NULL, &attr) == NULL) {
        printf("[LedExample] Falied to create LedTask!\n");
    }
}

SYS_RUN(AdcGpioEntry);

这里的pwm相关函数用法参考源码
在adcdemo/BUILD.gn中写入

static_library("adcdemo") {
    sources = [
        "adc_poh.c"
    ]

    include_dirs = [
        "//utils/native/lite/include",
        "//kernel/liteos_m/components/cmsis/2.0",
        "//base/iot_hardware/peripheral/interfaces/kits",
        "//device/hisilicon/hispark_pegasus/sdk_liteos/include"
    ]
}

在上级目录的app/BUILD.gn中写入

import("//build/lite/config/component/lite_component.gni")

lite_component("app") {
    features = [
        "adcdemo",
    ]
}

四、在Linux下使用hb工具进行编译

root@DESKTOP-QAO2AOK:~/harmonyos/code-2.0-canary# hb set
[OHOS INFO] Input code path: .
OHOS Which product do you need?  wifiiot_hispark_pegasus
root@DESKTOP-QAO2AOK:~/harmonyos/code-2.0-canary# hb build

如果曾经设置过hb set就不需要再设置了,直接这样就可以了

root@DESKTOP-QAO2AOK:~/harmonyos/code-2.0-canary# hb build

看到success字样即为编译成功

五、将编译好的固件烧录到开发板

将linux中的源码文件夹中的out拷贝到Windows下替换原有out文件夹就可以了,但是要先删除原有out文件夹
打开vscode使用DevEco Device Tool打开源码文件夹
选择对应的开发板型号
这里选择的是hi3861
然后在项目设置中按照实际端口情况进行如下设置
在这里插入图片描述
保存项目并打开
在这里插入图片描述
点击upload进行烧录,烧录时需要根据提示按下开发板的rst键,稍等片刻,看到success代表烧录成功。
在这里插入图片描述
按下rst键重启开发板后
在这里插入图片描述
点击Monitor打开串口调试器,此时用手指遮挡光敏电阻可以看到adc值的变化则证明实验成功。

标签:环境光,光敏电阻,attr,--,hi,HI,adc,include
来源: https://blog.csdn.net/YangHxuan/article/details/118941657

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有