3.4. Pin dan periferal¶
Pin adalah periferal paling sederhana pada MCU: sebuah kabel tunggal yang menghubungkan chip ke dunia luar. Setiap interaksi dengan perangkat keras nyata -- menggerakkan LED, membaca sakelar, mengukur tegangan, mengirim byte melalui jalur serial -- pada akhirnya melewati satu atau lebih pin.
3.4.1. Mode pin¶
Pin dikonfigurasi ke salah satu dari beberapa mode sebelum melakukan sesuatu yang berguna:
Pin.IN-- input. Pin mengamati tegangan yang diterapkan dari luar dan melaporkannya sebagai0(rendah) atau1(tinggi).Pin.OUT-- output. Pin menggerakkan dirinya sendiri ke tegangan suplai (1) atau ke ground (0), sehingga komponen eksternal melihat tegangan tersebut.Pin.OPEN_DRAIN-- output yang hanya dapat menarik jalur ke rendah. Untuk naik ke tinggi, pin dilepas (mengambang) dan resistor pull-up eksternal mengangkat jalur. Digunakan untuk bus bersama di mana beberapa perangkat dapat menggerakkan jalur yang sama.
Input dapat secara opsional mengaktifkan resistor pull internal yang menjamin level yang terdefinisi ketika tidak ada yang menggerakkan pin dari luar:
Pin.PULL_UP-- pull lemah ke rel suplai.Pin.PULL_DOWN-- pull lemah ke ground.
Konstruktor menerima id, mode, dan pull sebagai argumen posisional:
from machine import Pin
led = Pin("P0", Pin.OUT)
button = Pin("P1", Pin.IN, Pin.PULL_UP)
3.4.2. Fungsi alternatif¶
Sebagian besar pin memiliki fungsi alternatif selain peran GPIO-nya. Satu pad fisik pada chip dapat berupa:
Input atau output digital (
machine.Pin).Input ADC yang mengukur tegangan (
machine.ADC).Output PWM yang memancarkan gelombang kotak (
machine.PWM).Jalur TX atau RX dari UART (
machine.UART).
Periferal lain (bus serial lebih lanjut, timer, dan sebagainya) juga mengklaim pin tertentu; desainer chip menyambungkan setiap blok perangkat keras ke sekumpulan pad yang tetap. ADC hanya menyampel pin yang diarahkan ke multipleksernya; UART mengirimkan pada satu pin yang terhubung ke sinyal TX-nya.
Catatan
Kamera OpenMV memberi label pin konektor eksternal P0 hingga P9 (sedikit bervariasi per papan). Pin mana yang membawa fungsi alternatif mana bersifat spesifik per papan; lihat referensi cepat OpenMV Cam untuk tabelnya.
3.4.3. Variasi papan¶
Beberapa detail bervariasi per papan dan harus selalu diperiksa terhadap referensi cepat daripada diasumsikan dari papan lain:
Toleransi tegangan. Beberapa kamera memiliki pin I/O yang toleran terhadap 5 V (sinyal 5 V dapat diterapkan langsung tanpa kerusakan); yang lain menjalankan I/O pada 3,3 V atau 1,8 V dan memerlukan level shifter untuk sinyal apa pun di atas itu. Menghubungkan sumber 5 V ke pin yang tidak toleran dapat merusak chip.
Referensi ADC. Tegangan yang diperlakukan ADC sebagai skala penuh bergantung pada suplai I/O papan.
read_u16()selalu mengembalikan0..65535, tetapi tegangan yang diwakili65535adalah apa pun referensi papan tersebut.Kekuatan drive. Pin GPIO dapat menyumber atau menyedot arus terbatas -- biasanya puluhan miliampere. Cukup untuk LED kecil melalui resistor; tidak cukup untuk motor, bel, atau beban induktif apa pun. Gunakan driver eksternal (transistor, MOSFET, H-bridge) untuk beban yang lebih berat.
Referensi cepat OpenMV Cam memberikan angka-angka tepat per papan.