光敏电阻是常用的光感元件,但是其感应范围比较窄,响应速度慢,且受外界干扰较大。要接收强光时,需要更加精准的数字光照传感器。本篇介绍GY-30模块的使用,其板载BH1750数字光传感器专用IC。
1. 光强传感器介绍
GY-30模块基于BH1750FVI芯片,模块采用IIC通讯方式,内置16bit ADC转换器,可以直接数字输出,光照强度范围:0~65525 lx,勒克斯「lux,通常简写为lx」是照度的国际单位。
2. 实验材料
Uno R3开发板配套USB数据线面包板及配套连接线数字光强传感器GY-30模块3. 实验步骤
1. 根据原理图搭建电路图。GY-30模块的VCC、GND分别连接开发板的5V、GND,模块的SDA、SCL分别连接开发板的A4、A5引脚,模块的ADD引脚不连接。
实验原理图如下图所示:
实物连接图如下图所示:
/* * BH1750 * 数字光照传感器实验 */ #include <Wire.h> //IIC int BH1750address = 0x23; byte buff[2]; uint16_t val = 0; void setup() { Wire.begin(); BH1750_Init(BH1750address); Serial.begin(9600); } void loop() { if (2 == BH1750_Read(BH1750address)) { if (buff[0] == 255 && buff[1] == 255) { val = 65535; } else { val = ((buff[0] << 8) | buff[1]) / 1.2; //芯片手册中规定的数值计算方式 } Serial.print(val, DEC); Serial.println("[lx]"); } delay(500); } int BH1750_Read(int address) { int i = 0; Wire.beginTransmission(address); Wire.requestFrom(address, 2); while (Wire.available()) { buff[i] = Wire.read(); // receive one byte i++; } Wire.endTransmission(); return i; } void BH1750_Init(int address) { Wire.beginTransmission(address); Wire.write(0x10); Wire.endTransmission(); }
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。4. 实验现象
打开串口监视器,波特率设置成与程序中相一致的9600。监视器中将显示环境光强度,可以通过遮挡或照射模块来改变光强度。
关注微信公众号:TonyCode
Arduino学习交流群:868283450
更多内容,欢迎关注我的公众号。 微信扫一扫下方二维码即可关注: