查看: 292|回复: 0

[经验] 飞凌嵌入式ElfBoard ELF1板卡-使用AHT20进行环境监测之编写程序

[复制链接]

该用户从未签到

发表于 2024-11-27 09:02:49 | 显示全部楼层 |阅读模式
分享到:
编程步骤
(一)打开设备
  1. fd = open(AHT20_DEV, O_RDWR);

  2.         if(fd < 0) {

  3.                 printf("can't open file %s\r\n", AHT20_DEV);

  4.                 return -1;

  5.         }
复制代码
设置宏定义AHT20_DEV为设备节点/dev/aht20,使用open以可读写的方式打开,如果打开错误返回-1。
(二)读取数据
  1. ret = read(fd, databuf, sizeof(databuf));
复制代码
read函数的作用是把从设备中读取到的数据存到databuf数组中。
(三)数据类型转换
  1. c1 = databuf[0]*1000/1024/1024;  //

  2. t1 = databuf[1] *200*10/1024/1024-500;

  3. hum = (float)c1/10.0;

  4. temp = (float)t1/10.0;
复制代码
因为温湿度不能用常量表示,所以需要做相应数学计算转换成浮点量。
(四)关闭设备
  1. close(fd);
复制代码
详细代码
elf1_cmd_aht20.c:
  1. #include "stdio.h"

  2. #include "unistd.h"

  3. #include "sys/types.h"

  4. #include "sys/stat.h"

  5. #include "sys/ioctl.h"

  6. #include "fcntl.h"

  7. #include "stdlib.h"

  8. #include "string.h"

  9. #include <poll.h>

  10. #include <sys/select.h>

  11. #include <sys/time.h>

  12. #include <signal.h>

  13. #include <fcntl.h>



  14. #define AHT20_DEV "/dev/aht20"



  15. int main(int argc, char *argv[])

  16. {

  17.         int fd;

  18.         unsigned int databuf[2];

  19.         int c1,t1;

  20.         float hum,temp;

  21.         int ret = 0;



  22.         fd = open(AHT20_DEV, O_RDWR);

  23.         if(fd < 0) {

  24.                 printf("can't open file %s\r\n", AHT20_DEV);

  25.                 return -1;

  26.         }



  27.         while (1) {

  28.                 ret = read(fd, databuf, sizeof(databuf));

  29.                 if(ret == 0) {                         /* ?????? */



  30.                  c1 = databuf[0]*1000/1024/1024;  //

  31.                  t1 = databuf[1] *200*10/1024/1024-500;

  32.                  hum = (float)c1/10.0;

  33.                  temp = (float)t1/10.0;



  34.                 printf("hum = %0.2f temp = %0.2f \r\n",hum,temp);

  35.                 usleep(500000);

  36.                 }

  37.         }

  38.         close(fd);       

  39.         return 0;

  40. }
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-12-18 21:11 , Processed in 0.105050 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.