3.7. Вихід GPIO

machine.LED приховує схему підключення вбудованих індикаторів камери. Керування будь-яким зовнішнім пристроєм починається з machine.Pin у режимі виходу — базового периферійного пристрою, що лежить в основі будь-якої іншої взаємодії через GPIO.

3.7.1. Керування виводом

Створіть вивід з параметром Pin.OUT, щоб зробити його виходом, а потім задайте його стан:

from machine import Pin

led = Pin("P0", Pin.OUT)
led.on()           # drive high (about 3.3 V)
led.off()          # drive low (about 0 V)

Три рівнозначних способи задати стан, всі через machine.Pin:

Виклик value() без аргументів зчитує поточний стан виводу — це працює як для входів, так і для виходів.

3.7.2. Керування зовнішнім світлодіодом

Червоний світлодіод при струмі 10 мА від 3,3 В потребує послідовного резистора близько 130 Ом (розрахунок наведено на сторінці з електронікою). Підключіть вивід P0 через цей резистор до анода світлодіода, а катод світлодіода — до землі. Мигалка:

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)

Світлодіод вмикається та вимикається раз на секунду. Струм через світлодіод (і відповідно його яскравість) задається резистором; скважність увімкнення/вимкнення визначає лише частоту спалахів, але не яскравість під час вмикання.

Порада

Конструктор приймає початкове значення як аргумент за ключовим словом: Pin("P0", Pin.OUT, value=0) налаштовує вивід як вихід, що починає роботу у стані «низький». Без цього аргументу вивід короткочасно перебуває у тому стані, що був до першого виклику value().

3.7.3. Режим відкритого колектора

Стандартний режим Pin.OUT — двотактний (push-pull): вивід активно встановлюється як у стан «висока напруга» (до шини живлення), так і «низька напруга» (до землі). Іноді це неприпустимо. Використовуйте Pin.OPEN_DRAIN, коли вивід повинен або тягнути лінію до низького рівня, або відпускати її (переходити у плаваючий стан):

pin = Pin("P0", Pin.OPEN_DRAIN)
pin.off()       # actively drive low
pin.on()        # release; an external pull-up brings the line high

Основне застосування — спільне використання лінії. Кілька виходів з відкритим колектором можуть підключатися до однієї лінії, оскільки жоден з них активно не піднімає її у стан «висока напруга». Будь-який з них може потягнути лінію до низького рівня; якщо всі їх відпустять, зовнішній підтягувальний резистор підніме лінію до рівня «висока напруга». Це схемотехнічна угода, що лежить в основі спільних шин передачі даних.

Попередження

Режим відкритого колектора не є універсальним рішенням для керування пристроями з вищою напругою. Підключення виводу з відкритим колектором до підтягувального резистора на 5 В безпечне для виводу, що витримує 5 В, але пошкоджує нетолерантний вивід через внутрішні захисні діоди, щойно вивід відпускається і лінія «спливає» до 5 В. Для узгодження рівнів між різними напругами потрібен відповідний перетворювач рівнів; дивіться Узгодження рівнів для опису схеми.