嵌入式开发中实现正反方向的呼吸效果技巧(高效简洁)

前言:在嵌入式开发当中,对于新手小白,可能还没有对代码的规范性和性能等进行考虑,通常我们写出来的代码是比较冗余的,基于这个原因,本人在日常开发中所运用到一个实现技巧或者算法进行总结归纳,以后有时间会进行分享,如存在问题,也可以批评指正。我们经常需要用到正反方向实现呼吸效果的应用。

应用场景:呼吸灯、渐变效果、淡出淡入等应用场景中均运用得到。

特点:高效、简洁、易懂、减少冗余的特点。

因此,对于刚入门嵌入式的小白们是可以借鉴的一个实现方法,文中所提的实现方法。有高效、简洁、易懂的特点。可能对于刚刚入门的小白会通过多个if else的方法去实现,这样子实现的代码是比较长,而且维护起来也比较难。下面是实现该方法的代码示例:

uint32_t Update_data_Value(int32_t current_value, int32_t target_value,
 uint32_t channel_id)
{
	if(current_value != target_value)
	{
		int32_t direction = (current_value < target_value) ? 1 : -1;
		current_value += direction * BREATHING_STEP;
		
		if(current_value < PWM_VAL_MIN && direction == 1)
		{
			current_value = PWM_VAL_MIN;
		}
		
		if((direction == 1 && current_value >= target_value) ||
		   (direction == -1 && current_value <= target_value))
		{
			current_value = target_value;
		}
	}	
	
	if(0 == target_value)
	{
		current_value = 0;
	}
	
	return current_value;
}

总结:上面代码主要实现了一个正反方向的呼吸效果的实现,主要的实现思路是通过外部设置好target_value的值,然后current_value是我们的使用参数,通过上面的函数实现将current_value每次按BREATHING_STEP进行加减操作,可以调用相应的时间服务函数实现单位时间的呼吸效果。

最后,由于本人是24届刚毕业出来工作,经验和能力方面也比较弱,写博客的分享也比较少,可能存在表达不清晰等的问题,后续我会持续更新,不断提升自己,也希望能够将自己的经验记录并分享。如有错误,请大胆批评指正,谢谢大家,祝大家工作顺利。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值