首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引脚声明的结构

引脚声明的结构
EN

Stack Overflow用户
提问于 2022-02-27 19:37:50
回答 1查看 44关注 0票数 0

我想知道我应该如何为我的MCP23017 (一个I/O扩展芯片)的引脚声明构造我的代码,以及我是否应该将它放入一个函数中。

因此,目前我得到了下面的脚本与我的MCP的引脚声明和许多函数使用它们。这些函数由另一个文件调用,所有这些都是在Raspberry Pi上完成的。

代码语言:javascript
复制
import board
import busio
from digitalio import Direction
from adafruit_mcp230xx.mcp23017 import MCP23017
import time


i2c = busio.I2C(board.SCL, board.SDA)
mcp0 = MCP23017(i2c, address=0x27)
pin00 = mcp0.get_pin(0)
pin00.direction = Direction.OUTPUT
pin01 = mcp0.get_pin(1)
pin01.direction = Direction.OUTPUT
etc

pins = (pin00, pin01, etc)


def relays_off():
    i = 0
    while i < len(pins):
        if not pins[i].value:
            pins[i].value = True
        i += 1

def other_function():
    etc

整个项目是关于控制继电器,由这些引脚控制。问题是,每次我打开电源,都会出现一个错误,继电器会被随机激活/停用。错误是[Errno 121] Remote I/O error。我必须执行一堆relays_off()来使它平静下来,直到我没有得到更多的错误,然后它才能正常工作。

所以我首先想知道我是否正确地编码了它,或者引脚声明是否应该在其他函数调用的函数中?

EN

回答 1

Stack Overflow用户

发布于 2022-02-27 20:02:47

为了简洁起见省略了进口..。

把所有的引脚都列在一张单子里怎么样?例如,

代码语言:javascript
复制
NPINS = 5 # or whatever

def initpin(mcp, n):
    pin = mcp.get_pin(n)
    pin.direction = Direction.OUTPUT
    pin.value = True
    return pin

mcp0 = MCP23017(i2c, address=0x27)
    
pinlist = [initpin(mcp0, i) for i in range(NPINS)]

随后,您可以通过其各自的索引访问引脚。

不确定这是否有帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71287911

复制
相关文章

相似问题

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