平滑模拟输入值

问题描述

我制造了一种电位计测试设备,该设备可以从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变量行。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...