2021-03-07 16:19:28
0
这个程序是通过读取红外传感器的值判断,当发现人体接近后就点亮红色RGB灯,同时在串口打印ADC读取的值。
- #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"
- static void InfraredTask(void *arg)
- {
- (void)arg;
- 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);
- while(1){
- unsigned short data = 0;
- if(AdcRead(WIFI_IOT_ADC_CHANNEL_3,&data,WIFI_IOT_ADC_EQU_MODEL_4,WIFI_IOT_ADC_CUR_BAIS_DEFAULT,0)==WIFI_IOT_SUCCESS)
- {
- printf("Infrared data:%dnr",data);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, data>1500?1:0);
- }
- usleep(100000);
- }
- }
- static void myInfraredEntry(void)
- {
- osThreadAttr_t attr;
- GpioInit();
- attr.name="InfraredTask";
- 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(InfraredTask,NULL,&attr) == NULL){
- printf("[myInfraredEntry] Failed to create InfraredTask!n");
- }
- }
- APP_FEATURE_INIT(myInfraredEntry);
复制代码
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
侵权投诉