Arduino——光照傳感器BH1750(數字型,I2C接口)

BH1750傳感器,用於檢測環境光光照強度。

BH1750FVI是日本羅姆(ROHM)半導體生產的數字式環境光傳感IC。其主要特性有:

  • I2C數字接口,支持速率最大400Kbps
  • 輸出量爲光照度(Illuminance)
  • 測量範圍1~65535 lux,分辨率最小到1lux
  • 低功耗(Power down)功能
  • 屏蔽50/60Hz市電頻率引起的光照變化干擾
  • 支持兩個I2C地址,通過ADDR引腳選擇
  • 較小的測量誤差(精度誤差最大值+/-20%)
  • GND 電源地
  • ADD I2C地址引腳
  • SDA I2C總線數據引腳
  • SCL I2C總線時鐘引腳
  • VCC 電源 電壓3-5V

 

#include <Wire.h>
#include <math.h>
#include <MsTimer2.h>

int BH1750address = 0x23;//BH1750 I2C地址  //ADDR="L" for this module
byte buff[2];

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("[lux]");
    flag = 0;//歸零,等着定時中斷重新賦值
  }
}

double BH1750() //BH1750設備操作
{
  int i=0;
  double  val=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[i] = Wire.receive();  // receive one byte
    i++;
  }
  Wire.endTransmission();
  if(2==i)
  {
   val=((buff[0]<<8)|buff[1])/1.2;
  }
  return val;
}

光亮度數據參考
晚上: 0.001-0.02;
月夜: 0.02-0.3;
多雲室內: 5-50;
多雲室外: 50-500;
晴天室內: 100-1000;
夏天中午光照下: 大約10*6能量;
閱讀書籍時的照明度:50-60;
家庭錄像標準照明度:1400

首頁博客學院下載論壇問答活動專題招聘APPVIP會員
搜CSDN

創作中心

Markdown編輯器
富文本編輯器
首頁

博客管理
文章管理
評論管理
分類專欄
訂閱專欄
博客搬家
博客打賞
博客設置
博客模塊管理
自定義域名
博客等級權益
下載管理
收益中心

數據觀星


CSDN博客交流羣

打開手機QQ掃碼
或點擊 這裏加入羣聊


QQ客服

arduino操作光照傳感器BH1750(數字型,I2C接口) 
32/100

文章標籤:
分類專欄:
Arduino_EspNodeMcu
新建分類專欄
最多選擇3個分類專欄#爲二級分類
資源信息:
請填寫資源鏈接
上傳資源
文章類型:
*
https://www.geek-workshop.com/thread-1610-1-1.html        https://www.arduino.cn/thread-92182-2-13.html
*
注意:轉載請確認原文允許轉載,或者您已經獲得原文作者授權。轉載文章不能設置爲VIP可見。

發佈形式:
收益中心 
溫馨提示:請勿發佈涉及政治、廣告、營銷、翻牆、違反國家法律法規等內容,詳見《CSDN資源共享規範》


/*
【Arduino】108種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
實驗一百二十九:GY-302 數字量光強度檢測 光照傳感器 BH1750FVI 光線檢測模塊
項目:依據光亮度控制LED
Module        UNO
 5 VCC   ——   5V
 6 GND  ——   GND
 7 SCL    ——   A5
 8 SDA   ——   A4
 9 ADD  ——   NC
*/
 
#include <Wire.h> //IIC庫
#include <math.h> 
 
int BH1750address = 0x23;//芯片地址爲16位23
byte buff[2];
void setup(){
  pinMode(13,OUTPUT);
  Wire.begin();
  Serial.begin(9600);
}
 

void loop(){
  int i;
  uint16_t val=0;
  BH1750_Init(BH1750address);
  delay(100);
  if(2==BH1750_Read(BH1750address)) {
   val=((buff[0]<<8)|buff[1])/1.2;
   Serial.print(val,DEC);     
   Serial.println("[lx]"); 
  }
 
  delay(150);
  if (val<100) {
    digitalWrite(13,HIGH);
  }
  else {
    digitalWrite(13,LOW);
  }
}
 
 
 
int BH1750_Read(int address) {
  int i=0;
  Wire.beginTransmission(address);
  Wire.requestFrom(address, 2);
  while(Wire.available()) {
    buff = Wire.read();  // read one byte
    i++;
  }
  Wire.endTransmission();  
 
  return i;
}
 

void BH1750_Init(int address) {
  Wire.beginTransmission(address);
  Wire.write(0x10);//1lx reolution 120ms
  Wire.endTransmission();
}
 

測量程序步驟:

4、指令集合結構:

5、測量模式說明:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章