VEML6075的驱动代码

news2025/2/3 14:14:42

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的应用手册和校准计算都会放在资料中打包,有需要的小伙伴可留言邮箱获取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/103747.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【云原生 | Kubernetes 实战】15、K8s 控制器 Daemonset 入门到企业实战应用

目录 一、DaemonSet 控制器&#xff1a;概念、原理解读 1.1 DaemonSet 概述 1.2 DaemonSet 工作原理&#xff1a;如何管理 Pod &#xff1f; 1.3 Daemonset 典型的应用场景 1.4 DaemonSet 与 Deployment 的区别 二、DaemonSet 资源清单文件编写技巧 三、DaemonSet …

零基础如何自学Python编程?

零基础如何系统地自学Python编程&#xff1f;绝大多数零基础转行者学习编程的目的就是想找一份高薪有发展前景的工作&#xff0c;哪个编程语言就业前景好越值得学习。零基础的同学学Python是一个不错的选择。 对于零基础的初学者最迷茫的是不知道怎样开始学习&#xff0c;建议…

基础背包问题--0 1背包与完全背包

&#x1f389;&#x1f389;&#x1f389;写在前面&#xff1a; 博主主页&#xff1a;&#x1f339;&#x1f339;&#x1f339;戳一戳&#xff0c;欢迎大佬指点&#xff01; 目标梦想&#xff1a;进大厂&#xff0c;立志成为一个牛掰的Java程序猿&#xff0c;虽然现在还是一个…

JS基于base64编码加密解密文本和图片

JS基于base64编码加密解密文本和图片 ​ 密码学&#xff0c;体系太庞大了&#xff0c;常见的加密解密算法很多&#xff0c;我仅了解了一下&#xff0c;这里仅介绍采用实现base64加密解密的方法。 严格地说base64不是加密算法&#xff0c;他只是一种编码方式&#xff0c;是一…

企业经营管理的核心是什么?

一、企业经营管理是什么&#xff1f; 企业经营管理通常是指&#xff0c;企业为了满足自身生存发展&#xff0c;通过对企业内部成员的经营活动进行计划、组织、协调、指挥、控制。企业经营管理主要目的是为了让企业在面向市场和用户是时&#xff0c;可以充分利用企业自身优势和…

excel日期函数:如何计算项目的开始和完成日期

制定工作计划是我们平时工作中经常会遇到的一类事务&#xff0c;例如某个项目&#xff0c;需要分成七个阶段来完成&#xff0c;已知项目的开始日期和每个项目需要的时间&#xff08;以天为单位&#xff09;&#xff0c;就可以做出一个项目的工作计划表&#xff1a; 需要重点强调…

无约束优化:修正阻尼牛顿法

文章目录无约束优化&#xff1a;修正阻尼牛顿法梯度法的困难经典牛顿法定义收敛性证明修正阻尼牛顿法考虑修正阻尼牛顿法的起因如何构造修正矩阵M参考文献无约束优化&#xff1a;修正阻尼牛顿法 梯度法的困难 无约束优化&#xff1a;线搜索最速下降 对于光滑函数而言&#x…

pg 锁机制深析

spin lock 使用 cas 去获取锁&#xff0c;先获取 spins_per_delay 次数&#xff0c;如果还失败&#xff0c;则每次获取失败将 delay 时长延长至 1~2倍 delay 值加 0.5 us&#xff0c;spins_per_delay 的值在获取锁后会做更新&#xff0c;如果这次没有等待&#xff0c;则下次可…

Python可视化——matplotlib.pyplot绘图的基本参数详解

目录 1.matplotlib简介 2.图形组成元素的函数用法 2.1. figure()&#xff1a;背景颜色 2.2 xlim()和 ylim()&#xff1a;设置 x&#xff0c;y 轴的数值显示范围 2.3 xlabel()和 ylabel()&#xff1a;设置 x&#xff0c;y 轴的标签文本 2.4 grid()&#xff1a;绘制刻度线的…

