class Pin – G/Ç pinlerini denetler

Bir pin nesnesi, G/Ç pinlerini (GPIO - genel amaçlı giriş/çıkış olarak da bilinir) denetlemek için kullanılır. Pin nesneleri genellikle bir çıkış voltajı sürebilen ve giriş voltajlarını okuyabilen fiziksel bir pin ile ilişkilendirilir. Pin sınıfı, pinin modunu (IN, OUT vb.) ayarlamak için metotlara ve dijital mantık seviyesini almak ve ayarlamak için metotlara sahiptir. Bir pinin analog denetimi için ADC sınıfına bakın.

Bir pin nesnesi, belirli bir G/Ç pinini açık biçimde belirten bir tanımlayıcı kullanılarak oluşturulur. Tanımlayıcının izin verilen biçimleri ve tanımlayıcının eşlendiği fiziksel pin porta özgüdür. Tanımlayıcı için olası değerler bir tam sayı, bir dize ya da port ve pin numarasından oluşan bir demet (tuple) olabilir.

Kullanım Modeli:

from machine import Pin

# create an output pin on header pin P0
p0 = Pin("P0", Pin.OUT)

# set the value low then high
p0.value(0)
p0.value(1)

# create an input pin on header pin P2, with a pull-up resistor
p2 = Pin("P2", Pin.IN, Pin.PULL_UP)

# read and print the pin value
print(p2.value())

# reconfigure P0 in input mode with a pull-down resistor
p0.init(p0.IN, p0.PULL_DOWN)

# install an IRQ callback
p0.irq(lambda p: print(p))

Kurucular

class machine.Pin(id: int | str, mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1)

Verilen id ile ilişkili pin çevre birimine (GPIO pini) erişin. Kurucuda ek argümanlar verilirse, bunlar pini başlatmak için kullanılır. Belirtilmeyen tüm ayarlar önceki durumlarında kalır.

Argümanlar şunlardır:

  • id zorunludur ve rastgele bir nesne olabilir. Olası değer türleri arasında şunlar bulunur: int (dahili bir Pin tanımlayıcısı), str (bir Pin adı) ve tuple ([port, pin] çifti).

  • mode pin modunu belirtir ve şunlardan biri olabilir:

    • Pin.IN - Pin giriş için yapılandırılır. Çıkış olarak görülürse pin yüksek empedans durumundadır.

    • Pin.OUT - Pin (normal) çıkış için yapılandırılır.

    • Pin.OPEN_DRAIN - Pin açık drenajlı çıkış için yapılandırılır. Açık drenajlı çıkış şu şekilde çalışır: çıkış değeri 0 olarak ayarlanırsa pin düşük seviyede etkindir; çıkış değeri 1 ise pin yüksek empedans durumundadır. Tüm portlar bu modu uygulamaz ya da bazıları yalnızca belirli pinlerde uygulayabilir.

    • Pin.ALT - Pin, porta özgü bir alternatif işlevi gerçekleştirmek üzere yapılandırılır. Bu şekilde yapılandırılan bir pin için diğer Pin metotları (Pin.init() dışında) uygulanabilir değildir (bunları çağırmak tanımsız ya da donanıma özgü bir sonuca yol açar). Tüm portlar bu modu uygulamaz.

    • Pin.ALT_OPEN_DRAIN - Pin.ALT ile aynıdır, ancak pin açık drenajlı olarak yapılandırılır. Tüm portlar bu modu uygulamaz.

    • Pin.ANALOG - Pin analog giriş için yapılandırılır, ADC sınıfına bakın.

  • pull pinin (zayıf) bir çekme direncine sahip olup olmadığını belirtir ve şunlardan biri olabilir:

    • None - Yukarı ya da aşağı çekme direnci yok.

    • Pin.PULL_UP - Yukarı çekme direnci etkin.

    • Pin.PULL_DOWN - Aşağı çekme direnci etkin.

  • value yalnızca Pin.OUT ve Pin.OPEN_DRAIN modları için geçerlidir ve verilirse ilk çıkış pin değerini belirtir; aksi takdirde pin çevre biriminin durumu değişmeden kalır.

  • drive pinin çıkış gücünü belirtir ve şunlardan biri olabilir: Pin.DRIVE_0, Pin.DRIVE_1 vb., sürme gücü artarak. Gerçek akım sürme kapasiteleri porta bağlıdır. Tüm portlar bu argümanı uygulamaz.

  • alt pin için bir alternatif işlev belirtir ve alabileceği değerler porta bağlıdır. Bu argüman yalnızca Pin.ALT ve Pin.ALT_OPEN_DRAIN modları için geçerlidir. Bir pin birden fazla alternatif işlevi desteklediğinde kullanılabilir. Yalnızca bir pin alternatif işlevi destekleniyorsa bu argüman gerekli değildir. Tüm portlar bu argümanı uygulamaz.

