前言:在嵌入式开发当中,对于新手小白,可能还没有对代码的规范性和性能等进行考虑,通常我们写出来的代码是比较冗余的,基于这个原因,本人在日常开发中所运用到一个实现技巧或者算法进行总结归纳,以后有时间会进行分享,如存在问题,也可以批评指正。我们经常需要用到正反方向实现呼吸效果的应用。
应用场景:如呼吸灯、渐变效果、淡出淡入等应用场景中均运用得到。
特点:高效、简洁、易懂、减少冗余的特点。
因此,对于刚入门嵌入式的小白们是可以借鉴的一个实现方法,文中所提的实现方法。有高效、简洁、易懂的特点。可能对于刚刚入门的小白会通过多个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届刚毕业出来工作,经验和能力方面也比较弱,写博客的分享也比较少,可能存在表达不清晰等的问题,后续我会持续更新,不断提升自己,也希望能够将自己的经验记录并分享。如有错误,请大胆批评指正,谢谢大家,祝大家工作顺利。