繁体   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