Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python将传感器数据添加到列表中_Python - Fatal编程技术网

使用Python将传感器数据添加到列表中

使用Python将传感器数据添加到列表中,python,Python,我正在从事一个项目,我试图将传感器数据(温度、湿度等)存储在一个列表中。我的程序是用python编写的(我对python还是新手)。我将在不同的速度传感器样品。我希望将最近的十个传感器样本存储在一个列表中,并取十个值的平均值。这将有助于平滑来自传感器的数据 但是,我很难让它按照我想要的方式正确工作。我的输出总是在列表的末尾附加一个传感器读数,而且只有一个。我希望它不断地将旧数据推出,并将新数据纳入列表。例如,如果给定传感器仅采集了10个样本,那么列表将如下[1,2,3,4,5,6,7,8,9,1

我正在从事一个项目,我试图将传感器数据(温度、湿度等)存储在一个列表中。我的程序是用python编写的(我对python还是新手)。我将在不同的速度传感器样品。我希望将最近的十个传感器样本存储在一个列表中,并取十个值的平均值。这将有助于平滑来自传感器的数据

但是,我很难让它按照我想要的方式正确工作。我的输出总是在列表的末尾附加一个传感器读数,而且只有一个。我希望它不断地将旧数据推出,并将新数据纳入列表。例如,如果给定传感器仅采集了10个样本,那么列表将如下[1,2,3,4,5,6,7,8,9,10],然后第11个样本将从传感器中输入,并将更改为[2,3,4,5,6,7,8,9,10,11],然后是第12个[3,4,5,6,7,8,9,10,11],依此类推。任何帮助都将不胜感激

下面是我试图使用的代码,将传感器数据附加到列表中,使该列表仅包含最近的十个样本,并定期计算这十个样本的移动平均值

import time
import spidev

def getReading(channel):
  rawData = spi.xfer([1,(8+channel)<<4,0])
  processesData = (rawData[1]&3)<<8)+rawData[2]
  return processedData

voltage = (getReading(7)/1023.0)*3.3
readings = []
reading = round(voltage, 2)
max_samples = 10

def mean(nums):
  return float(sum(nums)) / max(len(nums), 1)

avg = mean(readings)

while True:
  print ('current average = ' , avg)
  print ('readings used for average' , readings)
  
  readings.append(reading) 

  if len(readings) == max_samples:
    readings.pop(0)
  
  print ('readings saved for next time:' , readings)
  
  time.sleep(10)
导入时间
导入spidev
def getReading(通道):

rawData=spi.xfer([1,(8+通道)如果每次都需要新的读取,那么对getReading的调用不应该在循环中吗?类似于:

import time
import spidev

def getReading(channel):
  rawData = spi.xfer([1,(8+channel)<<4,0])
  processesData = (rawData[1]&3)<<8)+rawData[2]
  return processedData


readings = []
max_samples = 10

def mean(nums):
  return float(sum(nums)) / max(len(nums), 1)



while True:
  voltage = (getReading(7)/1023.0)*3.3
  reading = round(voltage, 2)
  readings.append(reading) 

  avg = mean(readings)     

  print ('current average = ' , avg)
  print ('readings used for average' , readings)

  if len(readings) == max_samples:
    readings.pop(0)
  
  print ('readings saved for next time:' , readings)
  
  time.sleep(10)
导入时间
导入spidev
def getReading(通道):

rawData=spi.xfer([1,(8+通道)A with
maxlen
可以做到这一点。你的getReading调用不应该在循环中吗?你能澄清问题的确切原因吗?请参阅,并提供一个示例。