3.7. Output GPIO¶
machine.LED mengabstraksi kabel LED indikator bawaan kamera. Mengendalikan perangkat keras eksternal apa pun dimulai dengan machine.Pin dalam mode output -- periferal mentah di balik setiap interaksi GPIO lainnya.
3.7.1. Mengendalikan pin¶
Buat pin dengan Pin.OUT untuk menjadikannya output, lalu tetapkan nilainya:
from machine import Pin
led = Pin("P0", Pin.OUT)
led.on() # drive high (about 3.3 V)
led.off() # drive low (about 0 V)
Tiga cara setara untuk menetapkan status, semuanya pada machine.Pin:
pin.value(1)/pin.value(0)-- bentuk eksplisit.
Memanggil value() tanpa argumen membaca kembali status pin saat ini -- yang berfungsi untuk input maupun output.
3.7.2. Mengendalikan LED eksternal¶
LED merah pada 10 mA dari 3,3 V membutuhkan sekitar 130 Ω secara seri (halaman elektronika membahas perhitungannya). Hubungkan pin P0 melalui resistor tersebut ke anoda LED, katoda LED ke ground. Sebuah blinker:
import time
from machine import Pin
led = Pin("P0", Pin.OUT)
while True:
led.on()
time.sleep_ms(500)
led.off()
time.sleep_ms(500)
LED berkedip menyala dan mati sekali per detik. Arus melalui LED (dan karenanya kecerahannya) ditetapkan oleh resistor; siklus kerja nyala/mati hanya mengontrol seberapa sering ia menyala, bukan seberapa terang ia saat menyala.
Tip
Konstruktor menerima nilai awal sebagai argumen kata kunci: Pin("P0", Pin.OUT, value=0) mengonfigurasi pin sebagai output yang dimulai rendah. Tanpanya, pin sesaat mengambil status default apa pun sebelum pemanggilan value() pertama.
3.7.3. Mode open-drain¶
Mode Pin.OUT default adalah push-pull: pin secara aktif mengendalikan baik tinggi (ke catu daya) maupun rendah (ke ground). Kadang-kadang itu tidak tepat. Gunakan Pin.OPEN_DRAIN ketika pin seharusnya menarik jalur ke rendah atau melepaskannya (mengambang):
pin = Pin("P0", Pin.OPEN_DRAIN)
pin.off() # actively drive low
pin.on() # release; an external pull-up brings the line high
Penggunaan utamanya adalah berbagi kabel. Beberapa output open-drain dapat berbagi satu jalur karena tidak ada satupun yang secara aktif mengendalikan jalur tersebut ke tinggi. Salah satu dari mereka dapat menarik jalur ke rendah; jika semuanya melepas, pull-up eksternal membawa jalur ke tinggi. Ini adalah konvensi kabel di balik bus komunikasi bersama.
Peringatan
Open-drain bukan solusi umum untuk mengendalikan perangkat bertegangan lebih tinggi. Menghubungkan pin open-drain ke pull-up pada 5 V aman pada pin yang toleran terhadap 5 V tetapi merusak pin yang tidak toleran melalui dioda pelindung on-chip begitu pin melepas dan jalur mengambang hingga 5 V. Pensinyalan lintas tegangan memerlukan level shifter yang tepat; lihat Penggeseran level untuk rangkaiannya.