GY-30是一款采用了ROHM-BH1750FVI芯片的数字输出的感光模块,可以测量的光照度范围为0~65535勒克斯,最小误差变动为±20%,分辨度为1勒克斯。

GY-30是一个五针脚模块,包含VCC、SCL、SDA、ADDR、GND五个引脚。其中VCC接电源正极,其电压范围在3~5V之间;GND接地;SCL为时钟线;SDA为数据线;并且,SCL和SDA与单片机相连时接上一个5k阻值的上拉电阻;ADDR为寄存器的地址引脚,其接地时器件地址为0100011,接电源正极时器件地址为1011100。

GY-30与STM32单片机之间的通讯采用IIC通讯协议,这里简单讲解一下IIC通讯。

上图中,左边是起始信号,拉高数据线,再拉高时钟线,然后在时钟线为高电平时将数据线拉低,产生起始信号,之后再将时钟线拉低,等待发送数据。右边是停止信号(数据传递结束时,时钟线和数据线都为低电平),先拉高时钟线,在时钟线为高电平时将数据线拉高,产生停止信号。

数据的传递由数据线承载,保证时钟线拉高时,数据线保持稳定。发送数据1,保持时钟线为低电平,将数据线拉高;在数据线拉高过程中,将时钟线拉高,等待几us后,将时钟线拉低。发送数据0与其同理,只需要将数据线保持为低电平即可。

IIC协议在每发送完一条指令之后都会由接受指令的设备产生一个应答;若应答则继续,不应答则停止。

说完IIC同通讯,我们再来具体讲解一下BH1750芯片的通讯流程。

测量流程为:单片机发送器地址(7位)和写命令(1位)→传感器应答→单片机发送测量指令→传感器应答

其读取测量结果流程位:单片机发送器地址和读命令→传感器应答→传感器给单片机发送高8位数据→单片机应答→传感器发送低8为数据→单片机不应答(通讯结束)

下面附上程序代码(这里关于IIC协议的代码就不给出了,网上有很多,我这里采用的是正点原子编写的myiic.c文件)

bh1750.c

//写入

void Single_Write_BH1750(unsigned char REG_Address)

{

IIC_Start();

IIC_Send_Byte(BHAddWrite);

IIC_Send_Byte(REG_Address);

IIC_Stop();

}

//发送

void bh_data_send(u8 command)

{

do{

IIC_Start();

IIC_Send_Byte(BHAddWrite);

}while(IIC_Wait_Ack());

IIC_Send_Byte(command);

IIC_Wait_Ack();

IIC_Stop();

}

//接受

u16 bh_data_read(void)

{

u16 buf;

u8 a;

u8 b;

IIC_Start();

IIC_Send_Byte(BHAddRead);

IIC_Wait_Ack();

b=IIC_Read_Byte(1);

a=IIC_Read_Byte(0);

buf=b*256+a;

IIC_Stop();

return buf;

}

//初始化

void Init_BH1750(void)

{

GPIO_InitTypeDef GPIO_InitStruct;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB,&GPIO_InitStruct);

Single_Write_BH1750(0x01);

delay_ms(180);

}

bh1750.h

//各个命令代码的具体含义可以参考相关的使用说明(绝不是因为我看字太多懒得打)

#define ADDR 0x23//0100011

#define BHAddWrite 0x46

#define BHAddRead 0x47

#define BHPowDown 0x00

#define BHPowOn 0x01

#define BHReset 0x07

#define BHModeH1 0x10

#define BHModeH2 0x11

#define BHModeL 0x13

#define BHSigModeH 0x20

#define BHSigModeH2 0x21

#define BHSigModeL 0x23

void Single_Write_BH1750(unsigned char REG_Address);

void Init_BH1750(void);

void bh_data_send(u8 command);

u16 bh_data_read(void);

附上一个我当时做实验的测试结果图

懒人程序下载通道 :

https://download.csdn.net/download/qq_42560288/12673151

如果本文真的帮助到你的话,请动动小手点个赞吧!

