我从串行接口获得输入,我正在使用它来移动三个数字针 . 我有三个仪表,我可以定期以大约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度 .

这段代码提供了更逼真的模拟风格运动,并且在高采样率下看起来很棒,但我正在试图弄清楚如何使针更顺畅地移动 .

任何意见,将不胜感激 .

谢谢 .