【雕爷学编程】Arduino动手做(122)---BH1750FVI 光线检测模块5

在这里插入图片描述

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百二十二:GY-302 数字量光强度检测 光照传感器 BH1750FVI 光线检测模块

在这里插入图片描述
在这里插入图片描述

GY-302光照传感器模块的实验环境
一、GY-302光照传感器模块实验所需硬件清单

Arduino Uno开发板 X1
杜邦线 若干(备了9条)
GY-302光照传感器模块X1
IIC/I2C 1602 LCD液晶屏模块X1
高电平触发有源蜂鸣器模块X1
LED发光二极管(绿、蓝色)X2
高电平触发单路5V继电器模块X1
Proto Shield 原型扩展板(带mini面包板)X1

在这里插入图片描述

程序四:使用OLED显示环境光照度值
(1)实验接线示意图

在这里插入图片描述

(2)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序四:使用OLED显示环境光照度值
*/

#include <Wire.h>
#include <BH1750.h>
BH1750 lightMeter;

//设置OLED相关参数
#include <Adafruit_SSD1306.h>
#define OLED_ADDR 0x3C
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
  //初始化监视器序列
  Serial.begin(9600);

  // 初始化和取消显示
  display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
  display.display();
  delay(2000);
  display.clearDisplay();

  // 初始化总线 I2C
  Wire.begin();
  lightMeter.begin();
  Serial.println(F("BH1750传感器开始测量"));
}

void loop() {
  float lux = lightMeter.readLightLevel();

  //监控系列
  Serial.print("光照: ");
  Serial.print(lux);
  Serial.println(" lx");

  //OLED显示
  display.setTextColor(WHITE);
  display.setTextSize(2);
  display.setCursor(30, 0);
  display.println("BH1750");
  display.setCursor(15, 20);
  display.print(lux, 1);
  display.println(" lx");
  display.setTextSize(1);
  display.setCursor(15, 50);
  display.println("www.Arduino.com");
  display.display();
  delay(1000);
  display.clearDisplay();
}

(3)实验串口返回情况

在这里插入图片描述

(4)实验场景图

在这里插入图片描述

在这里插入图片描述

程序五:测量环境光照度值
(1)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序五:测量环境光照度值
*/

#include <Wire.h>
#include <math.h> //导入math库
int BH1750address = 0x23; //i2c地址
byte buff[2];

void setup(){
  Wire.begin();
  Serial.begin(57600);//初始化串口
}
 
void loop(){
  int i;
  uint16_t val=0;
  BH1750_Init(BH1750address);
  delay(200);
 
  if(2==BH1750_Read(BH1750address))
  {
    val=((buff[0]<<8)|buff[1])/1.2;
    Serial.print(val,DEC);   //串口打印光照值
    Serial.println("lux"); 
  }
  delay(150);
}
 
int BH1750_Read(int address) 
{
  int i=0;
  Wire.beginTransmission(address);
  Wire.requestFrom(address, 2);
  while(Wire.available()) 
  {
    buff[i] = Wire.read();//接收一个字节
    i++;
  }
  Wire.endTransmission();  
  return i;
}
 
void BH1750_Init(int address) 
{
  Wire.beginTransmission(address);
  Wire.write(0x10);//1lx 分辨率 120ms
  Wire.endTransmission();
}

(2)实验串口返回情况

在这里插入图片描述

程序六:Arduino 和 GY-302 模块
(1)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序六:Arduino 和 GY-302 模块
*/

#include <Wire.h>
#include <BH1750.h>//导入BH1750库
BH1750 GY302; // 初始化 BH1750 对象

void setup() {
Serial.begin(9600); //初始化串口
GY302.begin(); //初始化GY-302模块
}

void loop() {
uint16_t lux = GY302.readLightLevel();// 从模块中读取
Serial.print("Light: ");// 显示到串口监视器
Serial.print(lux);
Serial.println(" lx");
delay(1000);//暂停1秒
}

(2)实验串口返回情况

在这里插入图片描述
程序七:通过1602 LCD屏显示光照值
(1)实验接线示意图

在这里插入图片描述

(2)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序七:通过1602 LCD屏显示光照值
*/

#include <Wire.h>
#include <BH1750.h>//导入BH1750驱动库
#include <LiquidCrystal_I2C.h>//导入1602 LCD驱动库

BH1750 lightMeter;
LiquidCrystal_I2C lcd(0x27,16,2);//设置1602 LCD参数

void setup(){
lcd.init(); //初始化1602 LCD显示屏
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Light intensity");
lcd.setCursor(0,1);

Serial.begin(9600);//初始化串口
Wire.begin();

lightMeter.begin();
Serial.println(F("BH1750 Test"));
}

void loop() {
uint16_t lux = lightMeter.readLightLevel();//读取BH1750数据
Serial.print("Light: ");
Serial.print(lux);
Serial.println(" lx");
lcd.setCursor(0,1);
lcd.print(lux);
lcd.println(" LUX ");
delay(1000);
}

(3)实验串口返回情况

在这里插入图片描述
(4)实验场景图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值