class Pin – I/O pinlerini denetleme

Bir Pin nesnesi, STM32 üzerindeki tek bir GPIO’yu temsil eder. Pinin modunu (giriş, çıkış, alternatif işlev, analog) ve çekme dirençlerini yapılandırmak, dijital seviyesini okumak veya sürmek için yöntemler sağlar. Analog örnekleme için pyb.ADC bölümüne; alternatif işlev numaralandırması için PinAF bölümüne bakın.

Tüm başlık pinleri pyb.Pin.board.<name> olarak önceden tanımlanmıştır. Çoğu STM32 OpenMV Cam, P0P9 I/O başlık pinlerini sunar; OpenMV Cam N6 ise P18‘e kadar ek pinler sunar:

p0 = pyb.Pin.board.P0
g = pyb.Pin(pyb.Pin.board.P0, pyb.Pin.IN)

Alttaki STM32 port/pini, port harfinin ardından pin numarası gelecek şekilde adlandırılan pyb.Pin.cpu.<name> aracılığıyla doğrudan da adreslenebilir (örneğin pyb.Pin.cpu.A0). Her bir OpenMV başlık pininin bir CPU pinine eşlenmesi kart tarafından sabitlenmiştir.

Pinler ayrıca dize adıyla da seçilebilir:

g = pyb.Pin("P0", pyb.Pin.OUT_PP)

Kullanıcı tanımlı adlar Pin.dict() ile eklenebilir:

MyMapperDict = {"LeftMotorDir": pyb.Pin.cpu.A0}
pyb.Pin.dict(MyMapperDict)
g = pyb.Pin("LeftMotorDir", pyb.Pin.OUT_OD)

ve geri sorgulanabilir:

pin = pyb.Pin("LeftMotorDir")

Alternatif olarak, Pin.mapper() ile özel bir eşleme işlevi kurulabilir:

def MyMapper(pin_name):
    if pin_name == "LeftMotorDir":
        return pyb.Pin.cpu.A0

pyb.Pin.mapper(MyMapper)

böylece pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) çağrısı, "LeftMotorDir" değerini doğrudan eşleyiciye iletir.

Bir adın fiziksel bir pine nasıl eşleneceğini aşağıdaki sıra belirler:

  1. Bir Pin nesnesi doğrudan iletilir.

  2. Kullanıcının sağladığı eşleyici işlevi bir pin döndürür.

  3. Kullanıcının sağladığı sözlük eşleşen bir anahtar içerir.

  4. Dize, bir kart pin adıyla eşleşir (P0, P1, …).

  5. Dize, bir CPU port/pin adıyla eşleşir (A0, B7, …).

Her bir nesnenin bir pine nasıl eşlendiğine ilişkin tanılama bilgilerini yazdırmak için pyb.Pin.debug(True) çağrısını yapın.

Yapıcılar

class pyb.Pin(id: str | Pin, *args, **kwargs)

Verilen id ile ilişkili yeni bir Pin nesnesi oluşturur. Ek argümanlar verilirse, bunlar pini yapılandırmak için Pin.init() yöntemine iletilir.

Sınıf yöntemleri

classmethod debug(state: bool | None = None) bool | None

Hata ayıklama durumunu alır veya ayarlar (açık veya kapalı için True ya da False).

classmethod dict(dict: dict | None = None) dict | None

Pin eşleyici sözlüğünü alır veya ayarlar.

classmethod mapper(fun: Callable[[str], Pin] | None = None) Callable[[str], Pin] | None

Pin eşleyici işlevini alır veya ayarlar.

Yöntemler

init(mode: int, pull: int = Pin.PULL_NONE, *, value: int | None = None, alt: int | str = -1) None

