嵌入式实习-智能手表

系列文章目录

错误总结(没有什么各位有用的东西)跳转
关于嵌入式3/4作品展示(比较具体的描述了开机页面,灯控制页面的实现)跳转
OLED屏幕显示贪吃蛇跳转

作品展示链接(B站平台内播放)

视频跳转
视频地址:

https://www.bilibili.com/video/BV1u44y1S7h5/?spm_id_from=333.999.0.0&vd_source=80dd998adf6419478f40a8a950edd07e


前言

 有些东西怎么说都难以说清楚,所以我把视频的链接放在开头,这次视频稍微还是能看的,所以就比较建议看视频的效果演示先。
 关于本文的介绍,于3/4作品展示一文提及的功能,本文不加以赘述,贪吃蛇部分我打算另起一文。
我重点关注贪吃蛇的代码,关于本文最重要的能力是读懂各个模块相应的说明手册,本文只是浅浅的谈一下这方面的能力。

一、心率检测页面功能的描述和实现

 在每次进入该页面的时候都会弹出向下打开检测功能的字样,打开向下打开的功能之后,就会展现出向上关闭的字样。根据字样操作完成相应的功能。
 实现部分,理解测心率和血压手册的描述,相应的发数据,读数据,在根据标志位用按键卡住心率测量的开关。
代码部分

//想要说明的部分
	if((bp_flag == 0) && (ganrao1_flag == 0))
	{
	HP_6_Closebp();
	}
//-----------------------------------------------------------------
	u8 oldval = 0;
	u8 key;
	u8 rbuff[24] = {0};
	u8 hp_buff[20];
	key = get_KEY_page_4_number();
		
		//开始测量
		if(key == 1)
		{
			HP_6_OpenRate();
			hp_sta = 1;
			OLED_clear();
		}
		
		//关闭测量
		 if(key == 2)
		{
			HP_6_CloseRate();
			hp_sta = 0;
			
			OLED_clear();
			
		}
		//获取测量结果
		if(hp_sta == 1)
		{
			oled_dis_16(5,2,"请向下关闭测量");
			HP_6_GetRateResult(rbuff);
		
			if(rbuff[7] != 0  && rbuff[7] != oldval)   
			{
				oldval = rbuff[7];
				sprintf((char *)hp_buff,"rate:%3d",rbuff[7]);
				oled_dis_16(2,30,hp_buff);
			}
		}
		else
		{
				oled_dis_16(3,2,"请向上开启测量");
		}
	ganrao1_flag = 1;

想要说明一下的是,这里特别的是因为心率和血压是一个测量元件,关掉心率的电源就会关掉血压的电源,
这个问题卡了我一下子,后来有了一个思路。整个工程是循环的,进入这个页面的时候,我希望关掉血压或者心率的电源一次就好,接下来需要开电关电在由我开关。也不知道有没有描述清楚,反正是实现的办法就是通过一个标志位,在循行这个页面的时候,通过一次关电。然后后面的循环都不能够实现开头的关电。
在在代码显示里面,我有特别标明的一个地方,就是我所说的东西。

二、血压检测页面功能的描述和实现

 实现的效果和心率来说有进度条。
 实现的方法,其实和心率没有什么差别。进度条无非就是记录测量时间,然后根据时间写一个定时器。仅此而已。

代码如下(示例):

	oled_show_5();
	hp_sta = 0;
	if((hp_sta == 0) && (ganrao2_flag == 0))
	{
	HP_6_CloseRate();	
	}
	ganrao1_flag = 0;
	
	
	
	u8 key;
	
	key = get_KEY_page_4_number();
		if(key==1)
		{
			HP_6_Openbp();
			bp_flag = 1;
			flag_time_10 = 3;
			OLED_clear();			
		}
		else if(key==2)
		{
			HP_6_Closebp();
			bp_load_flag = 0;
			bp_flag = 0;
			flag_time_10 = 0;
			OLED_clear();			
		}
		
		if(bp_flag == 1)
		{
			
			oled_dis_16(0,32,"向下关闭测量");
				if(bpbuff[7] == 2)
			{
				HP_6_Closebp();
				printf("false\r\n");
				oled_dis_16(3,60,"false");
				oled_dis_16(5,60,"Reopen me");
				if(bp_load_flag==0) OLED_clear();
				bp_load_flag = 1;
			}
			if(bpbuff[7] == 1)
			{
				HP_6_Closebp();
				if(bp_load_flag==0) OLED_clear();
				sprintf((char *)h_buff,"H:%3dPa",bpbuff[10]);
				sprintf((char *)l_buff,"L:%3dPa",bpbuff[11]);
				oled_dis_16(3,60,h_buff);
				oled_dis_16(5,60,l_buff);
				bp_load_flag = 1;
				HP_6_Openbp();
			}
		}
		else 
		{
			oled_dis_16(0,32,"向上开启测量");
		}		
		ganrao2_flag = 1;
		delay(100);

既然每个下面都哔哔赖赖一下,那么这里我想说的是,我觉得代码这种东西,除非是真的很小的功能,不然每个功能就像人体一样,是相互实现,相互成就,相互回应的,我比较讨厌这种比较断章取义的办法读代码。我喜欢直接怼这个工程。当然断章取义有断章取义的好处。


总结

也没啥好总结的,这个我觉得有开关电源是两个模块相互影响的时候,没有什么好的想法可以看一下。我提供了一个代码量小而且稍微有思路的一个解决方案。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

所有的努力都是为了能更好的睡觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值