1994|1

1942

帖子

2

TA的资源

版主

楼主
 

【环境专家之智能手表】Part15:加入环境光,所有属性都全了! [复制链接]

 

1.介绍

之前已经有了活动状态、信号强度、温度、湿度和气压,唯独缺少了一个光照参数,前几天看到【justd0】大佬已经移植好了,那么就拿过来用就好啦,非常感觉前浪的支持!今天这个闲暇时间,我就完善一下我的手表属性吧~

2.移植

我采用的是【sense_product_test】工程进行开发的,所以移植也是非常容易的,首先拿到下图1四个文件,拷贝到自己的工程中。

图1

然后修改【NOA1305】的接口为【LV0140CS】就可以了,首先添加头文件:

#include <lv0104cs.h>
#include <lv0104cs_lux.h>

然后将环境光状态变量修改名称:

int32_t lv0104cs_status = -1;   //int32_t noa1305_status = -1;

然后将初始化部分的函数接口修改一下:

/** Initialize LV0104CS. */
retval = LV0104CS_LUX_Initialize();
if (retval == LV0104CS_OK)
{
	retval = LV0104CS_LUX_StartContinuous(0, NULL);
	if (retval == LV0104CS_OK)
	{
		lv0104cs_status = 0;
	}
	else
	{
		lv0104cs_status = 2;
	}
}
else
{
	lv0104cs_status = 1;
}

最后在循环中获取数据即可,获取数据的接口为【int32_t LV0104CS_LUX_ReadLux(uint32_t *lux)】,这里我获取到光照值之后,需要进行一定的缩小,因为我给光照值只保留了1个字节,使用手电筒给【LV0140CS】强光,得到的数值最高约15000+,猜测最大值应该是16383,所以我在获取到数值后,将数值缩小60倍,光照值得大部分范围就都能显示,防止溢出则将大于15300的值直接取255赋给环境光变量,代码如下:

if (lv0104cs_status == 0)
{
	LV0104CS_LUX_ReadLux(&lux);
	if(lux < 15300)
		Broadcaster_Data[3] = lux / 60;
	else
		Broadcaster_Data[3] = 255;
}

最后在矿井外设备查看一下环境光的变化情况吧。

图2

3.总结

这个移植文件是直接修改【NOA3105】的驱动程序的,所以兼容性非常好,感谢大佬栽树,也让我乘了一波凉,不过也学习到了!

最新回复

棒,踩在巨人的肩膀上 啊哈哈   详情 回复 发表于 2021-6-29 14:15
点赞 关注
 
 

回复
举报

2万

帖子

71

TA的资源

管理员

沙发
 

棒,踩在巨人的肩膀上 啊哈哈

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表