1

Raspberry Pi と BMP085 センサーで制御される気球を送信し、I2C 経由で Python コードを使用して実行しています。30 分ごとに実行される Adafruit BMP085 サンプル コードを変更したいと思います。

#!/usr/bin/python

from Adafruit_BMP085 import BMP085

# ===========================================================================
# Example Code
# ===========================================================================

# Initialise the BMP085 and use STANDARD mode (default value)
# bmp = BMP085(0x77, debug=True)
bmp = BMP085(0x77)

# To specify a different operating mode, uncomment one of the following:
# bmp = BMP085(0x77, 0)  # ULTRALOWPOWER Mode
# bmp = BMP085(0x77, 1)  # STANDARD Mode
# bmp = BMP085(0x77, 2)  # HIRES Mode
# bmp = BMP085(0x77, 3)  # ULTRAHIRES Mode

temp = bmp.readTemperature()
pressure = bmp.readPressure()
altitude = bmp.readAltitude()

print "Temperature: %.2f C" % temp
print "Pressure:    %.2f hPa" % (pressure / 100.0)
print "Altitude:    %.2f" % altitude

シェルスクリプトで動かす予定だったのですが、シェルに力が入りすぎて、

#!/bin/bash

while true; do
    /gryphon7i/alt/altitude_ai >> measurements.log

    sleep 1800 
done

30 分ごとに記録するようにコードを変更するにはどうすればよいですか? シェルスクリプトを貼り付けるべきですか?事前に助けてくれてありがとう。

4

2 に答える 2

2

そのページに投稿された次の回答を確認してください

Twisted で実装された Reactor パターンを検討することをお勧めします。30 分ごとにコマンドを実行するのはとても簡単です。

これを機能させるには、最初に twisted ライブラリをインストールする必要があります。入力することでそれを行うことができます

sudo easy_install twisted

また

sudo pip install twisted

あなたのコンソールに。その後、コード内でそのライブラリを使用できるようになります。

#!/usr/bin/python

from Adafruit_BMP085 import BMP085
from twisted.internet import task
from twisted.internet import reactor

bmp = BMP085(0x77)    

timeout = 60.0 * 30 # 30 minutes

def doWork():
    temp = bmp.readTemperature()
    pressure = bmp.readPressure()
    altitude = bmp.readAltitude()

    # write log
    f = open('measurements.log', 'a') 
    f.write("Temperature: %.2f C" % temp)
    f.write("Pressure: %.2f hPa" % (pressure / 100.0))
    f.write("Altitude: %.2f" % altitude)
    f.close


l = task.LoopingCall(doWork)
l.start(timeout) # call every sixty seconds

reactor.run()

私の記憶から書きました。コードを少し試してみる必要があるかもしれません。

于 2013-02-28T00:11:35.487 に答える
1
import time

while True:
    # sleep up until then next 1/2 hour
    time.sleep(1800-time.time()%1800)

    temp = bmp.readTemperature()
    pressure = bmp.readPressure()
    altitude = bmp.readAltitude()

    print "Temperature: %.2f C" % temp
    print "Pressure:    %.2f hPa" % (pressure / 100.0)
    print "Altitude:    %.2f" % altitude
于 2013-02-28T00:14:51.713 に答える