kelas Pin -- kontrol pin I/O¶
Objek pin digunakan untuk mengontrol pin I/O (juga dikenal sebagai GPIO - general-purpose input/output). Objek pin umumnya diasosiasikan dengan pin fisik yang dapat menghasilkan tegangan keluaran dan membaca tegangan masukan. Kelas pin memiliki metode untuk mengatur mode pin (IN, OUT, dll) dan metode untuk mendapatkan serta mengatur level logika digital. Untuk kontrol analog pada pin, lihat kelas ADC.
Objek pin dibangun menggunakan sebuah identifier yang secara jelas merujuk ke pin I/O tertentu. Bentuk identifier yang diperbolehkan dan pin fisik yang dipetakan oleh identifier tersebut bersifat port-specific. Kemungkinan identifier berupa integer, string, atau tuple yang berisi nomor port dan pin.
Model Penggunaan:
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))
Konstruktor¶
- class machine.Pin(id: int | str, mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1)¶
Akses periferal pin (pin GPIO) yang terkait dengan
idyang diberikan. Jika argumen tambahan diberikan dalam konstruktor, argumen tersebut digunakan untuk menginisialisasi pin. Pengaturan yang tidak ditentukan akan tetap dalam kondisi sebelumnya.Argumen-argumennya adalah:
idbersifat wajib dan dapat berupa objek sembarang. Di antara jenis nilai yang memungkinkan adalah: int (identifier Pin internal), str (nama Pin), dan tuple (pasangan [port, pin]).modemenentukan mode pin, yang dapat berupa salah satu dari:Pin.IN- Pin dikonfigurasi untuk input. Jika dilihat sebagai output, pin berada dalam kondisi impedansi tinggi.Pin.OUT- Pin dikonfigurasi untuk output (normal).Pin.OPEN_DRAIN- Pin dikonfigurasi untuk output open-drain. Output open-drain bekerja sebagai berikut: jika nilai output diatur ke 0, pin aktif pada level rendah; jika nilai output adalah 1, pin berada dalam kondisi impedansi tinggi. Tidak semua port mengimplementasikan mode ini, atau beberapa mungkin hanya pada pin tertentu.Pin.ALT- Pin dikonfigurasi untuk menjalankan fungsi alternatif, yang bersifat port-specific. Untuk pin yang dikonfigurasi dengan cara ini, metode Pin lainnya (kecualiPin.init()) tidak berlaku (memanggilnya akan menghasilkan perilaku yang tidak terdefinisi, atau bersifat hardware-specific). Tidak semua port mengimplementasikan mode ini.Pin.ALT_OPEN_DRAIN- Sama sepertiPin.ALT, tetapi pin dikonfigurasi sebagai open-drain. Tidak semua port mengimplementasikan mode ini.Pin.ANALOG- Pin dikonfigurasi untuk input analog, lihat kelasADC.
pullmenentukan apakah pin memiliki resistor pull (lemah) yang terpasang, dan dapat berupa salah satu dari:None- Tidak ada resistor pull-up atau pull-down.Pin.PULL_UP- Resistor pull-up diaktifkan.Pin.PULL_DOWN- Resistor pull-down diaktifkan.
valuehanya berlaku untuk mode Pin.OUT dan Pin.OPEN_DRAIN dan menentukan nilai awal pin output jika diberikan, jika tidak, kondisi periferal pin tetap tidak berubah.drivemenentukan daya output pin dan dapat berupa salah satu dari:Pin.DRIVE_0,Pin.DRIVE_1, dll., dengan kekuatan drive yang meningkat. Kemampuan arus aktual bergantung pada port. Tidak semua port mengimplementasikan argumen ini.altmenentukan fungsi alternatif untuk pin dan nilai yang dapat diambilnya bergantung pada port. Argumen ini hanya berlaku untuk modePin.ALTdanPin.ALT_OPEN_DRAIN. Argumen ini dapat digunakan ketika sebuah pin mendukung lebih dari satu fungsi alternatif. Jika hanya satu fungsi alternatif pin yang didukung, argumen ini tidak diperlukan. Tidak semua port mengimplementasikan argumen ini.
Seperti disebutkan di atas, kelas Pin memungkinkan untuk mengatur fungsi alternatif untuk pin tertentu, tetapi tidak menentukan operasi lebih lanjut pada pin tersebut. Pin yang dikonfigurasi dalam mode fungsi alternatif biasanya tidak digunakan sebagai GPIO melainkan dikendalikan oleh periferal hardware lainnya. Satu-satunya operasi yang didukung pada pin tersebut adalah re-inisialisasi, dengan memanggil konstruktor atau metode
Pin.init(). Jika pin yang dikonfigurasi dalam mode fungsi alternatif di-inisialisasi ulang denganPin.IN,Pin.OUT, atauPin.OPEN_DRAIN, fungsi alternatif akan dihapus dari pin.Metode¶
- init(mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1) None¶
Inisialisasi ulang pin menggunakan parameter yang diberikan. Hanya argumen yang ditentukan yang akan diatur. Kondisi periferal pin lainnya akan tetap tidak berubah. Lihat dokumentasi konstruktor untuk detail argumen.
Mengembalikan
None.
- value(x: Any = None, /) int | None¶
Metode ini memungkinkan untuk mengatur dan mendapatkan nilai pin, tergantung pada apakah argumen
xdiberikan atau tidak.Jika argumen dihilangkan, metode ini mendapatkan level logika digital pin saat ini, mengembalikan 0 atau 1 yang masing-masing sesuai dengan sinyal tegangan rendah dan tinggi. Perilaku metode ini bergantung pada mode pin:
Pin.IN- Metode mengembalikan nilai input aktual yang saat ini ada pada pin.Pin.OUT- Perilaku dan nilai kembalian metode ini tidak terdefinisi.Pin.OPEN_DRAIN- Jika pin dalam kondisi '0', maka perilaku dan nilai kembalian metode ini tidak terdefinisi. Jika tidak, jika pin dalam kondisi '1', metode mengembalikan nilai input aktual yang saat ini ada pada pin.
Jika argumen diberikan, metode ini mengatur level logika digital pin. Argumen
xdapat berupa apa saja yang dapat dikonversi ke boolean. Jika dikonversi keTrue, pin diatur ke kondisi '1', jika tidak diatur ke kondisi '0'. Perilaku metode ini bergantung pada mode pin:Pin.IN- Nilai disimpan dalam buffer output pin. Kondisi pin tidak berubah, tetap dalam kondisi impedansi tinggi. Nilai yang tersimpan akan aktif pada pin segera setelah diubah ke modePin.OUTatauPin.OPEN_DRAIN.Pin.OUT- Buffer output diatur ke nilai yang diberikan segera.Pin.OPEN_DRAIN- Jika nilai adalah '0', pin diatur ke kondisi tegangan rendah. Jika tidak, pin diatur ke kondisi impedansi tinggi.
Saat mengatur nilai, metode ini mengembalikan
None.
- __call__(x: Any = None, /) int | None¶
Objek Pin dapat dipanggil. Metode call menyediakan pintasan (cepat) untuk mengatur dan mendapatkan nilai pin. Metode ini setara dengan Pin.value([x]). Lihat
Pin.value()untuk detail lebih lanjut.
- 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¶
Konfigurasikan handler interupsi untuk dipanggil ketika sumber pemicu pin aktif. Jika mode pin adalah
Pin.IN, sumber pemicu adalah nilai eksternal pada pin. Jika mode pin adalahPin.OUT, sumber pemicu adalah buffer output pin. Jika tidak, jika mode pin adalahPin.OPEN_DRAIN, sumber pemicu adalah buffer output untuk kondisi '0' dan nilai pin eksternal untuk kondisi '1'.Argumen-argumennya adalah:
handleradalah fungsi opsional yang dipanggil ketika interupsi dipicu. Handler harus menerima tepat satu argumen yaitu instansiPin.triggermengonfigurasi event yang dapat menghasilkan interupsi. Nilai yang memungkinkan adalah:Pin.IRQ_FALLINGinterupsi pada tepi turun.Pin.IRQ_RISINGinterupsi pada tepi naik.
Nilai-nilai ini dapat di-OR-kan bersama untuk memicu pada beberapa event.
prioritymengatur level prioritas interupsi. Nilai yang dapat diambil bersifat port-specific, tetapi nilai yang lebih tinggi selalu mewakili prioritas yang lebih tinggi.wakememilih mode daya di mana interupsi ini dapat membangunkan sistem. Tidak didukung pada port OpenMV mana pun; biarkan pada nilai default.hardjika true, interupsi hardware digunakan. Ini mengurangi penundaan antara perubahan pin dan handler yang dipanggil. Handler interupsi keras tidak boleh mengalokasikan memori; lihat Menulis interrupt handler. Tidak semua port mendukung argumen ini.
Metode ini mengembalikan objek callback.
Metode-metode berikut adalah ekstensi dari API Pin inti. Metode-metode tersebut dikelompokkan berdasarkan ketersediaan port.
Metode yang tersedia di semua port OpenMV¶
mimxrt + alif saja¶
STM32 saja¶
Konstanta¶
Konstanta di bawah ini digunakan untuk mengonfigurasi objek
Pinmelalui konstruktor,init()danirq(). Konstanta dikelompokkan berdasarkan ketersediaan port.Konstanta yang tersedia di semua port OpenMV¶
STM32 saja¶
- ALT: int¶
Mode pin: fungsi alternatif (push-pull). Gunakan dengan
alt=untuk memilih fungsi periferal mana yang dihubungkan ke pin. Alias dariAF_PP.
- ANALOG: int¶
Mode pin: input analog -- buffer input/output digital diputuskan sehingga pin dapat dikendalikan oleh saluran
ADC.
- AF_OD: int¶
Mode open-drain fungsi alternatif (nilai sama seperti
ALT_OPEN_DRAIN).
- OUT_OD: int¶
Mode output open-drain (nilai sama seperti
OPEN_DRAIN).
mimxrt saja¶
- PULL_HOLD: int¶
Aktifkan fungsi bus-keeper / hold pad -- pin mengunci level logika saat ini daripada mengambang.