每次我运行这段代码时,我都会在 if 语句中收到这种类型的错误。我很困惑为什么会这样。
TypeError: Function takes exactly 2 arguments (1 given)
这是代码。
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
while True:
if GPIO.output(14) == GPIO.HIGH:
print("Button Pressed")
解决方案是检查按钮是否被按下作为输入,以便您的代码解决方案不使用输出。
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
while True:
if GPIO.input(14) == 1:
print("Button Pressed")
这是一个使用
input
功能逻辑的解决方案,但据我所知,您可以使用该功能 add_event_detect
并定义一个可以按需工作的功能
import RPi.GPIO as GPIO
def button_callback(channel):
print("Button Pressed")
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
GPIO.add_event_detect(14,GPIO.RISING,callback=button_callback)
唯一不同的是,如果它不循环代码,则使用
while
循环,如上面的代码。