• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

求助,树莓派GPIO输入的时候出现错误

sky无限 2015-11-28 浏览量:3102

我用的python控制的树莓派

下面是代码

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11,GPIO.IN)
while 1:
    v=GPIO.input(11)
    if(v==1):
        print "down"
        time.sleep(0.5)

首先,树莓派时能运行的,使用上没问题,

运行这个代码的时候,正常没有输出的

当我把杜邦线插在11口,就出问题了,刚插上线,就开始打印down了

问题是,我只插了杜邦线的一头到11口,另一头还没动呢,怎么就接到高电平了

我换成12口也是这个样子,


这是树莓派坏了,还是怎么了?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 你看看下面的代码:

    import RPi.GPIO as GPIO
    GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_UP)
    while True:
        input_value = GPIO.input(11)
        if input_value == False:
            print(“The button has been pressed.”)
            while input_value == False:
                input_value = GPIO.input(11)

    最后两行循环要加上,因为树莓派的cpu性能虽然不如一般电脑快但是Python代码的执行速度很快,最后两行的循环让Python一直检查11针脚的状态,直到针脚变成高电平为止,也就是按钮被松开,如果没有这个循环程序会一直循环打印按钮被按下了,无论你按的多快,所以你会看到打印了好多次按钮被按下了,造成误解。

    另外树莓派新出了一个新的Python模块叫gpiozero,用这个模块比RPi.GPIO要方便多了,我发了个帖子,你仔细看看,里面有例子。

    //www.icxbk.com/group-topic-id-61177.html

    • 发布于 2015-11-28
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:15

  • 建议再加一句判断v==0,打印"up",测试一下,这有可能是设置成输入模式的时候,引脚处于浮动的状态;

    如果确实是这样的话,可以根据需要加个上拉电阻或下拉电阻来解决。

    • 发布于2015-11-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 可是电路都没有通啊,就是插上一根杜邦线的一头而已,也没有构成回路,为啥会这样
    • 发布于2015-11-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 加了那条语句了吗?打印什么信息?
    • 发布于2015-11-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 就是正常打印啊,开始时输出up,输出5个左右,开始输出down 输出12个左右,就这样循环



    • 发布于2015-11-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 嗯,可以确定引脚处于浮动状态了,程序只是读取引脚的状态,引脚的内部结构是有构成回路的。至于内部结构是什么样的,高通不开源,我们也没办法知道。
    • 发布于2015-11-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 加上拉电阻或下拉电阻,就是接个10K电阻到电源或10K的电阻到地,让引脚初始为高电平或低电平。
    • 发布于2015-11-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 感谢您,我已经解决了,果然是那个上拉下拉的地方

    代码修改成这个可以控制上拉下拉

    GPIO.setup(37, GPIO.IN, pull_up_down=GPIO.PUD_UP)


    多谢
    • 发布于2015-11-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个问题很简单:

    原因:你的管脚配置成输入,那么处于浮空状态,外部长导线会使他拉高也很容易理解。

    解决方法,你需要输入低电平,把外面导线另一头接地,不然就接3v3就ok啦,如果你是想gpio作为输出的,就不要IN,改成OUT

    • 发布于2015-11-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 拉个电阻试试,也许有效呢。
    • 发布于2015-12-07
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

求助,树莓派GPIO输入的时候出现错误