光照度传感器使用(BH1750)--GY30模块

GY30是模块名
BH1750—光照度采集芯片
光照度传感器使用(BH1750)--GY30模块_第1张图片光照度传感器使用(BH1750)--GY30模块_第2张图片
芯片工作流程![在这里插入图片描述](https://img-blog.csdnimg.cn/20190811163315422.png
光照度传感器使用(BH1750)--GY30模块_第3张图片数据转换:
在这里插入图片描述

stm32 HAL 库例程:
#define BHAddWrite 0x46 //从机地址+最后写方向位
#define BHAddRead 0x47 //从机地址+最后读方向位
#define BHPowDown 0x00 //关闭模块
#define BHPowOn 0x01 //打开模块等待测量指令
#define BHReset 0x07 //重置数据寄存器值在PowerOn模式下有效
#define BHModeH1 0x10 //高分辨率 单位1lx 测量时间120ms
#define BHModeH2 0x11 //高分辨率模式2 单位0.5lx 测量时间120ms
#define BHModeL 0x13 //低分辨率 单位4lx 测量时间16ms
#define BHSigModeH 0x20 //一次高分辨率 测量 测量后模块转到 PowerDown模式
#define BHSigModeH2 0x21 //同上类似
#define BHSigModeL 0x23 // 上类似

void GY30_Init()
{
uint8_t Mode;

//发送启动命令
Mode = BHPowOn;
HAL_I2C_Master_Transmit(&hi2c2,BHAddWrite,&Mode ,1,0xff);

Mode = BHReset;
HAL_I2C_Master_Transmit(&hi2c2,BHAddWrite,&Mode ,1,0xff);

// Mode = BHSigModeH;
// HAL_I2C_Master_Transmit(&hi2c2,BHAddWrite,&Mode ,1,0xff);

// HAL_Delay(180);
}

void Light_Value_Get(void)
{
//Mode=BHModeH1;

// Mode=BHPowOn;
// HAL_I2C_Master_Transmit(&hi2c2,BHAddWrite,&Mode,1,0xff);

Mode = BHSigModeH;
HAL_I2C_Master_Transmit(&hi2c2,BHAddWrite,&Mode ,1,0xff);

HAL_Delay(180);
HAL_I2C_Master_Receive(&hi2c2,BHAddRead,BUF,2,0xff);
dis_data=BUF[0];
dis_data=(dis_data<<8)+BUF[1];//合成数据,即光照数据
temp=(float)dis_data/1.2;

printf(“Light:%.1flx\r\n”,temp);
HAL_Delay(1000);
}

你可能感兴趣的:(光照度传感器,GY30,BH1750,HAL,stm32,stm32)