利用数学函数实现呼吸灯
访问下面的网站以及我给出的函数就可以看到设定的值f(x)和x直接的关系
图形计算器
f(x) = (0.01x^2)^2 (x < 58)
f(x) = (0.01(x-116)^2)^2 (58 <= x < 116)
接下来用在单片机中实现,因为单片机不能计算小树,所以我们需要将除数和被除数放大100倍
#define X_VARIABLE 70//设置分段函数的x轴边界值
#define DIVDEND 1 //设置微调比例的值,被除数
#define DIVISOR 100//设置微调比例的值,除数.通过两个的比值调节初期值变化,DIVDEND / DIVISOR的值越小,前期变化越慢void mid_set_pwm_value(void)
{static u16 count = 0;u16 ret_pwm_value = 0;if(count < X_VARIABLE){ret_pwm_value = DIVDEND * (count * count) / DIVISOR;ret_pwm_value *= ret_pwm_value;}else{ ret_pwm_value = DIVDEND * (count - X_VARIABLE * 2) * (count - X_VARIABLE * 2) / DIVISOR;ret_pwm_value *= ret_pwm_value;if(count >= X_VARIABLE * 2){count = 0;}}TIM_SetCompare2(TIM3,ret_pwm_value);//设置PWM的大型count++;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
