本站改版新增arduino频道
arduino 光照强度BH1750传感器
案例1:实时监测光照强度:
#include <Wire.h>
#include <BH1750.h>
BH1750 lightMeter;
void setup() {
Serial.begin(9600);
lightMeter.begin();
}
void loop() {
uint16_t lux = lightMeter.readLightLevel();
Serial.print("光照强度:");
Serial.print(lux);
Serial.println(" lx");
delay(1000);
}
案例2:光照强度控制LED灯:
#include <Wire.h>
#include <BH1750.h>
BH1750 lightMeter;
const int ledPin = 13;
void setup() {
Serial.begin(9600);
lightMeter.begin();
pinMode(ledPin, OUTPUT);
}
void loop() {
uint16_t lux = lightMeter.readLightLevel();
Serial.print("光照强度:");
Serial.print(lux);
Serial.println(" lx");
if (lux < 100) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
delay(1000);
}
案例3:光照强度数据记录:
#include <Wire.h>
#include <BH1750.h>
#include <SD.h>
BH1750 lightMeter;
const int chipSelect = 10;
File dataFile;
void setup() {
Serial.begin(9600);
lightMeter.begin();
SD.begin(chipSelect);
dataFile = SD.open("light_data.txt", FILE_WRITE);
if (dataFile) {
dataFile.println("时间,光照强度");
dataFile.close();
}
}
void loop() {
uint16_t lux = lightMeter.readLightLevel();
Serial.print("光照强度:");
Serial.print(lux);
Serial.println(" lx");
dataFile = SD.open("light_data.txt", FILE_WRITE);
if (dataFile) {
String data = String(millis()) + "," + String(lux);
dataFile.println(data);
dataFile.close();
}
delay(1000);
}
案例4:读取光强度值
#include <Wire.h>
#include <BH1750.h>
BH1750 lightSensor;
void setup() {
Serial.begin(9600);
lightSensor.begin();
// 设置传感器的测量模式,默认为连续高分辨率模式
lightSensor.configure(BH1750_ONE_TIME_HIGH_RES_MODE);
}
void loop() {
// 读取光强度值
uint16_t lux = lightSensor.readLightLevel();
// 输出光强度值
Serial.print("光强度:");
Serial.print(lux);
Serial.println(" lux");
delay(1000);
}
要点解读:
该程序使用BH1750库来读取BH1750数字光强度传感器的数据。
在setup()函数中,通过Serial.begin(9600)初始化串口通信,并调用lightSensor.begin()来初始化传感器。
使用lightSensor.configure(BH1750_ONE_TIME_HIGH_RES_MODE)设置传感器的测量模式为连续高分辨率模式。
在loop()函数中,使用lightSensor.readLightLevel()读取光强度值。
通过串口监视器输出光强度值。
使用delay()函数添加适当的延迟,以便进行下一次读取。
———————————
案例5:连续监测光强度
#include <Wire.h>
#include <BH1750.h>
BH1750 lightSensor;
void setup() {
Serial.begin(9600);
lightSensor.begin();
// 设置传感器的测量模式为连续高分辨率模式
lightSensor.configure(BH1750_CONTINUOUS_HIGH_RES_MODE);
}
void loop() {
// 读取光强度值
uint16_t lux = lightSensor.readLightLevel();
// 输出光强度值
Serial.print("光强度:");
Serial.print(lux);
Serial.println(" lux");
delay(1000);
}
要点解读:
该程序使用BH1750库来读取BH1750数字光强度传感器的数据。
在setup()函数中,通过Serial.begin(9600)初始化串口通信,并调用lightSensor.begin()来初始化传感器。
使用lightSensor.configure(BH1750_CONTINUOUS_HIGH_RES_MODE)设置传感器的测量模式为连续高分辨率模式。
在loop()函数中,使用lightSensor.readLightLevel()读取光强度值。
通过串口监视器输出光强度值。
使用delay()函数添加适当的延迟,以便进行下一次读取。
案例6:光强度阈值检测
#include <Wire.h>
#include <BH1750.h>
BH1750 lightSensor;
// 光强度阈值
const uint16_t threshold = 500;
void setup() {
Serial.begin(9600);
lightSensor.begin();
// 设置传感器的测量模式为连续高分辨率模式
lightSensor.configure(BH1750_CONTINUOUS_HIGH_RES_MODE);
}
void loop() {
// 读取光强度值
uint16_t lux = lightSensor.readLightLevel();
// 输出光强度值
Serial.print("光强度:");
Serial.print(lux);
Serial.println(" lux");
// 检测光强度是否超过阈值
if (lux > threshold) {
Serial.println("光强度超过阈值!");
// 在此处可以执行其他操作,例如触发警报等
}
delay(1000);
}
要点解读:
该程序使用BH1750库来读取BH1750数字光强度传感器的数据。
在setup()函数中,通过Serial.begin(9600)初始化串口通信,并调用lightSensor.begin()来初始化传感器。
使用lightSensor.configure(BH1750_CONTINUOUS_HIGH_RES_MODE)设置传感器的测量模式为连续高分辨率模式。
在loop()函数中,使用lightSensor.readLightLevel()读取光强度值。
————————————————
原文链接:https://blog.csdn.net/weixin_41659040/article/details/135138476
Copyright © 2014 ESP56.com All Rights Reserved
晋ICP备14006235号-22 晋公网安备14108102001165号
执行时间: 0.0094919204711914 seconds