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:
pin.value(1)/pin.value(0)— явна форма.
Виклик 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 В. Для узгодження рівнів між різними напругами потрібен відповідний перетворювач рівнів; дивіться Узгодження рівнів для опису схеми.