Yukarıda belirtildiği gibi, Pin sınıfı belirli bir pin için bir alternatif işlev ayarlanmasına izin verir, ancak böyle bir pin üzerinde başka herhangi bir işlem belirtmez. Alternatif işlev modunda yapılandırılan pinler genellikle GPIO olarak kullanılmaz, bunun yerine diğer donanım çevre birimleri tarafından sürülür. Böyle bir pin üzerinde desteklenen tek işlem, kurucuyu ya da Pin.init() metodunu çağırarak yeniden başlatmaktır. Alternatif işlev modunda yapılandırılan bir pin Pin.IN, Pin.OUT ya da Pin.OPEN_DRAIN ile yeniden başlatılırsa, alternatif işlev pinden kaldırılır.

Metotlar

init(mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1) None

Verilen parametreleri kullanarak pini yeniden başlatın. Yalnızca belirtilen argümanlar ayarlanır. Pin çevre biriminin geri kalan durumu değişmeden kalır. Argümanların ayrıntıları için kurucu belgelerine bakın.

None döndürür.

value(x: Any = None, /) int | None

Bu metot, x argümanının verilip verilmediğine bağlı olarak pinin değerini ayarlamaya ve almaya olanak tanır.

Argüman atlanırsa, bu metot pinin dijital mantık seviyesini alır ve sırasıyla düşük ve yüksek voltaj sinyallerine karşılık gelen 0 ya da 1 döndürür. Bu metodun davranışı pinin moduna bağlıdır:

  • Pin.IN - Metot, pin üzerinde şu anda mevcut olan gerçek giriş değerini döndürür.

  • Pin.OUT - Metodun davranışı ve dönüş değeri tanımsızdır.

  • Pin.OPEN_DRAIN - Pin ‘0’ durumundaysa metodun davranışı ve dönüş değeri tanımsızdır. Aksi takdirde, pin ‘1’ durumundaysa metot, pin üzerinde şu anda mevcut olan gerçek giriş değerini döndürür.

Argüman verilirse, bu metot pinin dijital mantık seviyesini ayarlar. x argümanı bir boolean değerine dönüşen herhangi bir şey olabilir. True değerine dönüşürse pin ‘1’ durumuna ayarlanır, aksi takdirde ‘0’ durumuna ayarlanır. Bu metodun davranışı pinin moduna bağlıdır:

  • Pin.IN - Değer, pinin çıkış arabelleğinde saklanır. Pin durumu değişmez, yüksek empedans durumunda kalır. Saklanan değer, pin Pin.OUT ya da Pin.OPEN_DRAIN moduna değiştirilir değiştirilmez pinde etkin hale gelir.

  • Pin.OUT - Çıkış arabelleği derhal verilen değere ayarlanır.

  • Pin.OPEN_DRAIN - Değer ‘0’ ise pin düşük voltaj durumuna ayarlanır. Aksi takdirde pin yüksek empedans durumuna ayarlanır.

Değeri ayarlarken bu metot None döndürür.

__call__(x: Any = None, /) int | None

Pin nesneleri çağrılabilir. Çağrı metodu, pinin değerini ayarlamak ve almak için (hızlı) bir kısayol sağlar. Pin.value([x]) ile eşdeğerdir. Daha fazla ayrıntı için Pin.value() bölümüne bakın.

on() None

Pini “1” çıkış seviyesine ayarlar.

off() None

Pini “0” çıkış seviyesine ayarlar.

irq(handler: Callable[[Pin], None] | None = None, trigger: int = Pin.IRQ_FALLING | Pin.IRQ_RISING, *, priority: int = 1, wake: int | None = None, hard: bool = False) None

Pinin tetikleme kaynağı etkin olduğunda çağrılacak bir kesme işleyicisi yapılandırın. Pin modu Pin.IN ise tetikleme kaynağı pin üzerindeki harici değerdir. Pin modu Pin.OUT ise tetikleme kaynağı pinin çıkış arabelleğidir. Aksi takdirde, pin modu Pin.OPEN_DRAIN ise tetikleme kaynağı ‘0’ durumu için çıkış arabelleği ve ‘1’ durumu için harici pin değeridir.

Argümanlar şunlardır:

  • handler kesme tetiklendiğinde çağrılacak isteğe bağlı bir işlevdir. İşleyici tam olarak bir argüman almalıdır, bu da Pin örneğidir.

  • trigger bir kesme üretebilen olayı yapılandırır. Olası değerler şunlardır:

    • Pin.IRQ_FALLING düşen kenarda kesme.

    • Pin.IRQ_RISING yükselen kenarda kesme.

    Bu değerler, birden fazla olayda tetiklenmek için OR ile birleştirilebilir.

  • priority kesmenin öncelik seviyesini ayarlar. Alabileceği değerler porta özgüdür, ancak daha yüksek değerler her zaman daha yüksek öncelikleri temsil eder.

  • wake bu kesmenin sistemi uyandırabileceği güç modunu seçer. Hiçbir OpenMV portunda desteklenmez; varsayılan değerde bırakın.

  • hard true ise bir donanım kesmesi kullanılır. Bu, pin değişikliği ile işleyicinin çağrılması arasındaki gecikmeyi azaltır. Donanım kesme işleyicileri bellek ayıramaz; bkz. Kesme işleyicileri yazma. Tüm portlar bu argümanı desteklemez.

