11(100%开源)蓝牙心率防水运动手环_整机功能代码讲解(1).docx

上传人:lao****ou 文档编号:357256 上传时间:2023-09-22 格式:DOCX 页数:16 大小:284.43KB
下载 相关 举报
11(100%开源)蓝牙心率防水运动手环_整机功能代码讲解(1).docx_第1页
第1页 / 共16页
11(100%开源)蓝牙心率防水运动手环_整机功能代码讲解(1).docx_第2页
第2页 / 共16页
11(100%开源)蓝牙心率防水运动手环_整机功能代码讲解(1).docx_第3页
第3页 / 共16页
11(100%开源)蓝牙心率防水运动手环_整机功能代码讲解(1).docx_第4页
第4页 / 共16页
11(100%开源)蓝牙心率防水运动手环_整机功能代码讲解(1).docx_第5页
第5页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《11(100%开源)蓝牙心率防水运动手环_整机功能代码讲解(1).docx》由会员分享,可在线阅读,更多相关《11(100%开源)蓝牙心率防水运动手环_整机功能代码讲解(1).docx(16页珍藏版)》请在第一文库网上搜索。

1、蓝牙心率防水运动手环整杭代码自士配套资料:https:/www.fengke.c1ub/GeekMart/su_fkZyGYgrp.jsp配套视频:https:/www.fengke.c1ub/GeekMart/su_fTSgU13y3.jsp整机代码1软件设计本节,我们将融合前面的蓝牙收发、三轴记步、电量检测、外部F1aSh读写、心率检测和1ed屏幕显示,完成手环的制作。以上各个部分可以参考前面的章节。首先,看一下我们手环的整个软件主函数流程。开始/代码运行后,首先进入初始化,初始化系统时钟、外设和蓝牙。除此之外,还开启了定时中断和GP1O中断。我们的定时中断每IomS触发一次,用于ADC定

2、时采集心率数据,以及定时和时间更新。另外,由于一些原因,主函数中的步数读取、电量检测、心率检测、屏幕显示并不是每一次循环都执行一次。这里的定时中断也作为一个计时功能,步数20秒更新一次,心率模块1分钟打开一次,亮屏无操作,5秒熄灭屏幕。这里的GP1O中断主要是用来切换屏幕显示页面。voidmyjnt_button1_hand1er(void)(Touch_re1ease=1;触摸释放标志)从GP1o的中断回调函数中可以看出,每次中断只是把变量ToUChje1ease置1,并没有直接对显示做任何处理,而在定时中断的回调函数中,判断变量Touch_re1ease的值,从而确定我们是长时间按键,还是

3、短时间按键,来完成相应的处理。在定时器中断函数中,检测到短时间触摸,就打开显示标志位,同时设置显示的页面。关于蓝牙收发部分,我们在蓝牙收发章节的基础上进行了修改,通过手机软件Wo1verineB1E发送step获取步数、发送ca1获取卡路里、发送heart获取心率值、发送rtc加时间完成手环的时间设置。下面是函数staticintgattc_write_cmdjnd_hand1er(ke_msg_id_tconstmsgid,structgattc_write_cmd_indconst*param,ke_task_id_tconstdestjd,ke_task_id_tconstsrcjd)的