Pini başlatır:

  • mode şunlardan biri olabilir:

    • Pin.IN - pini giriş için yapılandırır;

    • Pin.OUT_PP - pini push-pull denetimiyle çıkış için yapılandırır;

    • Pin.OUT_OD - pini open-drain denetimiyle çıkış için yapılandırır;

    • Pin.ALT - pini alternatif işlev, giriş veya çıkış için yapılandırır;

    • Pin.AF_PP - pini alternatif işlev, push-pull için yapılandırır;

    • Pin.AF_OD - pini alternatif işlev, open-drain için yapılandırır;

    • Pin.ANALOG - pini analog için yapılandırır.

  • pull şunlardan biri olabilir:

    • Pin.PULL_NONE - çekme yukarı veya çekme aşağı direnci yok;

    • Pin.PULL_UP - çekme yukarı direncini etkinleştirir;

    • Pin.PULL_DOWN - çekme aşağı direncini etkinleştirir.

    Bir pinde Pin.PULL_UP veya Pin.PULL_DOWN çekme modu etkinleştirildiğinde, o pin dahili bir direnç (tipik olarak onlarca kOhm – kullanılan OpenMV Cam’e ait STM32 veri sayfasındaki elektriksel özelliklere bakın) aracılığıyla sırasıyla 3V3 veya GND’ye çekilir.

  • value None değilse, pin etkinleştirilmeden önce port çıkış değerini ayarlar.

  • alt, mod Pin.ALT, Pin.AF_PP veya Pin.AF_OD olduğunda, bir pinle ilişkili alternatif işlevlerden birinin dizinini veya adını ayarlamak için kullanılabilir. Bu argüman daha önce af olarak adlandırılıyordu ve gerekirse hâlâ kullanılabilir.

value(value: Any | None = None) int | None

Pinin dijital mantık seviyesini alır veya ayarlar:

  • Argüman verilmezse, pinin mantık seviyesine bağlı olarak 0 veya 1 döndürür.

  • value verildiğinde, pinin mantık seviyesini ayarlar. value, bir boole değerine dönüştürülebilen herhangi bir şey olabilir. True değerine dönüşürse pin yüksek seviyeye, aksi takdirde düşük seviyeye ayarlanır.

__str__() str

Pin nesnesini açıklayan bir dize döndürür.

af() int

Pinin o anda yapılandırılmış alternatif işlevini döndürür. Döndürülen tam sayı, init işlevinin af argümanı için izin verilen sabitlerden biriyle eşleşir.

af_list() List[PinAF]

Bu pin için kullanılabilen alternatif işlevlerden oluşan bir dizi döndürür.

gpio() int

Bu pinle ilişkili GPIO bloğunun temel adresini döndürür.

mode() int

Pinin o anda yapılandırılmış modunu döndürür. Döndürülen tam sayı, init işlevinin mode argümanı için izin verilen sabitlerden biriyle eşleşir.

name() str

Pin adını alır.

names() List[str]

Bu pin için cpu ve kart adlarını döndürür.

pin() int

Pin numarasını alır.

port() int

Pin portunu alır.

pull() int

Pinin o anda yapılandırılmış çekme değerini döndürür. Döndürülen tam sayı, init işlevinin pull argümanı için izin verilen sabitlerden biriyle eşleşir.

Sabitler

IN: int

Pini dijital giriş (yüksek empedans) olarak yapılandırır.

OUT_PP: int

Pini push-pull sürücüsüne sahip dijital çıkış olarak yapılandırır.

OUT_OD: int

Pini open-drain sürücüsüne sahip dijital çıkış olarak yapılandırır.

ANALOG: int

Pini analog giriş olarak yapılandırır (örneğin ADC ile kullanmak için).

ALT: int

Pini alternatif işlev (giriş veya çıkış) olarak yapılandırır.

AF_PP: int

Pini push-pull sürücüsüne sahip alternatif işlev olarak yapılandırır.

AF_OD: int

Pini open-drain sürücüsüne sahip alternatif işlev olarak yapılandırır.

PULL_NONE: int

Pin üzerindeki hem çekme yukarı hem de çekme aşağı dirençlerini devre dışı bırakır.

PULL_UP: int

Pin üzerindeki dahili çekme yukarı direncini etkinleştirir.

PULL_DOWN: int

Pin üzerindeki dahili çekme aşağı direncini etkinleştirir.