【Arduino IDE】nodeMCU连接GY-30(BH1750)

BH1750FVI

是日本罗姆(ROHM)半导体生产的数字式环境光传感IC,内置16位的模数转换器,它能够直接输出一个数字信号,不需要再做复杂的计算。这是一种更精良的和容易使用简易电阻器的版本,通过计算电压,来获得有效的数据。这款环境光传感器能够直接通过光度计来测量。光强度的单位是流明"lx"。当物体在均匀的光照下它能够在每平方米获得1lx的光通量,它们的光强度是1lx。有时为了充分利用光源,你可以增加一个光源的反射装置。那样在某些方向就能获得更多的光通量,以增加被照表面的亮度。

连接图

VCC —— 5V
GND —— GND
SCL —— D1
SDA —— D2
ADD —— NC
在这里插入图片描述

代码一(不需要第三方库)

#include <Wire.h> 
#include <math.h> 
int BH1750address = 0x23; 

union data
{
  int a;
  byte b[2];
  };
data buff;
void setup()
{
  Wire.begin(D1,D2);
  Serial.begin(115200);
}
 
void loop()
{
  int i;
  uint16_t val=0;
  BH1750_Init(BH1750address);
  delay(200);
 
  if(2==BH1750_Read(BH1750address))
  {
    val=((buff.b[0]<<8)|buff.b[1])/1.2;
    Serial.print(val,DEC);     
    Serial.println("[lx]"); 
  }
  delay(150);
}
 
int BH1750_Read(int address) 
{
  int i=0;
  Wire.beginTransmission(address);
  Wire.requestFrom(address, 2);
  while(Wire.available()) 
  {
    buff.a = Wire.read();  
    i++;
  }
  Wire.endTransmission();  
  return i;
}
 
void BH1750_Init(int address) 
{
  Wire.beginTransmission(address);
  Wire.write(0x10);
  Wire.endTransmission();
  delay(500);
}

效果图

在这里插入图片描述


利用第三方库

下载第三方库

地址:https://github.com/claws/BH1750
在这里插入图片描述

导入第三方库

在这里插入图片描述

代码二

#include <BH1750.h>
#include <Wire.h>


BH1750 lightMeter;

void setup(){

  Serial.begin(115200);
  Wire.begin(D4,D3);//D3--SCL  D4--SDA

  lightMeter.begin();
  Serial.println(F("BH1750 Test"));

}

void loop() {

  float lux = lightMeter.readLightLevel();
  Serial.print("Light: ");
  Serial.print(lux);
  Serial.println(" lx");
  delay(1000);

}

效果图

在这里插入图片描述

发布了150 篇原创文章 · 获赞 450 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/Caoyang_He/article/details/104609820