利用数学函数实现呼吸灯

访问下面的网站以及我给出的函数就可以看到设定的值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++;	
}

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部