07
2016
01

arduino连接bh1750的库

bh1750和bmp180可以直接并联

bh1750.h

#ifndef bh1750_h
#define bh1750_h

#if defined(ARDUINO) && (ARDUINO >= 100)
#include <Arduino.h>
#else
#include <WProgram.h>
#endif

#include <Wire.h>
#include <math.h>
class bh1750{
     public:
        bh1750();
        double lx();
     private:
        int BH1750address = 0x23;//BH1750 I2C地址
        unsigned char buff[2];
     
};
#endif

bh1750.c

#include "bh1750.h"

 bh1750::bh1750()
 {
   Wire.begin();
 }

 double bh1750::lx() //BH1750设备操作
 {
   int i=0;
   double val=0;
   //开始I2C读写操作
   Wire.beginTransmission(BH1750address);
   Wire.write(0x10);//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;
 }

bh1750_test.ino

#include "bh1750.h"
bh1750 BH1750;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println( BH1750.lx() );
}


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。