BH1750光照强度传感器模块二的在ArduinoUno板基础上开发

硬件开发 同时被 3 个专栏收录
2 篇文章 0 订阅
2 篇文章 0 订阅

BH1750光照强度传感器模块二的在ArduinoUno板基础上开发

首先是传感器正面
在这里插入图片描述

接下来是反面
在这里插入图片描述
连接方式:

BH1750接口Arduino Uno 板接口
VCC5V
SCLA4
DATA5
GNDGND
ADDR可接可不接

BH1750传感器产生的结果是二进制形式分成两个字节存储的。而在传从的过程中他的高位和地位会颠倒,所以我们得对获取到的数据进行相关的处理才能还原出传感器的原始测量值。

先是对高位部分进行左移8个位 再与 低位部分进行 按位或操作 最终得到一个16位的二进制数 在对这个数的十进制形式 乘 5/6就得到原始的测量数据。

Final_value = ( ( buff[0] << 8 ) | buff[1] ) / 1.2;

光照传感器BH1750是使用I2C双向二线制同步串行协议。
所以利用光照传感器BH1750的I2C设备地址就能访问传感器的一些数据。
利用Arduino的Wire库能给指定的I2C地址写入二进制数据,也可以从制定的I2C地址获取数据。
Wire库有write()方法给begingTransmission方法所制定的设备地址写入指定的16进制数据(一般是指命令)。[1]
可以通过这两个方法给传感器发从命令。
下面是BH1750的几种测量模式的命令。
在这里插入图片描述
在写Arduino代码的时候可以这样表示这些指令:

     0xAB      //    其中 A为前四位的十进制形式   B为后四位的十进制形式
例如:
		0x13     指的是  0001_0011

具体代码:
BH1750.ino

/*
 * 该测试是成功的。
 * 直接把BH1750光照强度传感器的SCL和DAT接口分别接到Arduino的A4,A5接口,
 * 上传改代码运行一下就ok。
 * @Sadam
 * 1903249375@qq.com
 * 
*/
#include <Wire.h>
#include <math.h>
#define    BH1750_CON_H    0x10 // 连续高分辨率模式,1lx,120ms
#define   BH1750_CON_H2   0x11 // 连续高分辨率模式,0.5lx,120ms
#define   BH1750_CON_L    0x13 // 连续低分辨率模式,4lx,16ms
#define   BH1750_ONE_H    0x20 // 一次高分辨率模式,1lx,120ms
#define   BH1750_ONE_H2   0x21 // 一次高分辨率模式,0.5lx,120ms
#define   BH1750_ONE_L    0x23 // 一次低分辨率模式,4lx,16ms
#define   BH1750address   0x23 //BH1750 I2C地址


byte buff[2];

void setup()
{
Wire.begin();
Serial.begin(9600);
}

void loop()
{
Serial.println( BH1750() );
}


double BH1750() //BH1750设备操作
{
    int i=0;
    double val=0;
    //开始I2C读写操作
    Wire.beginTransmission(BH1750address);
    Wire.write(0x21);//1lx reolution 120ms//发送命令
    Wire.endTransmission();
    delay(200);
    //读取数据
    Wire.beginTransmission(BH1750address);
    Wire.requestFrom(BH1750address, 2);
    while(Wire.available()) //
    {
      buff[i] = Wire.read(); // receive one byte
      i++;
    }
    Wire.endTransmission();
    if(2==i)
    {
      val=((buff[0]<<8)|buff[1])/1.2;
    }
     return val;
}

这样就ok的。

  • 0
    点赞
  • 2
    评论
  • 10
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值