2364|3

1942

帖子

3

TA的资源

版主

楼主
 

【环境专家之智能手表】Part10:状态灯及模式切换 [复制链接]

 

1.介绍

NFC功能先掠过,先写一个简单的功能,状态灯和模式切换,为什么需要状态灯,是因为【RSL10-SENSE-GEVK】板不方便外接显示模块,刚好板载一个RGB灯,刚好就拿这个RGB灯作为指示状态,而且还比较低功耗。

2.设计

由于用的是RGB灯,不能直接展示出用户想要的信息,那么就可以通过一些闪烁的方式来表示一些状态,根据自己需要的状态,定义了如下图1的对应表格:

图1

状态不多,灯也够用,后期要添加也足够。闪烁方式对应的状态表已经好了,那么就来实现吧,首先定义了一个枚举用于表示状态。

typedef enum
{
	LED_NO_STATUS = 0,
	LED_SWITCH_NORMAL,
	LED_BLE_CONNECT,
	LED_BLE_DISCONNECT,
	LED_SET_SUCCESS,
	LED_WITCH_DOWNHOLE,
	LED_DOWNHOLE_NORMAL,
	LED_DOWNHOLE_ALARM,
	LED_DOWNHOLE_HELP,
}status_led_t;

一共是九种状态,有一个是无状态,有了状态之后,需要有一个状态设置接口,如下定义:

void status_led_set(status_led_t now_status)
{
	runing_status = now_status;
	runing_cnt = 0;
	LED_Off(LED_RED);
	LED_Off(LED_GREEN);
	LED_Off(LED_BLUE);
}

其中runing就是用来计数的,然后实现一个定时调用的函数就可以了,由于逻辑比较简单,下面贴出部分代码:

void status_led_runing(void)
{
	if(runing_status == LED_NO_STATUS)
		return;
	switch(runing_status)
	{
		case LED_SWITCH_NORMAL:
		{
			if(runing_cnt % 2 == 0)
				LED_On(LED_BLUE);
			else
				LED_Off(LED_BLUE);
			if(runing_cnt >= 3)
				status_led_set(LED_NO_STATUS);
			break;
		}
		case LED_BLE_CONNECT:
		{
			if(runing_cnt < 5)
				LED_On(LED_BLUE);
			if(runing_cnt >= 5)
				status_led_set(LED_NO_STATUS);
			break;
		}
		case LED_BLE_DISCONNECT:
		{
			if(runing_cnt < 5)
				LED_On(LED_RED);
			if(runing_cnt >= 5)
				status_led_set(LED_NO_STATUS);
			break;
		}
        //.......
	}
	runing_cnt++;
}

我是200毫秒调用一次【status_led_runing】函数,在蓝牙连接和断开回调中调用设置状态灯的函数即可,蓝牙连接函数为【GAPC_ConnectionReqInd】,蓝牙断开函数为【GAPC_DisconnectInd】,在该函数中调用即可。

对于状态切换,我这里采用两个按键,按键0长按3秒切换到正常模式,按键1长按3秒切换到下井模式,最终展示出来的效果如下图所示。

图2 蓝牙连接和断开测试

图3 模式切换

可以对照图1的表格观看GIF图片。

3.总结

状态灯这个设计其实不难,但是也是需要的,因为没有屏幕只能通过这个进行人机交互,对于模式切换,考虑到手表不是下井时才佩戴,日常也可以进行佩戴,所以加入了这么一个机制。

最新回复

请问手机用的是什么app?   详情 回复 发表于 2021-7-1 09:20
点赞 关注
 
 

回复
举报

1239

帖子

68

TA的资源

纯净的硅(中级)

沙发
 

学习了,不错

 
 
 

回复

122

帖子

12

TA的资源

一粒金砂(中级)

板凳
 

请问手机用的是什么app?

点评

nRF connect  详情 回复 发表于 2021-7-1 19:19
个人签名尽吾志也而不能至者,可以无悔矣。——王安石
 
 
 

回复

1942

帖子

3

TA的资源

版主

4
 
yilonglucky 发表于 2021-7-1 09:20 请问手机用的是什么app?

nRF connect

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表