本站改版新增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.0095031261444092 seconds