NVIDIA深度学习基础-理论与实践入门课程笔记及测验参考代码

1. 使用MNIST数据集进行图像分类 1.1 MNIST数据集 在深度学习的历史当中,对 MNIST 数据集里的70000张手写体数字的图像进行0到9的正确分类是一个重大的进展。如今,这个问题被认为是微不足道的,但是使用 MNIST 进行图像分类已经成为深度学习的一个 Hello World 练习。 以下…

TDC-GP30固件升级笔记

Bootloader介绍 系统重置或系统INIT发生后&#xff0c;总是请求引导加载程序。但是&#xff0c;只有在设置了引导加载器发布代码时&#xff0c;才会执行引导加载器操作。 Bootloader操作包括&#xff1a; “Register Configuration” 寄存器配置”&#xff0c;将配置数据传输…

8-Arm PEG-DBCO分子量决定外观性状,用于修饰生物分子

英文名称&#xff1a;8-Arm PEG-DBCO 中文名称&#xff1a;八臂-聚乙二醇-二苯基环辛炔 分子量&#xff1a;1k&#xff0c;2k&#xff0c;3.4k&#xff0c;5k&#xff0c;10k&#xff0c;20k&#xff08;可按需定制&#xff09; 质量控制&#xff1a;95% 存储条件&#xff…

计算机毕设Python+Vue学校教务管理系统(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

计算机中丢失vcruntime140_1.dll,要怎么修复这个问题

关于计算机中丢失vcruntime140_1.dll其实是非常的常见的&#xff0c;当出现这种情况的时候&#xff0c;不需要担心&#xff0c;其实有好多种方法可以解决的。 解决丢失vcruntime140_1.dll的方法 第一种方法&#xff1a;既然计算机丢失了这个vcruntime140_1.dll文件&#xff0…

git:合并多个commit

目录1. 查看提交记录2. 合并commit3. 查看合并后的日志记录1. 查看提交记录 git log --oneline --graph2. 合并commit 这里希望合并最后3个commit&#xff08;modify1&#xff0c;modify2&#xff0c;modify3&#xff09; git rebase -i idid需要使用倒数第4个commit的id&am…

【docker】安装MySQL

实战&#xff1a;安装MySQL 思考&#xff1a;MySQL的数据持久化的问题 #获取镜像 docker pull mysql:5.7 #运行容器&#xff0c;需要做数据挂载 #安装启动MySQL&#xff0c;需要配置密码&#xff08;docker Hub&#xff09; #官方测试 docker run --name some-mysql -e MYSQL…

WebAPi实现多文件上传,并附带参数

需要实现的效果为&#xff0c;通过WebApi实现多文件上传功能&#xff0c;并且在上传时需要能附带文件说明参数&#xff0c;用于保存文件记录 –这里是需要的文件说明参数类 /// <summary>/// 前端文件上传时参数数据/// </summary>public class DistributionData{…

【Spring篇】基于xml的自动装配

&#x1f353;个人主页&#xff1a;个人主页 &#x1f352;系列专栏&#xff1a;SSM框架 自动装配&#xff1a; 根据指定的策略&#xff0c;在IOC容器中匹配某一个bean&#xff0c;自动为指定的bean中所依赖的类类型或接口类 型属性赋值 ①场景模拟 创建类UserControllerpublic…

29.图像卷积代码实现

1. 互相关运算 接下来&#xff0c;我们在corr2d函数中实现如上过程&#xff0c;该函数接受输入张量X和卷积核张量K&#xff0c;并返回输出张量Y。 import torch from torch import nn from d2l import torch as d2ldef corr2d(X,K): # X是输入&#xff0c;K是核矩阵计算二维互…

Cambridge IGCSE Chemistry 真题讲解1

考试局&#xff1a;Cambridge Assessment International Education (CAIE)考试类别&#xff1a;Cambridge International General Certificate of Secondary Education (IGCSE)考试科目&#xff1a;Chemistry考试单元&#xff1a;Paper 2 Multiple Choice (Extended)试卷代码&a…