Ahoj! Dnes se podíváme na to, jak použít ESP32 a programovací jazyk MicroPython k ovládání LED diody pomocí digitálních vstupů. ESP32 je chytrá deska, která umí komunikovat s různými věcmi, jako jsou světla a senzory.
Princip práce s digitálními piny
Digitální piny mohou být nastaveny buď jako vstup (čtení signálů) nebo výstup (odesílání signálů). V tomto tutoriálu využijeme obě funkce.
Pin jako vstup v MicroPythonu
- Nastavení Pinu jako vstup: Pin(pin_number, Pin.IN)
Pull-Up a Pull-Down Rezistory
Když používáme pin jako vstup, často chceme zajistit, aby měl vždy definovaný stav (vysoký nebo nízký). K tomu slouží interní pull-up a pull-down rezistory, když nastavujeme PIN jako vstup můžeme si zvolit jestli chceme aktivovat pull-up nebo pull-down rezistor na daném pinu. Díky tomu můžeme PIN nastavit do požadované logické úrovně a její změnu můžeme poté kontrolovat programem.
Pull-Up Rezistor: Udržuje pin ve vysokém stavu (logická 1) při nepřipojeném signálu. Používá se, když chceme, aby byl výchozí stav vstupu vysoký a změnil se na nízký při aktivaci (například stisknutí tlačítka).
Pull-Down Rezistor: Udržuje pin v nízkém stavu (logická 0) při nepřipojeném signálu. Používá se, když chceme, aby byl výchozí stav vstupu nízký a změnil se na vysoký při aktivaci.
Externí Pull-Up a Pull-Down odpory: Pokud procesor nemá interní Pull-Up a Pull-Down odpory vždy máte možnost si je do zapojení doplnit. Příklady takového zapojení jsou zde:
Příklad
Představme si, že máme tlačítko připojené k pinu 25. Chceme, aby byl pin ve vysokém stavu, když není tlačítko stisknuto a přešel do nízkého stavu při stisku tlačítka. Stejně tak nastavíme i tlačítko připojené k pinu 26. Jedno bude sloužit pro zapnutí diody LED a druhé pro její vypnutí.
Příklad: Ovládání LED Dvěma Tlačítky
V tomto příkladu je pin 25 nastaven jako vstup s aktivním pull-up rezistorem. To znamená, že výchozí stav pinu je vysoký (1) a když je tlačítko stisknuto a spojí pin se zemí (GND), stav pinu se změní na nízký (0). Stejné nastavení bude mít i pin 26.
Příklad v jazyce Blockly
V tomto příkladu jsme použili několik nových bloků. První nový blok je nastavit digitální vstup který nastaví pin do příslušného stavu, také umožňuje zvolit, jestli chcete použít Pull-up nebo Pull-down odpor na daném Pinu. Další nový blok je podmínka když. Tu najdeme v sekci Logika. Pomocí podmínky když můžeme porovnávat stav digitálního pinu a pokud je podmínka splněna, tak se vykoná kód uvnitř podmínky.
Použití Pull-Up a Pull-Down v MicroPythonu
Nastavení Pull-Up: Pin(pin_number, Pin.IN, Pin.PULL_UP)
Nastavení Pull-Down: Pin(pin_number, Pin.IN, Pin.PULL_DOWN)
from machine import Pin
tlacitko = Pin(0, Pin.IN, Pin.PULL_UP)
A tady už máme celý funkční příklad
from machine import Pin
import time
# Nastavení pinů
led = Pin(22, Pin.OUT)
button_on = Pin(25, Pin.IN, Pin.PULL_UP)
button_off = Pin(26, Pin.IN, Pin.PULL_UP)
# Hlavní smyčka
while True:
if button_on.value() == 0: # Tlačítko pro zapnutí stisknuto
led.value(1)
if button_off.value() == 0: # Tlačítko pro vypnutí stisknuto
led.value(0)
time.sleep(0.1) # Krátká pauza během které procesor může obsloužit WiFi a další periferie