簡體   English   中英

是否需要整數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM