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