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:

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.