2014-01-17 43 views
1

當我與須藤python3 program.py並按日開關1執行拋出下一個異常:RuntimeError:必須設置()中的GPIO通道第一

Taking picture... 
Picture takeng... 
Traceback (most recent call last): 
    File "main.py", line 21, in <module> 
    if GPIO.input(switch1): 
RuntimeError: You must setup() the GPIO channel first 

我使用覆盆子凸輪庫和rpi.gpio這個項目的圖書館。任何人都知道我的代碼中發生了什麼?

import RPi.GPIO as GPIO 
import time 
import picamera 

# initial config for gpio ports 
GPIO.setwarnings(False) 
GPIO.setmode(GPIO.BCM) 

# input switches 
switch1 = 22 
switch2 = 23 
switch3 = 24 

# setup 
GPIO.setup(switch1, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.setup(switch2, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.setup(switch3, GPIO.IN, pull_up_down=GPIO.PUD_UP) 

# main loop 
while True: 
    if GPIO.input(switch1): 
     print ("Taking picture...") 
     with picamera.PiCamera() as camera: 
      camera.resolution = (1280, 720) 
      camera.start_preview() 
      time.sleep(0.5) 
      camera.capture("test.jpg") 
     print ("Picture takeng...") 
    elif GPIO.input(switch2): 
     print ("Taking video...") 
    elif GPIO.input(switch3): 
     print ("Poweroff...") 
     break 

GPIO.cleanup() 

回答

5

錯誤是告訴你,你有沒有設置引腳的輸入工作,當您嘗試訪問他們的話,它會失敗。我有一個類似的問題,據我所知,它應該工作(畢竟你是在設置引腳)。

嘗試更改GPIO.setmode(GPIO.BCM)GPIO.setmode(GPIO.BOARD)。您還必須將針號更改爲物理針號(您的針數爲15,16和18)。 我仍然不知道爲什麼,但它對我的代碼做了詭計。

-1

您必須授予/dev/文件夾和mem文件的訪問權限。 要做到這一點打開樹莓終端並輸入命令吼叫

sudo chmod -R 777 /dev/ and hit enter 

然後

sudo chmod -R 777 /dev/mem and hit enter that's it