2016-01-20 146 views
0

是否可以寫2個腳本2 Python腳本使用相同的GPIO引腳RPI

1用於設置GPIO管腳

和1個用於讀出GPIO引腳的狀態是什麼。

我現在已經用python寫了這兩個腳本。但是當我啓動它們都只有1將工作

import RPi.GPIO as GPIO 
GPIO.setmode(GPIO.BCM) 
GPIO.setup(18,GPIO.IN) 
print GPIO.input(18) 

其他人聽一個按鈕,如果按下按鈕銷18設置爲高,如果按他再次引腳設置爲低

#!/usr/bin/python 
import RPi.GPIO as GPIO 
from time import sleep 

GPIO.setmode(GPIO.BCM) 
pushbutton = 2 
relay = 18 

GPIO.setup(pushbutton, GPIO.IN) 
GPIO.setup(relay, GPIO.OUT) 

def main(): 
    ingedrukt = GPIO.input(pushbutton) 
    try: 
     while (True): 
      if(ingedrukt == False): 
       if(GPIO.input(pushbutton) == False): 
        sleep(0.5) 
        if(GPIO.input(pushbutton) ==False): 
         GPIO.output(relay, GPIO.HIGH) 
         ingedrukt = True 
         print "Pushed" 
      else: 
       if(GPIO.input(pushbutton) == True): 
        GPIO.output(relay, GPIO.LOW) 
        ingedrukt = False 
        print "Not pushed" 
    except KeyboardInterrupt: 
     print "Quit" 
     GPIO.cleanup() 
main() 

這是可能的反正如果是這樣,我做錯了什麼?

回答

2

你並不需要設置繼電器爲GPIO輸入讀取狀態。所有你需要的是打印GPIO.input(18)命令。所以,你的第一個腳本應改爲:

import RPi.GPIO as GPIO 
GPIO.setmode(GPIO.BCM) 
print GPIO.input(18) 

我想補充的線

GPIO.setwarnings(False) 
+0

這是否意味着一個腳本將能夠從GPIO引腳讀取,而主腳本正在與GPIO引腳交互?我不是OP,我只是澄清,因爲我也有必要這樣做。 – DuckPuncher

+1

是的,在我的pi上測試過。只要第二個腳本運行,第一個腳本就可以獲取引腳狀態。關鍵不是將引腳定義爲輸入。 – SpaceCase

0

你試圖同時運行兩個腳本?爲什麼不在你的聽力腳本中使用打印語句?此外,您的腳本腳本的打印狀態需要一個while循環

+0

不,這不是我想要的。我想運行這個腳本時,我想運行它。並且帶按鈕的腳本需要一直運行。所以我可以從網絡服務器運行狀態腳本,以便我可以檢查當前的狀態。你明白嗎? –

0

你是什麼意思只有一個作品?也許這有幫助?

您的Raspberry Pi的GPIO 上可能有多個腳本/電路。因此,如果RPi.GPIO檢測到 引腳已配置爲默認(輸入), 以外的其他設置,則會在嘗試配置腳本時收到警告。要禁用這些 警告: GPIO.setwarnings(False)

來自:http://sourceforge.net/p/raspberry-gpio-python/wiki/BasicUsage/

+0

是的,我知道,但你只是沒有得到警告,但它仍然不起作用 –