|
【GD32F350分享】【五】GY-30光强模块驱动程序编写
[复制链接]
本次作品中使用GY-30光强模块采集周围光照强度信息,来调节OLED显示屏的显示亮度。GY-30 数字光模块采用了BH1750FVI传感器,采用IIC数字接口。BH1750环境光传感器内置16位的模数转换器,它能够直接输出一个数字信号,不需要再做复杂的计算。这是一种更精良的和容易使用简易电阻器的版本,通过计算电压,来获得有效的数据。这款环境光传感器能够直接通过光度计来测量。光强度的单位是流明"lx"。当物体在均匀的光照下它能够在每平方米获得1lx的光通量,它们的光强度是1lx。
再工程目录Driver文件夹下增加bh1750源文件和头文件,并做接口配置:
BH1750内部寄存器定义:
- #define BH1750_ADDR 0x46 //定义器件在IIC总线中的从地址
- //***************BH1750内部寄存器地址***********
- #define BH1750_POWER_DOWN 0x00 //关闭模块
- #define BH1750_POWER_ON 0x01 //打开模块等待测量指令
- #define BH1750_RESET 0x07 //重置数据寄存器值在PowerOn模式下有效
- #define BH1750_CONT_H_MODE 0x10 //高分辨率 单位1lx 测量时间120ms
- #define BH1750_CONT_H_MODE2 0x11 //高分辨率模式2 单位0.5lx 测量时间120ms
- #define BH1750_CONT_L_MODE 0x13 //低分辨率 单位4lx 测量时间16ms
- #define BH1750_ONE_H_MODE 0x20 //一次高分辨率 测量 测量后模块转到 PowerDown模式
- #define BH1750_ONE_H_MODE2 0x21 //同上类似
- #define BH1750_ONE_L_MODE 0x23 //同上类似
- #define BH1750_CHG_MEAS_TIME_H 0x40
- #define BH1750_CHG_MEAS_TIME_L 0x60
复制代码
- //BH1750 IIC控制函数
- void BH1750_I2C_GPIO_Config(void);
- void BH1750_I2C_Delay(void);
- uint8_t BH1750_I2C_Start(void);
- void BH1750_I2C_Stop(void);
- void BH1750_I2C_Ack(void);
- void BH1750_I2C_NoAck(void);
- uint8_t BH1750_I2C_WaitAck(void);
- void I2C_BH1750_SendByte(uint8_t SendByte);
- unsigned char BH1750_I2C_RadeByte(void);
- uint8_t BH1750_Single_Write(unsigned char SlaveAddress,unsigned char REG_Address,unsigned char REG_data);
- unsigned char BH1750_Single_Read(unsigned char SlaveAddress,unsigned char REG_Address);
- uint8_t BH1750_Write_Cmd(unsigned char cmd);
- void Init_BH1750(void);
- uint16_t READ_BH1750(void);
复制代码
使用OLED对光强数据进行显示,调节光强亮度,可以看到采集的数据变化。
|
|