我是靠谱客的博主 精明舞蹈,最近开发中收集的这篇文章主要介绍VEML6075的驱动代码VEML6075简介VEML6075相关参数VEML6075IIC读写相关时序VEML6075IIC读写驱动代码VEML6075IIC读写串口打印总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

VEML6075的驱动代码

  • VEML6075简介
  • VEML6075相关参数
  • VEML6075IIC读写相关时序
  • VEML6075IIC读写驱动代码
  • VEML6075IIC读写串口打印
  • 总结

VEML6075简介

VEML6075是一种紫外线(UV)光传感器,它可以测量紫外线强度。它通常用于各种应用,包括环境监测、皮肤防护和生物医学应用,在紫外线中,UVA是最常见的紫外线,它的波长范围是320-400纳米。它可以穿过玻璃,因此它可以通过窗户进入室内。UVA对皮肤的影响不如UVB严重,但它可以加速皮肤衰老并使皮肤暗淡。UVB是一种更强的紫外线,其波长范围为290-320纳米。它不能穿过玻璃,因此只能在户外被暴露。UVB可以导致皮肤晒伤,并且过度暴露可能会导致皮肤癌,我们可以通过Veml6075实现对UVA和UVB值的读取。

VEML6075相关参数

在这里插入图片描述
参数中得出的重要参数有工作电压和IIC的电平都是3.3V的,在使用的时候,5V的51单片机记得加一个电平转换模块通讯会稳定一些,不然可能出现不正常现象,本人在调试代码过程中就因为5V的通讯电平不稳定导致的通讯异常。

VEML6075IIC读写相关时序

在这里插入图片描述
抛开具体的IIC的基本时序需求,因为Veml6075的寄存器都是16位寄存器,所以在这个地方需要注意,发送相关指令和读取相关寄存器数据的时候严格按照手册中给出的时序流程进行通信,否则会出现异常情况,记得严格按照手册进行不要凭借经验去写。

VEML6075IIC读写驱动代码

// 初始化 VEML6075
bit VEML6075Init()
{
	Start_I2c(); // 启动 I2C 传输
	SendByte(IIC_Add_W); // 写入 VEML6075 设备地址
	if(ack == 0) return 0;
	SendByte(VEML6075_CONF); // 写入 VEML6075 配置寄存器地址
	if(ack == 0) return 0;
	SendByte(0x10); // 写入 VEML6075 配置寄存器的值,使用默认设置
	if(ack == 0) return 0;
	Stop_I2c(); // 停止 I2C 传输
	return 1;
}

进行初始化操作可以在主函数中使用返回的Bit值进行判断模块是否成功初始化来进行下一步操作

// 读取 VEML6075 的 UVA 数据
unsigned int VEML6075ReadUVA()
{
	unsigned char dataH, dataL;

	Start_I2c(); // 启动 I2C 传输
	SendByte(IIC_Add_W); // 写入 VEML6075 设备地址
	SendByte(VEML6075_UVA); // 写入 VEML6075 UVA 数据寄存器地址
	Start_I2c(); // 启动 I2C 传输
	SendByte(IIC_Add_R); // 写入 VEML6075 设备地址,同时设置读取位
	dataH = RcvByte(); // 读取 UVA 数据的高字节
	Ack_I2c(0);
	dataL = RcvByte(); // 读取 UVB 数据的低字节
	Ack_I2c(1);
	Stop_I2c(); // 停止 I2C 传输

	return (dataH << 8) | dataL; // 将读取到的数据组合成 16 位数据并返回
}


// 读取 VEML6075 的 UVB 数据
unsigned int VEML6075ReadUVB()
{
	unsigned char dataH, dataL;

	Start_I2c(); // 启动 I2C 传输
	SendByte(IIC_Add_W); // 写入 VEML6075 设备地址
	SendByte(VEML6075_UVB); // 写入 VEML6075 UVB 数据寄存器地址
	Start_I2c(); // 启动 I2C 传输
	SendByte(IIC_Add_R); // 写入 VEML6075 设备地址,同时设置读取位
	dataH = RcvByte(); // 读取 UVB 数据的高字节
	Ack_I2c(0);
	dataL = RcvByte(); // 读取 UVB 数据的低字节
	Ack_I2c(1);
	Stop_I2c(); // 停止 I2C 传输
	return (dataH << 8) | dataL; // 将读取到的数据组合成 16 位数据并返回
}

上述代码中严格按照手册中的读写时序操作进行,可以读取出UVA和UVB的数值。

VEML6075IIC读写串口打印

在这里插入图片描述
上图读出的为原始的传感器输出的UVA和UVB的数值现象。

总结

使用VEML可以自己制作个人或者或者其他的一些DIY的小物品,进行夏日的紫外线的数据进行检测,本驱动程序给出的数据是原始数值,如果需要做一些小作品的话需要自己找当地气象局或者环境检测机构了解下计算因子进行数据解析调用从而得到紫外线的UV指数值,相关程序和Veml6075的应用手册和校准计算都会放在资料中打包,有需要的小伙伴可留言邮箱获取。

最后

以上就是精明舞蹈为你收集整理的VEML6075的驱动代码VEML6075简介VEML6075相关参数VEML6075IIC读写相关时序VEML6075IIC读写驱动代码VEML6075IIC读写串口打印总结的全部内容,希望文章能够帮你解决VEML6075的驱动代码VEML6075简介VEML6075相关参数VEML6075IIC读写相关时序VEML6075IIC读写驱动代码VEML6075IIC读写串口打印总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(104)

评论列表共有 0 条评论

立即
投稿
返回
顶部