所以我终于完成了考试,可以玩我的新玩具,所以我要做的第一件事是在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
。我在这里遗漏了什么吗?
#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 Power
到GPIO 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。
评论
因此,您是否将开关与1k电阻串联到GND?那应该与GPIO.PUD_UP一起工作。使用GPIO.PUD_UP并按下按钮,您看到什么电压?有点困惑;开关连接到什么位置?
迈克尔你好,欢迎来到Raspberry Pi!我已自由合并了您的两个帐户。谢谢!