平滑模拟输入值

Smoothening Analog Input Values

我制作了一个电位器测试设备,可以从 MCP3008 ADC 读取模拟值。

为了隐藏零星的模拟输入波动,我使用类似于以下的函数在 while 循环中计算多次测量的平均值:

def analog_average():
    analog1 = (mcp_analog)
    time.sleep(0.001)
    analog2 = (mcp_analog)
    time.sleep(0.001)
    analog3 = (mcp_analog)
    time.sleep(0.001)
    analog4 = (mcp_analog)
    time.sleep(0.001)
    analog5 = (mcp_analog)
    analog_average = ((analog1 + analog2 + analog3 + analog4 + analog5) / 5)
    print(analog_average)

mcp_analog是ADC第一个模拟输入的值。

我得到了我想要的结果。但是,有没有更清洁更有效的方法?

使用循环和 statistics.mean:

from statistics import mean

def analog_average(N):
    measures = []
    for _ in range(N):
        measures.append(mcp_analog.value)
        time.sleep(0.001)

    return mean(measures)

print(analog_average(5))

这样您就可以轻松更改样本量,而无需添加越来越多的 sleepanalog 变量行。