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

GY30是模块名 BH1750—光照度采集芯片 芯片工作流程![在这里插入图片描述]( 数据转换:

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 ”,temp); HAL_Delay(1000); }

经验分享 程序员 微信小程序 职场和发展