像手机、平板之类的电子设备,屏幕亮度都能随环境光强度自动调节,其内部使用的是小体积的数字光照传感器。本篇我们使用GY-30光照传感器模块来控制OLED显示屏的背光亮度,使其随环境光自动调节。
OLED屏的VCC、GND、SDA、SCL与GY-30模块的VCC、GND、SDA、SCL相对应连接,然后连接到开发板的5V、GND、A4、A5。两个模块都使用了硬件IIC,由于各自地址不同,所以并不会相互影响,这也是IIC通讯协议的优势所在。
实验原理图如下图所示:

实验原理图
/*
OLED_BH1750
光照传感器OLED背光控制
*/
#include < Arduino.h >
#include < U8g2lib.h >
#include < Wire.h >
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);//使用硬件IIC
int BH1750address = 0x23;
byte buff[2];
uint16_t val = 0;
char str[6];
void setup()
{
Wire.begin();
BH1750_Init(BH1750address);
u8g2.begin();
u8g2.setFont(u8g2_font_fur20_tf);
}
void loop()
{
if (2 == BH1750_Read(BH1750address))
{
if (buff[0] == 255 && buff[1] == 255)
{
val = 65535;
} else {
val = ((buff[0] < < 8) | buff[1]) / 1.2; //芯片手册中规定的数值计算方式
}
}
strcpy(str, u8x8_u16toa(val, 5));
u8g2.firstPage();
do {
u8g2.drawStr(20, 20, "-Light-");
u8g2.drawStr(10, 60, str);
u8g2.drawStr(95, 60, "Lx");
u8g2.setContrast(255 - map(val, 0, 500, 0, 255)); //将光照数据进行区间映射,控制OLED背光
} while ( u8g2.nextPage() );
}
int BH1750_Read(int address)
{
int i = 0;
Wire.beginTransmission(address);
Wire.requestFrom(address, 2);
while (Wire.available())
{
buff[i] = Wire.read(); // receive one byte
i++;
}
Wire.endTransmission();
return i;
}
void BH1750_Init(int address)
{
Wire.beginTransmission(address);
Wire.write(0x10);
Wire.endTransmission();
}

程序下载
OLED屏幕显示采集到的环境光强,并且屏幕亮度随环境光强度而自动调节。
在U8g2库中,通过函数 setContrast() 来调节背光亮度,此函数接收0~255之间的数值,数值越大,背光越亮。
我们通过 map() 函数,截取光照强度的一部分[0, 500],映射成[0,255]之间的数值。我们希望当光照弱时背光亮一些,光照强时背光暗一些,所以setContrast()函数接收的数值使用255减去实际的光照强度,如下:
u8g2.setContrast(255 - map(val, 0, 500, 0, 255));
AI技术是如何助推新一代传感器大力发展的?
时间:2026-03-18
物联网的特点有哪些 物联网的常见应用有哪...
时间:2026-03-18
【NuMaker-M2354试用】spi测试分享
时间:2026-03-18
一种用于测量单细胞瞬态响应的封闭式微流控...
时间:2026-03-18
电流检测方案的演变过程
时间:2026-03-18
CMOS兼容的Te/Si超快近红外光电探测器设计实...
时间:2026-03-18
PVDF压电纤维仿生柔性传感器水下传感特性介...
时间:2026-03-18
浅析基于SLAM的机器人自主定位导航
时间:2026-03-18
自动驾驶中基于网格的交通场景感知介绍
时间:2026-03-18
TMR磁传感器芯片有哪些特性?有哪些应用?
时间:2026-03-18
玻璃釉电容器的结构与特点
时间:2026-03-05
电阻的标称阻值和允许偏差
时间:2026-03-05
石英灯电子变压器电路原理
时间:2026-03-06
变压器并列运行的条件浅析
时间:2026-03-06
碳膜电阻如何识别_金属膜电阻器和碳膜电阻器...
时间:2026-03-05
三极管的主要参数
时间:2026-03-07
光伏控制器简介
时间:2026-03-06
关于STM32WL LSE 添加反馈电阻后无法起振的...
时间:2026-03-05
可调电阻怎么接线
时间:2026-03-05
压敏电阻有正负极吗
时间:2026-03-05