clasa Pin – controlul pinilor I/O¶
Un obiect Pin reprezintă un singur GPIO de pe STM32. Acesta oferă metode pentru a configura modul pinului (intrare, ieșire, funcție alternativă, analogic) și rezistențele de pull, precum și pentru a citi sau a impune nivelul său logic digital. Pentru eșantionare analogică consultați pyb.ADC; pentru enumerarea funcțiilor alternative consultați PinAF.
Toți pinii de pe header sunt predefiniți ca pyb.Pin.board.<name>. Majoritatea camerelor OpenMV Cam bazate pe STM32 expun pinii de pe header-ul I/O P0 … P9; OpenMV Cam N6 expune pini suplimentari, până la P18
p0 = pyb.Pin.board.P0
g = pyb.Pin(pyb.Pin.board.P0, pyb.Pin.IN)
Portul/pinul STM32 subiacent poate fi de asemenea adresat direct prin pyb.Pin.cpu.<name>, denumit cu litera portului urmată de numărul pinului (de exemplu pyb.Pin.cpu.A0). Maparea fiecărui pin de pe header-ul OpenMV la un pin CPU este fixată de placă.
Pinii pot fi de asemenea selectați după nume sub formă de șir:
g = pyb.Pin("P0", pyb.Pin.OUT_PP)
Numele definite de utilizator pot fi adăugate cu Pin.dict()
MyMapperDict = {"LeftMotorDir": pyb.Pin.cpu.A0}
pyb.Pin.dict(MyMapperDict)
g = pyb.Pin("LeftMotorDir", pyb.Pin.OUT_OD)
și interogate înapoi:
pin = pyb.Pin("LeftMotorDir")
În mod alternativ, o funcție de mapare personalizată poate fi instalată cu Pin.mapper()
def MyMapper(pin_name):
if pin_name == "LeftMotorDir":
return pyb.Pin.cpu.A0
pyb.Pin.mapper(MyMapper)
astfel încât un apel la pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) transmite "LeftMotorDir" direct către funcția de mapare.
Ordinea următoare determină modul în care un nume este mapat la un pin fizic:
Un obiect
Pineste transmis direct.Funcția de mapare furnizată de utilizator returnează un pin.
Dicționarul furnizat de utilizator conține o cheie corespunzătoare.
Șirul corespunde unui nume de pin al plăcii (
P0,P1, …).Șirul corespunde unui nume de port/pin CPU (
A0,B7, …).
Apelați pyb.Pin.debug(True) pentru a afișa informații de diagnosticare despre modul în care fiecare obiect este mapat la un pin.
Constructori¶
- class pyb.Pin(id: str | Pin, *args, **kwargs)¶
Creează un nou obiect Pin asociat cu
id-ul dat. Dacă sunt furnizate argumente suplimentare, acestea sunt transmise mai departe cătrePin.init()pentru a configura pinul.Metode de clasă¶
- classmethod debug(state: bool | None = None) bool | None¶
Obține sau setează starea de depanare (
TruesauFalsepentru pornit sau oprit).
Metode¶
- init(mode: int, pull: int = Pin.PULL_NONE, *, value: int | None = None, alt: int | str = -1) None¶
Inițializează pinul:
mode poate fi una dintre:
Pin.IN- configurează pinul pentru intrare;Pin.OUT_PP- configurează pinul pentru ieșire, cu control push-pull;Pin.OUT_OD- configurează pinul pentru ieșire, cu control open-drain;Pin.ALT- configurează pinul pentru funcție alternativă, intrare sau ieșire;Pin.AF_PP- configurează pinul pentru funcție alternativă, push-pull;Pin.AF_OD- configurează pinul pentru funcție alternativă, open-drain;Pin.ANALOG- configurează pinul pentru mod analogic.
pull poate fi una dintre:
Pin.PULL_NONE- fără rezistențe de pull-up sau pull-down;Pin.PULL_UP- activează rezistența de pull-up;Pin.PULL_DOWN- activează rezistența de pull-down.
Când un pin are activat modul de pull
Pin.PULL_UPsauPin.PULL_DOWN, acel pin este tras la 3V3, respectiv la GND, printr-o rezistență internă (de obicei zeci de kOhm – consultați caracteristicile electrice din fișa tehnică STM32 pentru camera OpenMV Cam utilizată).value, dacă nu este None, va seta valoarea de ieșire a portului înainte de a activa pinul.
alt poate fi folosit când modul este
Pin.ALT,Pin.AF_PPsauPin.AF_ODpentru a seta indexul sau numele uneia dintre funcțiile alternative asociate unui pin. Acest argument se numea anterioraf, care poate fi încă folosit dacă este necesar.
- value(value: Any | None = None) int | None¶
Obține sau setează nivelul logic digital al pinului:
Fără niciun argument, returnează 0 sau 1 în funcție de nivelul logic al pinului.
Cu
valuedat, setează nivelul logic al pinului.valuepoate fi orice se convertește la o valoare booleană. Dacă se convertește laTrue, pinul este setat pe nivel înalt, altfel este setat pe nivel jos.
- af() int¶
Returnează funcția alternativă configurată în prezent a pinului. Numărul întreg returnat va corespunde uneia dintre constantele permise pentru argumentul af al funcției init.
Constante¶