|
|
光强度计 在强光下出负值 求解!!
使用模块 GY-30
https://item.taobao.com/item.htm?id=529418647596
#include <LiquidCrystal.h>
#include <Wire.h>
#include <math.h>
int BH1750address = 0x23;//BH1750 I2C地址
byte buff[2];
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);//设置接口
void setup()
{
Wire.begin();
Serial.begin(9600);
lcd.begin(16,2);
lcd.clear(); //清屏
delay(1000); //延时1000ms
}
void loop ()
{
Serial.print( BH1750() );
Serial.println("[lx]");
lcd.setCursor(0, 0) ; //设置光标位置为第1行第1个位置
lcd.print("LUX:"); //使屏幕显示文字
lcd.setCursor(6, 0) ;
lcd.print(BH1750()); //使屏幕显示文字Button OFF
//-------------------------------
if(int(BH1750())<20)
{
lcd.setCursor(0, 1) ;
lcd.print("Low ");
}
else if(int(BH1750())<100)
{
lcd.setCursor(0, 1) ;
lcd.print("Corridor ");
}
else if(int(BH1750())<150)
{
lcd.setCursor(0, 1) ;
lcd.print("Living room ");
}
else if(int(BH1750())<200)
{
lcd.setCursor(0, 1) ;
lcd.print("Restaurant ");
}
else if(int(BH1750())<300)
{
lcd.setCursor(0, 1) ;
lcd.print("Waiting room ");
}
else if(int(BH1750())<500)
{
lcd.setCursor(0, 1) ;
lcd.print("Office ");
}
else if(int(BH1750())<1000)
{
lcd.setCursor(0, 1) ;
lcd.print("Blackboard ");
}
else if(int(BH1750())<3000)
{
lcd.setCursor(0, 1) ;
lcd.print("Sun ");
}
else if(int(BH1750())<10000)
{
lcd.setCursor(0, 1) ;
lcd.print("Overflow ");
}
}
double BH1750() //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 = Wire.read(); // receive one byte
i++;
}
Wire.endTransmission();
if(2==i)
{
val=((buff[0]<<8)|buff[1])/1.2;
}
return val;
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|