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的驱动代码相关推荐

  1. AMG8833的使用与stm32驱动代码

    一.介绍 1.内部框图 可以看到AMG8833的内部有红外点阵测温,并且还带有一个热敏电阻.使用同一个ADC进行采样,然后送给Control. 2.器件参数 测温点数:64(8x8的矩阵) 帧率:10 ...

  2. Linux创建线程读取双口数据,linux环境下读写一次双口ram尽然要十几个毫秒。(附驱动代码)...

    linux环境下读写一次双口ram尽然要十几个毫秒.(附驱动代码) 我用的双口ram是IDT70V28,手册上说的读写时间应该是几个纳秒,我写了个linux驱动,然后做测试,发现读写一次的时间尽然是十 ...

  3. 三星framebuffer驱动代码分析

    一.驱动总体概述 本次的驱动代码是Samsung公司为s5pv210这款SoC编写的framebuffer驱动,对应于s5pv210中的内部外设Display Controller (FIMD)模块. ...

  4. 树莓派IO口驱动代码的编写、微机总线地址、物理地址、虚拟地址、BCM2835芯片手册

    地址总线: 百度百科解释: 地址总线 (Address Bus:又称:位址总线) 属于一种电脑总线 (一部份),是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/ ...

  5. 基于框架编写驱动代码

    操作驱动的上层代码(pin4test) #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> ...

  6. 整合后台服务和驱动代码注入

    整合后台服务和驱动代码注入 Home键的驱动代码: /dev/input/event1: 0001 0066 00000001 /dev/input/event1: 0000 0000 0000000 ...

  7. Linux kernel 中模块化的平台驱动代码介绍

    介绍 在linux kernel中通过module_platform_driver来实现模块化平台驱动.大量的设备驱动程序都基于该种方式来实现,使用频次非常的高,在linux kernel 5.4.1 ...

  8. 解决一个驱动代码解耦合问题

    之前解决的项目LCD设备兼容问题,在 a.c 文件里面定义了一个变量,然后在 b.c 里面使用 extern声明引用这个变量,通过这种方法可以在b.c中使用在a.c 里面初始化的变量. 但是这中情况就 ...

  9. 蓝桥杯单片机DS1302时钟芯片驱动代码注释

    蓝桥杯单片机DS1302时钟芯片驱动代码之前的疑惑注释了下 /* DS1302 芯片包含一个 实时时钟/日历和 31 字节的静态 RAM. 与时钟/RAM 通讯只需要三根线: CE,I/O (数据线) ...

最新文章

  1. Coolite Toolkit学习笔记六:常用控件Accordion、ToolBar、ToolTip
  2. unbuntu 安装MySQL
  3. 窗体的扩展样式GWL_EXSTYLE:用于SetWindowLong
  4. pytoch word_language_model 代码阅读
  5. 疾风之刃的最新服务器,疾风之刃6月16日数据互通公告 数据互通服务器查询介绍...
  6. 出国?上研?工作?回家种田?(三) IT类专业的工作方向与特点(软硬件技术等岗位)
  7. Linux安装source-code-pro字体
  8. Python数模笔记-模拟退火算法(4)旅行商问题
  9. 拼多多年货节上线,“百亿补贴”加码iPhone 12等产品
  10. Javascript 加载详解
  11. 软件开发有哪些规范和标准_车辆,机械专业如何从事汽车电子软件开发
  12. 解决WPS2000非正常删除后的重安装问题(转)
  13. GPRS核心网-GTP-C协议解析
  14. 固态硬盘SSD格式化后,数据恢复的可能性有多大?
  15. Scrapy--下载器中间件(Downloader Middleware)
  16. 美国国家机器人计划2.0部分项目简介
  17. 关于小程序区服登录账号换模拟器登录的操作
  18. ubuntu 18.04 卸载firebox
  19. 安装部署docker
  20. 视频教程-快速入门Python基础教程_Python基础知识大全-Python

热门文章

  1. CANoe Ethernet TC8Test
  2. Android滚动截屏,ScrollView截屏,Listview截屏,Recyclerview截屏, 截长图
  3. Laydate控件设置初始与结束时间限制
  4. 阿里天池大赛[人工智能辅助糖尿病遗传风险预测]赛后总结
  5. H3CSE园区-VRRP协议
  6. Java人必备高端摸鱼指南,教你靠本事摸鱼
  7. 堆排序 python_堆排序用python
  8. 生信技能树 电脑配置linux,生信技能树--Jimmy - Linux 20题
  9. C语言面试题实战汇总01
  10. 区块链技术如何为票务行业赋能?