hunduncn 发表于 2012-8-8 00:50:35

arduino操作光照传感器BH1750(数字型,I2C接口)

前些天买了个BH1750传感器,打算用在气象站上。用于检测环境光光照强度
主角登场


引脚说明

[*]GND 电源地

[*]ADD I2C地址引脚
[*]SDA I2C总线数据引脚
[*]SCL I2C总线时钟引脚
[*]VCC 电源 电压3-5V










线路连接
            

程序代码#include <Wire.h>
#include <math.h>
#include <MsTimer2.h>

int BH1750address = 0x23;//BH1750 I2C地址
byte buff;

int flag = 0;//定时中断标志

void timer()//定时中断函数
{
flag = 1;
}

void setup()
{
Wire.begin();
Serial.begin(9600);
MsTimer2::set(2000, timer); //定时器设置,每2秒触发一次timer函数操作
MsTimer2::start();
}

void loop()
{
if(flag )//
{
    Serial.print( BH1750() );
    Serial.println("");
    flag = 0;//归零,等着定时中断重新赋值
}
}

double BH1750() //BH1750设备操作
{
int i=0;
doubleval=0;
//开始I2C读写操作
Wire.beginTransmission(BH1750address);
Wire.send(0x10);//1lx reolution 120ms//发送命令
Wire.endTransmission();

delay(200);
//读取数据
Wire.beginTransmission(BH1750address);
Wire.requestFrom(BH1750address, 2);
while(Wire.available()) //
{
    buff = Wire.receive();// receive one byte
    i++;
}
Wire.endTransmission();
if(2==i)
{
   val=((buff<<8)|buff)/1.2;
}
return val;
}运行结果


首发链接:http://www.ardapi.com/post/2012-08-08/40031872959

开心就好 发表于 2012-8-8 14:17:29

呵呵,顶一个

hunduncn 发表于 2012-8-8 22:25:28

开心就好 发表于 2012-8-8 14:17 static/image/common/back.gif
呵呵,顶一个

谢谢。支持。你是ukonline2000 是吗?

开心就好 发表于 2012-8-9 12:13:52

hunduncn 发表于 2012-8-8 22:25 static/image/common/back.gif
谢谢。支持。你是ukonline2000 是吗?

哈哈,没错小胖子

hunduncn 发表于 2012-8-9 13:19:30

开心就好 发表于 2012-8-9 12:13 static/image/common/back.gif
哈哈,没错小胖子

我之前在你那买了DS3231 RTC模块呢。

Randy 发表于 2012-8-9 16:55:48

顶一个,有空看看这个传感器的特性!

飞翔的红猪 发表于 2012-8-9 17:02:47

可惜这个传感器最大输出值是2字节,在太阳底下就溢出变成0了

hunduncn 发表于 2012-8-9 18:32:30

飞翔的红猪 发表于 2012-8-9 17:02 static/image/common/back.gif
可惜这个传感器最大输出值是2字节,在太阳底下就溢出变成0了

是的。放在室内比较好。

开心就好 发表于 2012-8-9 21:42:45

hunduncn 发表于 2012-8-9 13:19 static/image/common/back.gif
我之前在你那买了DS3231 RTC模块呢。

多谢支持哟

yangking91 发表于 2012-8-18 15:11:01

貌似Vcc应该接3.3V电压

hunduncn 发表于 2012-8-20 18:01:46

yangking91 发表于 2012-8-18 15:11 static/image/common/back.gif
貌似Vcc应该接3.3V电压

我接5V正常的。

yettoo54 发表于 2013-2-21 21:57:09

39行的 WIRE.SEND 0x10 精度1LUX/   0x11 精度0.5LUX/0x13 精度4LUX 大家可以根据需要设置采集分辨率哈
因为只有2个字节,所以超过28067就为负数输出,光越强 绝对值越小,所以建议在返回值VAI 那里加个判断,如果是负数IF(VAI〈0)VAI=56134+VAI;RETURN VAI;

恺之 发表于 2013-2-25 17:24:41

你好,我在下载程序时遇到了问题,如图,求教,谢谢了!

天天向上/tp 发表于 2013-3-28 13:37:59

恺之 发表于 2013-2-25 17:24 static/image/common/back.gif
你好,我在下载程序时遇到了问题,如图,求教,谢谢了!

我也遇到了这个问题,因为#include <math.h>
#include <MsTimer2.h>这2个函数没得

恺之 发表于 2013-3-30 16:10:51

天天向上/tp 发表于 2013-3-28 13:37 static/image/common/back.gif
我也遇到了这个问题,因为#include
#include 这2个函数没得

哦~谢谢了!
页: [1] 2
查看完整版本: arduino操作光照传感器BH1750(数字型,I2C接口)