Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3125
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2020-04-18 15:44
文章分类
文章存档

2020年(1)

我的朋友
最近访客

分类: C/C++

2020-04-18 15:45:34

1、启动IIC驱动
nano  /etc/modules
添加i2c-dev ,如下:


取消对IIC驱动的黑名单
nano /etc/modprobe.d/raspi-blacklist.conf


3、重启
4、安装i2cdetect
apt-get install i2c-tools
5、将BH1750连接到树莓派

6、i2cdetect -y -a  1
效果如下:

7、编写程序
cd /home/pi
nano iic_bh1750.c

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <fcntl.h>
  3. #include <linux/i2c-dev.h>
  4. #include <errno.h>
  5. #define I2C_ADDR 0x5c
  6. int main(void)
  7. {
  8.         int fd;
  9.         char buf[3];
  10.         char val,value;
  11.         float flight;
  12.         fd=open("/dev/i2c-1",O_RDWR);
  13.         if(fd<0)
  14.         {
  15.                 printf("err open file:%s\r\n",strerror(errno)); return 1;
  16.         }
  17.         if(ioctl( fd,I2C_SLAVE,I2C_ADDR)<0 )
  18.         {
  19.                 printf("ioctl error : %s\r\n",strerror(errno));return 1;
  20.         }
  21.         val=0x01;
  22.         if(write(fd,&val,1)<0)
  23.         {
  24.                 printf("write 0x01 err\r\n");
  25.         }
  26.         val=0x10;
  27.         if(write(fd,&val,1)<0)
  28.         {
  29.                 printf("write 0x10 err\r\n");
  30.         }
  31.         while(1)

  32.         {
  33.                 if(read(fd,&buf,3))
  34.                 {
  35.                         flight=(buf[0]*256+buf[1])/1.2;
  36.                         printf("light is %6.3f\r\n",flight);
  37.                 }
  38.                 else
  39.                 {
  40.                         printf("read light error\r\n");
  41.                 }
  42.                 usleep(100000);//sleep 0.1s
  43.         }
  44. }
编译:
gcc  -o  bh1750  iic_bh1750.c
执行:
./bh1750
效果如下:


阅读(865) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~