本站改版新增arduino频道

Micropython
Arduino

arduino 光照强度BH1750传感器


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.0095729827880859 seconds