2017-04-19 7 views
1

リレーを起動するために他のpythonスクリプトで呼び出すことができるリレーモジュールをセットアップしようとしています。アトリビュートで外部引数を呼び出す方法

relayOn(light) 

スクリプトが正常に動作:私は呼び出すことにより、スクリプト内のリレーをアクティブにする場合

#!/usr/bin/python 

# Import required Python libraries 
import RPi.GPIO as GPIO 

# Use BCM GPIO references instead of physical pin numbers 
GPIO.setmode(GPIO.BOARD) 

# GPIO assigned relay pin numbers for peripherals 

light = 35 
waterPump = 33 
fanMotor = 31 

pinList = [light, waterPump, fanMotor] 

for i in pinList: 
    GPIO.setwarnings(False) 
    GPIO.setup(i, GPIO.OUT) 

def relayOn(peripheral): 
      GPIO.output(peripheral, GPIO.LOW) 

def relayOff(peripheral): 
      GPIO.output(peripheral, GPIO.HIGH) 

:私はrelay.pyと呼ばれるこの簡単なスクリプトを作成しました。私の問題は別のpythonスクリプトからスクリプトを実行しようとすると起こります。私は初心者くさい質問をお詫び申し上げます

NameError: name 'light' is not defined 

:私はこのスクリプトを実行すると、私はエラーを取得する

#!/usr/bin/python 
import relay 

relay.relayOn(light) 

:たとえば、私はrelayTester.pyと呼ばれるテストファイルを作りました。私はどこにでも見てきたし、答えを見つけることができない。

+0

は 'relay.relayOn(relay.light)'の仕事をしていますか? – JacobIRR

+0

うわーはうまくいった!それがうまくいかないか尋ねるにはあまりにも勇気がありますか? –

+0

私は説明文 – JacobIRR

答えて

3

あなたは使用する必要があります。 relay.relayOn(relay.light)

lightがあなたのrelayモジュールのコンテキストで定義されたグローバル変数であるためです。

また、あなたが行うことができます:

from relay import relayOn, light 

は、それからちょうど使用:

relayOn(light) 
+0

を掲載しました。これは完璧に機能しました、ありがとうございます。私はできるだけ早く答えを受け入れるだろう。 –

関連する問題