无法读取GPIO引脚状态

1 投票
2 回答
6809 浏览
提问于 2025-04-18 14:41

我一直在尝试读取树莓派上一个输出GPIO引脚的当前状态,但一直没有成功。

代码:

#!/usr/bin/python
import RPi.GPIO as GPIO
import time


GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)

GPIO.setup(4, GPIO.OUT)


while True:

    if GPIO.output(4) == True:
        print "pin is high"
    else:
        print "pin is low"

    time.sleep(0.500)

我总是收到一个错误提示,告诉我在if语句的第一行需要两个参数。如果我提供了两个参数,结果就是引脚变为高电平,并且循环中继续打印。我相信我快成功了,但就是搞不定。提前感谢任何帮助!

2 个回答

0

我猜你需要把

GPIO.setup(4, GPIO.OUT)

改成

GPIO.setup(4, GPIO.IN)

如果你想从中读取数据的话。

GPIO引脚不能同时进行读和写(它们只能读或者写,不能两者都做)……你必须明确地把它设置为写模式才能写数据,把它设置为读模式才能读数据……

1

我猜你是想确认一下你的引脚状态,而不是测量它。

我遇到的情况是,有两个插件(在Kodi/XBMC下)可以控制一个引脚。在其中一个插件更改设置之前,它需要先读取这个引脚的状态:

if GPIO.input(17) is 1:
    line2 = 'The pin is high'
else:
    line2 = 'The pin is low'

撰写回答