1.GY30简介
GY-30是一款内置ROHM-BH1750FLV芯片的数字光照强度模块,用于光照强度采集。
BH1750FVl是一种用于RC总线接口的数字环境光传感器LC。该芯片最适合于获取移动电话液晶显示器和按键背光功率的环境光数据。在高分辨率(1~65535 l×)范围内检测是可行的。
手机、数码相机、车载导航,PDA、LCD显示等。
BH1750指令集
#define BHAddWrite 0x46 //写地址
#define BHAddRead 0x47 //读地址
#define BHPowDown 0x00 //关闭模块
#define BHPowOn 0x01 //打开模块等待指令
#define BHReset 0x07 //重置数据寄存器仅在BHpowOn模式下有效
#define BHModeH1 0x10 //高分辨率 模式1 单位 11X 测量时间 120ms
#define BHModeH2 0x11 //高分辨率 模式2 单位 11X 测量时间 120ms
#define BHModeL 0x13 //低分辨率 单位4lx 测量时间16ms
#define BHSigModeH 0x20 //一次测量高分辨率模式1,然后转到powerdown模式
#define BHSigModeH2 0x21 //同上类似
#define BHSigModeL 0x23 //同上类似
模块驱动时序
//发送起始信号
void IIC_Start(void)
{
IIC_SDAout_Mode();//输出模式
IIC_SCL=1;
IIC_SDAout=1;
delay_us(2);
IIC_SDAout=0;
IIC_SCL=0;//方便后续数据收发
}
//停止信号
void IIC_Stop(void)
{
IIC_SDAout_Mode();//输出模式
IIC_SCL=0;
IIC_SDAout=0;
delay_us(2);
IIC_SCL=1;
delay_us(2);
IIC_SDAout=1;
}
/***********发送应答信号**************************
**
**形参:u8 ack -- 0应答,1非应答
**
***************************************************/
void IIC_SendAck(u8 ack)
{
IIC_SDAout_Mode();//输出模式
IIC_SCL=0;//告诉从机,主机开始发送数据
IIC_SDAout=ack&0x01;
delay_us(2);
IIC_SCL=1;//告诉从机,主机数据发送完成
//方便下一次数据收发
delay_us(2);
IIC_SCL=0;
}
//获取应答信号
u8 IIC_Wait_Ack(void)
{
u8 cnt=0;
IIC_SDAIN_Mode();//配置为输入模式
IIC_SDAout=1;
IIC_SCL=0;//告诉从机,主机需要获取数据
delay_us(2);
IIC_SCL=1;//从机数据发送完成,主机开始读取数据
while(IIC_SDAin)
{
cnt++;
delay_us(1);
if(cnt>=100)return 1;
}
delay_us(2);
IIC_SCL=0;//方便下一次数据收发
return 0;
}
BH1750发送数据
void bh_data_send(u8 command)
{
do{
IIC_Start(); //iic开始
IIC_Send_Byte(BHAddWrite); //写地址
}while(IIC_Wait_Ack()); //等待响应
IIC_Send_Byte(command); //发送命令
IIC_Wait_Ack(); //等待响应
IIC_Stop(); //iic停止
}
BH1750初始化
void BH1750init(void)
{
IIC_Init();//GPIO初始化
bh_data_send(BHPowOn); //发送启动信号
bh_data_send(BHReset); //清除寄存器
bh_data_send(BHModeH1); //设置为模式2
delay_ms(180); //最高延时180ms
}
数据采集效果
全部0条评论
快来发表一下你的评论吧 !