[文章]【HarmonyOS开发板试用】IOT板子红外传感器

阅读量0
0
0
这个程序是通过读取红外传感器的值判断,当发现人体接近后就点亮红色RGB灯,同时在串口打印ADC读取的值。
  1. #include<stdio.h>
  2. #include<unistd.h>

  3. #include "ohos_init.h"
  4. #include "cmsis_os2.h"
  5. #include "wifiiot_gpio.h"
  6. #include "wifiiot_gpio_ex.h"
  7. #include "wifiiot_pwm.h"
  8. #include "wifiiot_adc.h"
  9. #include "wifiiot_errno.h"


  10. static void InfraredTask(void *arg)
  11. {
  12.     (void)arg;

  13.     IoSetFunc(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_IO_FUNC_GPIO_10_GPIO);
  14.     GpioSetDir(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_GPIO_DIR_OUT);


  15.    while(1){
  16.        unsigned short data = 0;

  17.        if(AdcRead(WIFI_IOT_ADC_CHANNEL_3,&data,WIFI_IOT_ADC_EQU_MODEL_4,WIFI_IOT_ADC_CUR_BAIS_DEFAULT,0)==WIFI_IOT_SUCCESS)
  18.        {
  19.            printf("Infrared data:%dnr",data);
  20.            GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, data>1500?1:0);
  21.        }
  22.        usleep(100000);

  23.    }
  24. }
  25. static void myInfraredEntry(void)
  26. {
  27.     osThreadAttr_t attr;
  28.     GpioInit();
  29.     attr.name="InfraredTask";
  30.     attr.attr_bits=0U;
  31.     attr.cb_mem=NULL;
  32.     attr.cb_size=0U;
  33.     attr.stack_mem=NULL;
  34.     attr.stack_size=4096;
  35.     attr.priority=osPriorityNormal;

  36.     if(osThreadNew(InfraredTask,NULL,&attr) == NULL){
  37.         printf("[myInfraredEntry] Failed to create InfraredTask!n");
  38.     }

  39. }
  40. APP_FEATURE_INIT(myInfraredEntry);
复制代码



回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友