0

時間の経過とともに温度を追跡するために使用したい温度と圧力計があります。時間の経過とともに複数のセンサーを使用する可能性があるため、BMP085 センサーを として参照できるようにしたいと考えていtpます。tp.tempつまり、 orを呼び出しtp.pressureて現在の温度などを取得したいと思います。問題は、 tp.tempor.pressureを呼び出すたびに更新されないことです。提案?

#!/usr/bin/env python
#temperature logger for the BMP085 Temperature and Pressure Sensor on the Raspberry Pi

from Adafruit_BMP085 import BMP085
from time import sleep
import pickle, sys, os

class tps():
    def __init__(self):
        #temperature/pressure sensor setup
        self.bmp = BMP085(0x77)
        self.temp = self.bmp.readTemperature()*1.8+32
        self.pressure = self.bmp.readPressure()*0.0002953

class data():
    def __init__(self):
        self.tp = tps()
        self.savedata()


    def savedata(self):
#        if os.path.exists("data.dat")==True:
#            if os.path.isfile("data.dat")==True:
#                fileHandle = open ( 'data.dat' )
#                olddata = pickle.load ( fileHandle )
#                fileHandle.close()

        print self.tp.temp, self.tp.pressure
        sleep(4)
        print self.tp.temp, self.tp.pressure

#        newdata = [self.tp.temp, self.tp.pressure]
#        self.datadump = [olddata]
#        self.datadump.append(newdata)
#        fileHandle = open ( 'data.dat', 'w' )
#        pickle.dump ( self.datadump, fileHandle )
#        fileHandle.close()             

data()
4

1 に答える 1

2

これは、bmp.readTemperature()bmp.readPressure()関数を一度しか呼び出していないためですtps.__init__。最後の print ステートメントでは、更新された値を取得するのではなく、これらの関数が返した値を 2 回読み取っているだけです。

更新された値を取得する方法の例を次に示します。

class tps():
    def __init__(self):
        #temperature/pressure sensor setup
        self.bmp = BMP085(0x77)
        self.temp = None
        self.pressure = None
#       If you want to initialize your tps object with sensor data, you can call your updater method here.
        self.updateTempAndPressure()

#   Here's a function that you can call whenever you want updated data from the sensor
    def updateTempAndPressure(self):
        self.temp = self.bmp.readTemperature()*1.8+32
        self.pressure = self.bmp.readPressure()*0.0002953

class data():
    def __init__(self):
        self.tp = tps()
        self.savedata()

    def savedata(self):
#       Call the method that gets updated data from the sensor
        self.tp.updateTempAndPressure()
        print self.tp.temp, self.tp.pressure
        sleep(4)
#       Call the update method again
        self.tp.updateTempAndPressure()
        print self.tp.temp, self.tp.pressure

data()
于 2013-08-09T21:13:43.153 に答える