2015-04-04 82 views
1

我對Pi上的GPIO編程不太熟悉,但是在查看GPIO lib和picamera上的一些教程後我寫了這個。我有一個連接到針腳4和地面的按鈕,當按下時應該爲相機加上星號,拍攝照片,然後關閉相機。我下面的代碼拍攝一張照片,但不斷地保持調用關閉功能。我不太明白爲什麼。Raspberry Pi相機GPIO ...關閉語句導致錯誤

import picamera 
import RPi.GPIO as GPIO 
import datetime 
import time 

GPIO.setmode(GPIO.BCM) 
GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_UP) 

class OpenCamera: 
    def __init__(self): 
     self.camera = picamera.PiCamera() 

    def setres(self): 
     self.camera.resolution = (640, 480) 
     self.camera.brightness = 50 
     self.camera.sharpness = 10 

    def takepic(self): 
     currenttime = time.localtime() 
     day = time.strftime('%m-%d-%Y', currenttime) 
     exacttime = time.strftime('%H:%M:%S', currenttime) 
     self.camera.capture(day + exacttime + '.jpg') 

    def close(self): 
     self.close() 


while True: 
    inputstate = GPIO.input(4) 
    if inputstate == False:   
     startcam = OpenCamera()   
     startcam.setres()  
     time.sleep(4)  
     print('5 4 3 2...cheese!')  
     startcam.takepic()  
     startcam.close() 

我從這裏的一些代碼:http://makezine.com/projects/tutorial-raspberry-pi-gpio-pins-and-python/

如果我刪除的close()然後我用盡資源......我試圖做一個「事件檢測」,但我仍然得到同樣的問題以上。

回答

2

這些行調用close()函數本身,因此會導致無限調用。

def close(self): 
    self.close() 

您可能想改爲撥打self.camera.close()

+0

我知道這一點,但起初並不完全明白!謝謝 – ohbrobig 2015-04-06 16:38:40