很久以前,我认为自己不属于这类初学者,但是我想我并不像我以前想象的那样聪明,因为我似乎对此感到异常烦恼!

所以我终于完成了考试,可以玩我的新玩具,所以我要做的第一件事是在UART上安装了LCD字符显示器。我的工作没问题,所以我很难解决这个按钮的原因!

所以我设置了一个类似于按钮的按钮会与arduino一起; 1k电阻接地。我用万用表确保按钮可以正常工作,并输出正确的电量。我通过SSH进入我的外壳,将按钮插入GPIO引脚7,然后进入python。这是我尝试的方法:

GPIO.pinout(GPIO.BOARD)
GPIO.setup(7,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
while 1==1:
    inputval = GPIO.input(7)
    print inputval


这使我无休止地循环了False,无论我如何按按钮。我也用GPIO.PUD_UP尝试了一下,取而代之的是True的无限循环。我也尝试过使用GPIO.PUD_OFF并获得了更多的False

我在这里遗漏了什么吗?

评论

因此,您是否将开关与1k电阻串联到GND?那应该与GPIO.PUD_UP一起工作。使用GPIO.PUD_UP并按下按钮,您看到什么电压?

有点困惑;开关连接到什么位置?

迈克尔你好,欢迎来到Raspberry Pi!我已自由合并了您的两个帐户。谢谢!

#1 楼

我的GPIO没有pinout,我不得不将其更改为setmode
import time
from RPi import GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
while True:
    inputval = GPIO.input(7)
    print inputval
    time.sleep(1)

因为您使用的是GPIO.BOARD,所以第7针是GPIO 4(GPCLK0)。如果要使用GPIO 7(CE1),则应改用GPIO.setmode(GPIO.BCM)

我通过触摸从3V3 PowerGPIO 4(GPCLK0)的1k电阻器来测试了代码

评论


我几乎可以肯定您对它为什么不起作用的正确理解。我给人的印象是GPIO.BOARD是用于板本身的引脚排列,如图所示,而不是物理引脚编号方案。当我下班回家时,我会尝试一下,并且我肯定它会工作。

–迈克尔
2012年8月21日14:55



#2 楼

我从不在引脚设置中使用“ pull_up_down = GPIO.PUD_DOWN”。尝试以下操作:

GPIO.setmode(GPIO.BCM)
GPIO.setup(PinNum,GPIO.IN)
while 1==1:
    if GPIO.input(PinNum)==1:
        print "True"
    else:
        print "False"


如小偷所说,请确保PinNum用于BCM GPIO。