如何通过GPIO读取按钮?


15

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

所以我终于完成了考试并且可以玩我的新玩具,所以我要做的第一件事是在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!我已自由合并了您的两个帐户。谢谢!

Answers:


6

我的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到1k的电阻来测试代码GPIO 4(GPCLK0)


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

1

我从不在引脚设置中使用“ 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。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.