4、部分代码。switch(attjd)(caseCUST1JDX_INDICATEAB1E_VA1:attmdb_att_set_va1ue(param-hand1e,param-1ength,(uint8_t*)&(param-va1ue0);memcpy(va1ue_buf,&(Param-va1ue),param-1ength);复制读出的数据至va1ue_buffspi_f1ash_read_data(dghData,OXO40000,10);读取f1ash中的数据Number_Of_Steps=dghData1;hr_capture=dghDataO;DataConversionO;i

5、f(va1ue_bufO=s)&(va1ue_buf1=t)&(va1ue_buf2=e)&(va1ue_buf3=,P)(va1ue_buf0=Steps0+0x30;返回步伐值va1ue_buf1=Steps1+0x30;va1ue-buf2=Steps2+030;va1ue-buf3=Steps3+030;va1ue_buf4=Steps4+0x30;attmdb_att_set_va1ue(custs1_env.shd1+CUST1_IDX_1ONG_VA1UE_VA1),5,(uint8_t*)&(va1ue_buf0);prf_server_send_event(prf_env_s

6、truct*)&(custs1_env.con_info),fa1se,(custs1_env.shd1+CUST1_IDX_1ONG_VA1UE_VA1);)e1seif(va1ue_bufO=c)&(va1ue_buf1=a)&(va1ue_buf2=,)(va1ue_buf0=(Ca1orie0)+0x30;返回卡路里va1ue-buf1=(Ca1orie1)+0x30;va1ue_buf2=(Ca1orie2)+0x30;va1ue_buf3=(Ca1orie3)+0x30;va1ue_buf4=(Ca1orie4)+0x30;attmdb_att_set_va1ue(custs1_e

7、nv.shd1+CUST1_IDX_1ONG_VA1UE_VA1),5,(uint8_t*)&(va1ue_buf0);prf_server_send_event(prf_env_struct*)&(CUStS1_env.con_info),fa1se,(custs1_env.shd1+CUST1_IDX_1ONG_VA1UE_VA1);)e1seif(va1ue-buf0=,h,)(va1ue-buf1=,e,)88(va1ue-buf2=a)&(va1ue_buf3=r)&(va1ue_buf4=f)(va1ue_buf0=(Heart_Rate0)+0x30;返回心率值va1ue_buf

8、1=(Heart_Rate1)+Ox3O;attmdb_att_set_va1ue(CUStS1_env.shd1+CUST1DX_1ONG_VA1UE_VA1),2t(uint8_t*)&(va1ue_buf0);prf_server_send_event(prf_env_struct*)&(custs1_env.con_info)zfa1se,(custs1_env.shd1+CUST1_IDX_1ONG_VA1UE_VA1);)e1seif(va1ue_bufO=r)&(va1ue_buf1=t)&(va1ue_buf2=,c,)(dghData6=va1ue_buf3-0x30;将时间

9、存入F1ashdghData7=va1ue_buf4-0x30;dghData8=va1ue_buf5-0x30;dghData9=va1ue-buf6-030;dghData2=va1ue_buf7-0x30;dghData3=va1ue_buf8-0x30;dghData4=va1ue-buf9-030;dghData5=va1ue_buf10-0x30;spi_f1ash_write_data(dghData,0x040000,10);)break;defau1t:break;)每当手环收到来自手机软件WOIVerineB1E的数据时,首先从FIaSh中读取步数和心率数据。然后对比接收到

10、字符串。最后发送或设置相应的数据。这里有一点要注意,我们从F1ash中读取到的是数据,而通过蓝牙发送的是字符串,就需要将数字转换成字符就如同代码中将一个位的数字加上0x30,换算成该数字对应的ASCII码值。对于发送给手机的卡路里数据,其实是通过三轴步数计算过来的。消耗的卡路里跟步数以及个人的体重等因素呈比例关系,大家可以根据自己的情况修改卡路里与步数之间的系数。voidDataConversion(Void)(CaIorieNum=Number_0f_Steps2;StepsO=(unsignedchar)(Number_Of_Steps/10000);Steps1=(unsignedcha

11、r)(Number_Of_Steps%10000/1000);Steps2=(unsignedchar)(Number_Of_Steps%1000/100);Steps3=(unsignedchar)(Number_Of_Steps%100/10);Steps4=(unsignedchar)(Number_Of_Steps%10);Ca1orie0=0;Ca1orie1=(unsignedchar)(Ca1orieNum100000);Ca1orie2=(unsignedchar)(Ca1orieNum%10000010000);Ca1orie3=(unsignedchar)(Ca1orieN

12、um%100001000);Ca1orie4=(unsignedchar)(Ca1orieNum%1000100);Heart_RateO=(unsignedchar)(hr_capture%100/10);Heart_Rate1=(unsignedchar)(hr-capture%10);)关于其他部分代码,请参考我们的我整机代码例程。2实验现象首先打开SmartSnippetSo图2设置好SmartSniPPetS之后,点击上图中的Open。(1)点击COnneC3连接我们的单片机。图3(2)点击Erase,擦除F1asho图4(3)点击BroWSe,找到我们工程的.hex文件、1Mm*(

13、Ii-CiH”QomaX:-X在时间显示界面下,触摸一下按键,会显示心率。图8在心率显示界面下,触摸一攵按键,会显示步数界面。图9再触摸一下按键,就会进入卡路里显示界面。溷10打开手机软件Wo1verineB1Ec(1)点击ConnectSendDevice:图11(2)选择我们的蓝牙设备DIA1OG-PRF1o图12我们发送step,会获取步感SendDevice:DIA1OG-PRF1-ready图13发送ca1,会获取卡路里。18:03:35Connectedto:DIA1OG-PRF118:06:07T:step18:06:07R:0000018:06:16TX:ca118:06:16R:00000SendDevice:DIA1OG-PRF1-ready佟I14发送heart,会获取心率。4GOK/S18:06100%(?)Wo1verineB1EDisconnect18:03:35Connectedto:DIA1OG-PRF118:06:07T:step18:06:07RX:OOOOO18:06:16T:ca118:06:16RX:OOOOO18:06:29TX:heart-18:06:29RX:55

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服