簡體   English   中英

引腳聲明的結構

[英]Structure for pin declarations

我想知道我應該如何為我的 MCP23017(一個 I/O 擴展器微芯片)的引腳聲明構建我的代碼,以及我是否應該把它放在 function 中。

所以目前我得到了下面的腳本,其中包含我的 MCP 的引腳聲明和許多使用它們的函數。 這些函數由另一個文件調用,而這一切都在 Raspberry Pi 上。

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 聲明是否應該在其他函數調用的 function 中?

為簡潔起見省略了導入...

將所有引腳都放在一個列表中怎么樣? 例如,

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

隨后,您可以通過引腳列表中各自的索引訪問引腳。

不確定這是否有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM