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:
pin.value(1)/pin.value(0)– explicitní tvar.
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.