[英]An integer is required?
我正在從Wtime
函數中獲取代碼,但在為Wtime
設置了waitTime
Wtime
,它不會轉換為我的main
函數。 當我按下按鈕使我的LED工作時,我得到:
time.sleep(waitTime)
TypeError: an integer is required (got type function)
這是我的代碼:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
#leds
rled = 16
yled = 6
#btns
btnOnVal = 12
btnOffVal = 18
#ldr
ltSense = 21
GPIO.setup(rled, GPIO.OUT)
GPIO.setup(yled, GPIO.OUT)
GPIO.setup(btnOnVal, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(btnOffVal, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(ltSense, GPIO.IN, pull_up_down = GPIO.PUD_UP)
def Wtime():
try:
waitTime = float(input("Please enter a wait time for flashing lights(1 - 10 secs):"))
while (waitTime < 0 or waitTime > 10):
waitTime = float(input("Please enter a wait time for flashing lights(1 - 10 secs):"))
except:
print("Not Integer Value")
return waitTime
def rblink(waitTime):
GPIO.output(rled, GPIO.HIGH)
time.sleep(waitTime)
GPIO.output(rled, GPIO.LOW)
time.sleep(waitTime)
def yblink(waitTime):
GPIO.output(yled, GPIO.HIGH)
time.sleep(waitTime)
GPIO.output(yled, GPIO.LOW)
time.sleep(waitTime)
def main(waitTime):
while (GPIO.input(ltSense) == 1):
if (GPIO.input(btnOnVal) == False):
for i in range(0,10,1):
rblink(waitTime)
if (GPIO.input(btnOffVal) == False):
for i in range(0,10,1):
yblink(waitTime)
#function call
Wtime()
main(yblink)
如何解決此錯誤?
您需要將wTime()
的結果傳遞給main()
:
main(Wtime())
另外,理想情況下,您應該以小寫字母開頭的函數名稱,因為標准是類的大寫字母。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.