Bu metot bir geri çağırma (callback) nesnesi döndürür.

Aşağıdaki metotlar çekirdek Pin API’sinin uzantılarıdır. Port kullanılabilirliğine göre gruplanmışlardır.

Tüm OpenMV portlarında bulunan metotlar

low() None

Pini “0” çıkış seviyesine ayarlar. off() için takma ad.

high() None

Pini “1” çıkış seviyesine ayarlar. on() için takma ad.

yalnızca mimxrt + alif

toggle() None

Çıkış pinini değiştir – “0” değerini “1” yapar ya da tersi. STM32 üzerinde açığa çıkarılmaz (STM32 üzerinde buna ihtiyacınız varsa value(not value()) kullanın).

yalnızca STM32

mode(mode: int | None = None, /) int
mode(mode: int, /) None

Pin modunu alın ya da ayarlayın. mode argümanının ayrıntıları için kurucu belgelerine bakın.

pull(pull: int | None = None, /) int
pull(pull: int, /) None

Pinin çekme durumunu alın ya da ayarlayın. pull argümanının ayrıntıları için kurucu belgelerine bakın.

Sabitler

Aşağıdaki sabitler, Pin nesnelerini kurucu, init() ve irq() aracılığıyla yapılandırmak için kullanılır. Port kullanılabilirliğine göre gruplanmışlardır.

Tüm OpenMV portlarında bulunan sabitler

IN: int

Pin modu: yüksek empedanslı dijital giriş.

OUT: int

Pin modu: push-pull dijital çıkış. STM32 üzerinde OUT_PP için takma ad.

OPEN_DRAIN: int

Pin modu: açık drenajlı çıkış. 0 sürmek hattı düşüğe çeker; 1 sürmek onu yüksek empedansa serbest bırakır.

PULL_UP: int

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

PULL_DOWN: int

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

IRQ_FALLING: int

Düşen kenarda tetiklemek için irq() metoduna geçirin.

IRQ_RISING: int

Yükselen kenarda tetiklemek için irq() metoduna geçirin.

yalnızca STM32

ALT: int

Pin modu: alternatif işlev (push-pull). Pinin hangi çevre birimi işlevine yönlendirileceğini seçmek için alt= ile kullanın. AF_PP için takma ad.

ALT_OPEN_DRAIN: int

Pin modu: alternatif işlev (açık drenaj). AF_OD için takma ad.

ANALOG: int

Pin modu: analog giriş – dijital giriş/çıkış arabelleği bağlantısı kesilir, böylece pin bir ADC kanalı tarafından sürülebilir.

AF_PP: int

Alternatif işlev push-pull modu (ALT ile aynı değer).

AF_OD: int

Alternatif işlev açık drenaj modu (ALT_OPEN_DRAIN ile aynı değer).

OUT_PP: int

Push-pull çıkış modu (OUT ile aynı değer).

OUT_OD: int

Açık drenajlı çıkış modu (OPEN_DRAIN ile aynı değer).

PULL_NONE: int

Pin üzerindeki dahili yukarı / aşağı çekme direncini devre dışı bırakır.

yalnızca mimxrt

PULL_UP_47K: int

~47 kΩ’luk bir dahili yukarı çekme direncini etkinleştirir.

PULL_UP_22K: int

~22 kΩ’luk bir dahili yukarı çekme direncini etkinleştirir.

PULL_HOLD: int

Pad’in bus-keeper / tutma işlevini etkinleştirir – pin, dalgalanmak yerine geçerli mantık seviyesini mandallar.

DRIVE_OFF: int

Pin çıkış sürücüsünü devre dışı bırakır.

DRIVE_0: int

En düşük sürme gücü ayarı (en yüksek seri empedans) – R0 referansı (3,3 V’ta ~150 Ω / 1,8 V’ta 260 Ω).

DRIVE_1: int

DRIVE_0 değerinin bir kademe üzerindeki sürme gücü.

DRIVE_2: int

DRIVE_0 değerinin iki kademe üzerindeki sürme gücü.

DRIVE_3: int

DRIVE_0 değerinin üç kademe üzerindeki sürme gücü (çıkış pinleri için varsayılan).

DRIVE_4: int

DRIVE_0 değerinin dört kademe üzerindeki sürme gücü.

DRIVE_5: int

DRIVE_0 değerinin beş kademe üzerindeki sürme gücü.

DRIVE_6: int

En güçlü sürme gücü ayarı.