gy30光照传感器c语言程序,STM32F103驱动GY-30(BH1750)光照强度传感器程序讲解(附加程序下载)...相关推荐

  1. STM32F103驱动GY-30(BH1750)光照强度传感器程序讲解(附加程序下载)

    GY-30是一款采用了ROHM-BH1750FVI芯片的数字输出的感光模块,可以测量的光照度范围为0~65535勒克斯,最小误差变动为±20%,分辨度为1勒克斯. GY-30是一个五针脚模块,包含VC ...

  2. dac0832三角波c语言程序,单片机驱动dac0832输出方波三角波正玄波程序

    电路图 仿真文件及完整的源代码下载地址:http://www.51hei.com/bbs/dpj-20395-1.html 下面是汇编程序源码,可以用按键来控制 org 0000h ajmp main ...

  3. 激光雷达传感器c语言编程,基于SPAD、SiPM和ToF传感器的激光雷达电路设计对比,谁才是激光雷达的未来?...

    激光雷达(LiDAR)是一种测距技术,近年来越来越多地用于汽车先进驾驶辅助系统(ADAS).手势识别和3D映射等应用.尤其在汽车领域,随着传感器融合的趋势,LiDAR结合成像.超声波.毫米波雷达,互为 ...

  4. 【STM32-库函数】光照强度传感器BH1750 GY-30

    下载地址:BH1750光照强度库文件下载 BH1750光照强度传感器(GY-30) 谢谢观看,有问题需要请教的,请加入STM32学习交流群(QQ群号:470804974),本人QQ号297427819 ...

  5. STM32F103系列驱动MH-Z14A 二氧化碳(CO2)传感器详解,使用串口输出读取(后附免费免积分程序下载链接)

    MH-Z14A 二氧化碳传感器概述         MH-Z14A 二氧化碳气体传感器(以下简称传感器)是一个通用智能小型传感器,利用非色散红外(NDIR)原理对空气中存在的 CO2进行探测,具有很好 ...

  6. DHT11温湿度传感器模块使用方法和驱动代码实现

    DHT11模块简介 DHT11是一款价格便宜,易于使用的温度湿度测量二合一传感器.它具有超小体积.极低功耗的特点.它使用单根总线与单片机进行双向的串行数据传输,信号传输距离可达20米以上.非常适用于对 ...

  7. ESP32-C3学习笔记(3):ESP32 C3 IIC总线驱动光照强度传感器(基于ESP-IDF Eclipse)

    一.硬件简介 光照强度传感器使用的是物联网俱乐部的智慧路灯案例扩展板E53_SC1,购买连接 https://item.taobao.com/item.htm?spm=2013.1.w4004-222 ...

  8. STM32F103驱动VL53L0X激光测距模块

    STM32F103驱动VL53L0X激光测距模块 简介 引脚定义 STM32F103ZET6开发板与VL53L0X模块接线 测试代码 实验结果 简介 TOF 是飞行时间(Tlme of Flight) ...

  9. PX4原生固件SPI驱动动编写与IMU传感器替换

    适用于PX4原生固件 核心目标:完成XSENS的MTI3,IMU替换.MTI3是一款航姿参考系统,可以独立的输出四元数,加速度,磁力计等,角速度等航姿信息.里面有完整的卡尔曼滤波,可以替换飞控本身里面 ...

最新文章

  1. Python中fnmatch模块的使用
  2. java如何将线程与cpu的核绑定_JVM(13)年轻代垃圾回收器ParNew是如何工作的?
  3. OpenCV相交凸intersectConvex的实例(附完整代码)
  4. php + mssql乱码
  5. //rest风格写_REST /使用提要发布事件
  6. 高效的组合数计算方法
  7. php汽车找车位,遭遇到车多车位少 教你如何快速找到停车位
  8. 数据分析不能挣钱、不能给公司创造利润,那要你有什么用?
  9. jquery--动态篇
  10. LinkedList源码
  11. 503小组第三章编程作业
  12. php ssl扩展,php如何安装openssl扩展?
  13. robocode java_如何建造你的第一个Java Robocode?
  14. fanuc换刀宏程序详解_FANUC宏程序使用举例
  15. mfc动态改变clip风格_游戏背景音乐的种类—动态音效
  16. 阿里云虚拟主机内存占用大问题解决
  17. linux 学习5 文本编辑器 vim
  18. html鼠标键弹起事件,js鼠标按键事件和键盘按键事件用法实例汇总
  19. PHP+Redis令牌桶算法 接口限流
  20. c语言程序设计林小茶,C语言第一篇概述林小茶

热门文章

  1. java运费模板设计_电商系统设计之运费模板(上)
  2. zabbix Simple-check
  3. linux 服务器进bios设置密码,linux系统启动过程详解及root密码找回
  4. CAN总线 - 扫盲
  5. java---内存分析
  6. 超全建筑成套3d模型素材网站整理
  7. php替换邮件模板,修改OpenCart发送电子邮件的模板
  8. 第9章第28节:制作商业计划书的团队介绍幻灯片 [PowerPoint精美幻灯片实战教程]
  9. 基于可视化结构的身份证号码校验系统-树莓派实现
  10. 北太天元——首款国产科学计算软件安装及简单测试