3.7. GPIO výstup

machine.LED skrývá zapojení vestavěných indikátorů kamery. Ovládání jakéhokoli externího kusu hardwaru začíná třídou machine.Pin ve výstupním režimu – surovou periferií pod každou další GPIO interakcí.

3.7.1. Buzení pinu

Vytvořte pin s Pin.OUT, aby se stal výstupem, a poté nastavte jeho hodnotu:

from machine import Pin

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

Tři rovnocenné způsoby, jak nastavit stav, všechny na machine.Pin:

Volání value() bez argumentů přečte zpět aktuální stav pinu – což funguje pro vstupy i výstupy.

3.7.2. Buzení externí LED

Červená LED při 10 mA z 3,3 V potřebuje v sérii přibližně 130 Ω (stránka o elektronice odvozuje výpočet). Zapojte pin P0 přes tento rezistor na anodu LED a katodu LED na zem. Blikač:

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 se zapíná a vypíná jednou za sekundu. Proud LED (a tedy její jas) je dán rezistorem; poměr zapnuto / vypnuto řídí pouze to, jak často se rozsvítí, nikoli to, jak jasně se jeví, když svítí.

Tip

Konstruktor přijímá počáteční hodnotu jako pojmenovaný argument: Pin("P0", Pin.OUT, value=0) konfiguruje pin jako výstup, který startuje v nízké úrovni. Bez něj pin krátce nabude libovolného výchozího stavu, který měl před prvním voláním value().

3.7.3. Režim s otevřeným kolektorem

Výchozí režim Pin.OUT je push-pull: pin aktivně budí jak do vysoké úrovně (k napájení), tak do nízké (k zemi). Někdy je to nesprávné. Sáhněte po Pin.OPEN_DRAIN, když má pin buď stahovat vedení do nízké úrovně, nebo jej uvolnit (nechat plovoucí):

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

Hlavním využitím je sdílení vodiče. Více výstupů s otevřeným kolektorem může sdílet jediné vedení, protože žádný z nich jej aktivně nebudí do vysoké úrovně. Kterýkoli z nich může vedení stáhnout do nízké úrovně; pokud jej všechny uvolní, externí pull-up vytáhne vedení do vysoké úrovně. To je konvence zapojení za sdílenými komunikačními sběrnicemi.

Varování

Otevřený kolektor není obecné řešení pro buzení zařízení s vyšším napětím. Připojení pinu s otevřeným kolektorem k pull-upu na 5 V je bezpečné na pinu tolerujícím 5 V, ale na netolerujícím pinu jej poškodí přes jeho integrované ochranné diody, jakmile pin uvolní vedení a to vyplave nahoru na 5 V. Signalizace mezi různými napětími vyžaduje řádný úrovňový převodník; viz Posun napěťových úrovní pro daný obvod.