我从串行接口获取输入,我正在使用它来移动三个数字针。我有三个仪表,我可以定期以大约10 Hz的速率进行采样,在所有仪表之间共享。当我只运行一个仪表时,针头以10Hz输入非常平稳地移动,但是当我再添加一个时,针头会变得很猛。
我需要找到一种方法来平滑数据,这样当样本速率减慢时我的针头不会跳得那么多。
我使用以下代码以更逼真的方式更改针的角度:
def move(self):
self.real_angle = self.real_angle + ((360 - self.value * 270/120) - self.real_angle) * 0.2
needle_angle = self.real_angle
if needle_angle > 360:
needle_angle = 360
self.needle.angle = needle_angle
self.real_angle是针实际所处的角度(可能高于360度)。 self.value是从串行端口返回的值。 self.needle_angle在这里并不重要。我只是用它来设置我的角度,因为真实角度可能高于360度。
此代码提供了更逼真的模拟风格动作,并且在高采样率下看起来很棒,但我试图弄清楚如何使针移动更顺畅。
任何建议都将受到赞赏。
感谢。