pin声明的结构



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

因此,目前我得到了下面的脚本,其中包含MCP的pin声明和许多使用它们的函数。这些函数是由另一个文件调用的,这一切都在树莓派上。

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()来让它平静下来,直到我不再出现错误,然后它就可以正常工作了。

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

为简洁起见,省略了导入。。。

把所有的别针都列在一个清单里怎么样?例如

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)]

随后,您可以通过管脚列表中的相应索引来访问管脚。

不确定这是否有助于

相关内容

  • 没有找到相关文章

最新更新