这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版 | |||
ocrobot:sensor_suite:bh1750:main [2019/12/23 03:51] – [代码] 董凯萍 | ocrobot:sensor_suite:bh1750:main [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== 光照强度检测计 ====== | ||
+ | OCROBOT 光照强度检测计采用OCROBOT ALPHA系列模块堆叠而成。 | ||
+ | 本模型可以测量当前位置的光照强度,并且可以根据收集的光线强度数据来控制其他执行装置,分辨率有16位(1lx-65535lx)。响应光谱为人眼可见光谱。 | ||
+ | 勒克司(lux,法定符号lx)是照度的单位,等于1流明的光通量均匀照在1平方米表面上所产生的照度。 | ||
+ | |||
+ | =====图片展示===== | ||
+ | {{: | ||
+ | =====主要硬件===== | ||
+ | - OCROBOT ALPHA 8F32P-U主控板 | ||
+ | - OCROBOT ALPHA BH1750FVI 光照度传感器模块 | ||
+ | - OCROBOT ALPHA LCD1602显示屏 | ||
+ | - OCROBOT ALPHA 双路锂电池扩展板 | ||
+ | |||
+ | ==== 代码 ==== | ||
+ | <code cpp> | ||
+ | #include < | ||
+ | #include < | ||
+ | #define ADDR 0b0100011 | ||
+ | LiquidCrystal_I2C lcd(0x20, 16, 2); | ||
+ | void setup() { | ||
+ | // put your setup code here, to run once: | ||
+ | Serial.begin(9600); | ||
+ | Wire.begin(); | ||
+ | Wire.beginTransmission(ADDR); | ||
+ | Wire.write(0b00000001); | ||
+ | Wire.endTransmission(); | ||
+ | lcd.init(); | ||
+ | lcd.backlight(); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // put your main code here, to run repeatedly: | ||
+ | int val = 0; | ||
+ | |||
+ | // reset | ||
+ | Wire.beginTransmission(ADDR); | ||
+ | Wire.write(0b00000111); | ||
+ | Wire.endTransmission(); | ||
+ | |||
+ | delay(100); | ||
+ | |||
+ | |||
+ | |||
+ | Wire.beginTransmission(ADDR); | ||
+ | Wire.write(0b00100000); | ||
+ | Wire.endTransmission(); | ||
+ | |||
+ | // typical read delay 120ms | ||
+ | delay(120); | ||
+ | |||
+ | Wire.requestFrom(ADDR, | ||
+ | |||
+ | for (val=0; Wire.available()> | ||
+ | char c = Wire.read(); | ||
+ | // | ||
+ | val = (val << 8) + (c & 0xFF); | ||
+ | } | ||
+ | |||
+ | val = val / 1.2; | ||
+ | lcd.clear(); | ||
+ | lcd.setCursor(0, | ||
+ | lcd.print(" | ||
+ | lcd.setCursor(4, | ||
+ | lcd.println(val); | ||
+ | |||
+ | // | ||
+ | digitalWrite(13, | ||
+ | delay(100); | ||
+ | } | ||
+ | </ |