首页
学习
活动
专区
圈层
工具
发布

GPIO错误
EN

Stack Overflow用户
提问于 2013-12-08 18:02:25
回答 1查看 10.3K关注 0票数 3

我正在Raspberry Pi上运行以下python脚本:

http://www.skpang.co.uk/dl/rfid.py

我已经修改了脚本的结尾,以访问GPIO引脚15,并打开和关闭它。下面是我在下面的代码:

代码语言:javascript
复制
def example():

rfid = SL030()
fw = rfid.get_firmware()
print("RFID reader firmware:" + fw)
print()

GPIO.setmode(GPIO.BOARD)
GPIO.setup(15, GPIO.OUT)
GPIO.output(15,True)


while True:
    rfid.wait_tag()
    print("card present")

    if rfid.select_mifare():
        type = rfid.get_type()
        print("type:" + rfid.get_typename(type))

        id = rfid.get_uidstr()
        try:
            user = cards[id]
            print(user)
            #os.system("aplay " + user)
        except KeyError:
            print("Unknown card:" + id)

    rfid.wait_notag()
    print("card removed")
    print()

我所面临的问题是,虽然它操作pin 15,但是脚本会出现以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "./rfid.py", line 212, in <module>
    example()
  File "./rfid.py", line 182, in example
rfid.wait_tag()
  File "./rfid.py", line 45, in wait_tag
while not self.tag_present():
  File "./rfid.py", line 40, in tag_present
    return GPIO.input(CFG_TAG_DETECT) == False
    RPi.GPIO.InvalidChannelException: The channel sent is invalid on a Raspberry Pi

有什么不对的吗?

谢谢

更新

如果我将GPIO代码放在def示例():下面的rfid = SL030()上面,那么它似乎没有出错:

代码语言:javascript
复制
def example():

    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(15, GPIO.OUT)
    GPIO.output(15,True)

    rfid = SL030()

* SOLUTION*更新

多亏安德烈,我改变了:

代码语言:javascript
复制
GPIO.setmode(GPIO.BOARD)

致: GPIO.setmode(GPIO.BCM)

然后将端口更改为与BCM端口匹配,如下所示:

代码语言:javascript
复制
GPIO.setup(22, GPIO.OUT)
GPIO.output(22,True)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-08 21:54:00

从这个question看来,GPIO有两种模式:GPIO.BCMGPIO.BOARD.试着使用另一个:

代码语言:javascript
复制
GPIO.setmode(GPIO.BCM)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20456905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档