平滑模拟输入值
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))
这样您就可以轻松更改样本量,而无需添加越来越多的 sleep
和 analog
变量行。
我制作了一个电位器测试设备,可以从 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))
这样您就可以轻松更改样本量,而无需添加越来越多的 sleep
和 analog
变量行。