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
idile 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:
idzorunludur 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).modepin 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.ALTile 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,ADCsınıfına bakın.
pullpinin (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.
valueyalnı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.drivepinin çıkış gücünü belirtir ve şunlardan biri olabilir:Pin.DRIVE_0,Pin.DRIVE_1vb., sürme gücü artarak. Gerçek akım sürme kapasiteleri porta bağlıdır. Tüm portlar bu argümanı uygulamaz.altpin için bir alternatif işlev belirtir ve alabileceği değerler porta bağlıdır. Bu argüman yalnızcaPin.ALTvePin.ALT_OPEN_DRAINmodları 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 pinPin.IN,Pin.OUTya daPin.OPEN_DRAINile 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.
Nonedöndürür.
- value(x: Any = None, /) int | None¶
Bu metot,
xargü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.
xargümanı bir boolean değerine dönüşen herhangi bir şey olabilir.Truedeğ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, pinPin.OUTya daPin.OPEN_DRAINmoduna 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
Nonedö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.
- 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.INise tetikleme kaynağı pin üzerindeki harici değerdir. Pin moduPin.OUTise tetikleme kaynağı pinin çıkış arabelleğidir. Aksi takdirde, pin moduPin.OPEN_DRAINise tetikleme kaynağı ‘0’ durumu için çıkış arabelleği ve ‘1’ durumu için harici pin değeridir.Argümanlar şunlardır:
handlerkesme tetiklendiğinde çağrılacak isteğe bağlı bir işlevdir. İşleyici tam olarak bir argüman almalıdır, bu daPinörneğidir.triggerbir kesme üretebilen olayı yapılandırır. Olası değerler şunlardır:Pin.IRQ_FALLINGdüşen kenarda kesme.Pin.IRQ_RISINGyükselen kenarda kesme.
Bu değerler, birden fazla olayda tetiklenmek için OR ile birleştirilebilir.
prioritykesmenin ö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.wakebu kesmenin sistemi uyandırabileceği güç modunu seçer. Hiçbir OpenMV portunda desteklenmez; varsayılan değerde bırakın.hardtrue 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¶
yalnızca mimxrt + alif¶
yalnızca STM32¶
Sabitler¶
Aşağıdaki sabitler,
Pinnesnelerini kurucu,init()veirq()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¶
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_PPiçin takma ad.
- ANALOG: int¶
Pin modu: analog giriş – dijital giriş/çıkış arabelleği bağlantısı kesilir, böylece pin bir
ADCkanalı tarafından sürülebilir.
- AF_OD: int¶
Alternatif işlev açık drenaj modu (
ALT_OPEN_DRAINile aynı değer).
- OUT_OD: int¶
Açık drenajlı çıkış modu (
OPEN_DRAINile aynı değer).
yalnızca mimxrt¶
- PULL_HOLD: int¶
Pad’in bus-keeper / tutma işlevini etkinleştirir – pin, dalgalanmak yerine geçerli mantık seviyesini mandallar.