ESP: GPIO
Z MiS
				
				
				(Rozdíly mezi verzemi)
				
																
				
				
								
				|  (→Čísla pinů (pinout):  Oprava tabulky.) |  (Doplněn digitální a analogový vstup, upřesněno PWM.) | ||
| (Nejsou zobrazeny 3 mezilehlé verze od 1 uživatele.) | |||
| Řádka 2: | Řádka 2: | ||
| == Porty GPIO == | == Porty GPIO == | ||
| − | * Piny sběrnice GPIO slouží pro digitální vstup a výstup a pro  | + | * Piny sběrnice GPIO slouží pro digitální vstup a výstup a umožňují využít pulzně-šířkovou modulaci (PWM) pro simulaci analogového výstupu. | 
| − | * Pro analogový vstup je  | + | * Pro analogový vstup je vyhrazen speciálně port <code>A0</code> devboardu NodeMCU. | 
| * Pokud chceme pin použít, musíme: | * Pokud chceme pin použít, musíme: | ||
| *# Nastavit mód pinu | *# Nastavit mód pinu | ||
| Řádka 13: | Řádka 13: | ||
|   pinMode(''číslo_pinu'', ''mód'') |   pinMode(''číslo_pinu'', ''mód'') | ||
| * Módy: | * Módy: | ||
| − | ** OUTPUT | + | ** <code>OUTPUT</code> | 
| − | ** INPUT | + | ** <code>INPUT</code> | 
| − | ** INPUT_PULLUP | + | ** <code>INPUT_PULLUP</code> | 
| Řádka 23: | Řádka 23: | ||
|   digitalWrite(''číslo_pinu'', ''hodnota'') |   digitalWrite(''číslo_pinu'', ''hodnota'') | ||
| * Hodnoty: | * Hodnoty: | ||
| − | ** LOW | + | ** <code>LOW</code> | 
| − | ** HIGH | + | ** <code>HIGH</code> | 
| − | == Analogový  | + | == Digitální vstup == | 
| + | * Můžeme také přečíst hodnotu napětí na daném vstupu. | ||
| + | * Počítač rozhodne, zda je hodnota blíže 0 V nebo 3,3 V vzhledem k zemi (pin <code>GND</code>) a vrátí správnou výstupní hodnotu. | ||
| + | * Pokud vstup není připojen, je hodnota napětí nedefinovaná a může se náhodně měnit. Tomu předejdeme například zapnutím režimu <code>INPUT_PULLUP</code>. Pak je nepřipojený vstup vyhodnocen jako hodnota <code>HIGH</code>. | ||
| + |  int ''vysledek'' = digitalRead(''číslo_pinu''); | ||
| + | * Výsledkem volání funkce jsou hodnoty: | ||
| + | ** <code>LOW</code> | ||
| + | ** <code>HIGH</code> | ||
| + | |||
| + | |||
| + | == Analogový vstup == | ||
| + | * Pro analogový vstup je vyhrazen pin <code>A0</code>. | ||
| + | * Funkce vrátí hodnotu 0..1023 podle toho, jak je hodnota napětí na pinu <code>A0</code> blízko hodnota 0 V (výsledek 0) nebo 3,3 V (výsledek 1023). | ||
| + | * Všechna napětí měříme vzhledem k zemi (pin <code>GND</code>). | ||
| + | * Pokud vstup není připojen, je hodnota napětí nedefinovaná a může se náhodně měnit. | ||
| + |  int ''vysledek'' = analogRead(''číslo_pinu''); | ||
| + | * Výsledkem volání funkce jsou hodnoty: <code>0</code>..<code>1023</code> | ||
| + | ** <code>0</code>... 0 V | ||
| + | ** <code>1023</code>... 3,3 V | ||
| + | |||
| + | |||
| + | == Pulzně-šířková modulace — „analogový výstup“ == | ||
| * Analogový výstup nastavuje libovolnou hodnotu v rozmezí 0 až 1. | * Analogový výstup nastavuje libovolnou hodnotu v rozmezí 0 až 1. | ||
| − | * Tyto hodnoty jsou reprezentovány napětím 0 V nebo 3,3 V vzhledem k zemi (pin <code>GND</code>)  | + | * Tyto hodnoty jsou reprezentovány napětím 0 V nebo 3,3 V vzhledem k zemi (pin <code>GND</code>). | 
| + | * Zde se ale nejedná o skutečné hodnoty, výstup se pouze velmi rychle přepíná mezi hodnotami 0 a 1 ve správném poměru tak, aby výsledný efekt pro pomalejší součástky (třeba diodu) byl obdobný zvolené hodnotě napětí. | ||
| + | * Tato technologie se označuje jako „pulzně-šířková modulace“ („Pulse-width Modulation“ — PWM). | ||
|   analogWrite(''číslo_pinu'', ''hodnota'') |   analogWrite(''číslo_pinu'', ''hodnota'') | ||
| − | * Hodnota: <code>0</code> | + | * Hodnota:  <code>0</code>..<code>1023</code> | 
| + | ** <code>0</code>... efekt obdobný napětí 0 V, výstup trvale <code>LOW</code> | ||
| + | ** <code>511</code>... efekt obdobný napětí 1,65 V, výstup 50 % času <code>LOW</code> a 50 % času <code>HIGH</code> | ||
| + | ** <code>1023</code>... efekt obdobný napětí 3,3 V, výstup trvale <code>HIGH</code> | ||
| == Čísla pinů (pinout) == | == Čísla pinů (pinout) == | ||
| − | |||
| * Na devboardu NodeMCU jsou výstupy označeny kódy <code>D0</code>...<code>D12</code> a dalším. | * Na devboardu NodeMCU jsou výstupy označeny kódy <code>D0</code>...<code>D12</code> a dalším. | ||
| − | *  | + | * Číslo pinu v kódu je třeba převést na odpovídající číslo portu GPIO a najít odpovídající pin devboardu. | 
| + | |||
| + | <div class="Poznamka">Knihovny Arduino IDE mají předdefinované konstanty <code>D1</code>..<code>D12</code>, které můžeme s výhodou použít, abychom nemuseli čísla převádět.</div> | ||
| + | |||
| + | * Pokud je třeba, přiřazení pinů najdete například na odkazu: [https://iotbytes.wordpress.com/nodemcu-pinout/ IoTBytes.Wordpress.com → NodeMCU-pinout]. | ||
| * Vybrané hodnoty uvádíme dále: | * Vybrané hodnoty uvádíme dále: | ||
| {| class="wikitable" | {| class="wikitable" | ||
| |- | |- | ||
| − | ! Číslo pinu  | + | ! Číslo pinu v kódu !! ESP GPIO !! Označení na devboardu<br /> NodeMCU 1.0 !! Funkce | 
| |- | |- | ||
| − | | GPIO 16 ||  | + | | 3 || GPIO 16 ||  D0 || Na některých zařízeních ovládá vestavěnou diodu.<br />Neměl by být používán pro vstup a připojování zařízení. Používá se při nahrávání firmware. ?Nelze zde použít PWM? | 
| |- | |- | ||
| − | |  | + | | 5 || GPIO 5 || D1 ||   | 
| |- | |- | ||
| − | |  | + | | 2 || GPIO 2 || D4 || Na některých zařízeních ovládá vestavěnou diodu. | 
| |- | |- | ||
| |} | |} | ||
Aktuální verze z 22. 5. 2018, 10:22
| Obsah | 
Porty GPIO
- Piny sběrnice GPIO slouží pro digitální vstup a výstup a umožňují využít pulzně-šířkovou modulaci (PWM) pro simulaci analogového výstupu.
-  Pro analogový vstup je vyhrazen speciálně port A0devboardu NodeMCU.
-  Pokud chceme pin použít, musíme:
- Nastavit mód pinu
- Přečíst/nastavit hodnotu
 
Nastavení módu
- Nastavení módu pro pin:
pinMode(číslo_pinu, mód)
-  Módy:
-  OUTPUT
-  INPUT
-  INPUT_PULLUP
 
-  
Digitální výstup
- Digitální výstup nastavuje pouze hodnoty 0 nebo 1.
-  Tyto hodnoty jsou reprezentovány napětím 0 V nebo 3,3 V vzhledem k zemi (pin GND).
digitalWrite(číslo_pinu, hodnota)
-  Hodnoty:
-  LOW
-  HIGH
 
-  
Digitální vstup
- Můžeme také přečíst hodnotu napětí na daném vstupu.
-  Počítač rozhodne, zda je hodnota blíže 0 V nebo 3,3 V vzhledem k zemi (pin GND) a vrátí správnou výstupní hodnotu.
-  Pokud vstup není připojen, je hodnota napětí nedefinovaná a může se náhodně měnit. Tomu předejdeme například zapnutím režimu INPUT_PULLUP. Pak je nepřipojený vstup vyhodnocen jako hodnotaHIGH.
int vysledek = digitalRead(číslo_pinu);
-  Výsledkem volání funkce jsou hodnoty:
-  LOW
-  HIGH
 
-  
Analogový vstup
-  Pro analogový vstup je vyhrazen pin A0.
-  Funkce vrátí hodnotu 0..1023 podle toho, jak je hodnota napětí na pinu A0blízko hodnota 0 V (výsledek 0) nebo 3,3 V (výsledek 1023).
-  Všechna napětí měříme vzhledem k zemi (pin GND).
- Pokud vstup není připojen, je hodnota napětí nedefinovaná a může se náhodně měnit.
int vysledek = analogRead(číslo_pinu);
-  Výsledkem volání funkce jsou hodnoty: 0..1023-  0... 0 V
-  1023... 3,3 V
 
-  
Pulzně-šířková modulace — „analogový výstup“
- Analogový výstup nastavuje libovolnou hodnotu v rozmezí 0 až 1.
-  Tyto hodnoty jsou reprezentovány napětím 0 V nebo 3,3 V vzhledem k zemi (pin GND).
- Zde se ale nejedná o skutečné hodnoty, výstup se pouze velmi rychle přepíná mezi hodnotami 0 a 1 ve správném poměru tak, aby výsledný efekt pro pomalejší součástky (třeba diodu) byl obdobný zvolené hodnotě napětí.
- Tato technologie se označuje jako „pulzně-šířková modulace“ („Pulse-width Modulation“ — PWM).
analogWrite(číslo_pinu, hodnota)
-  Hodnota:  0..1023-  0... efekt obdobný napětí 0 V, výstup trvaleLOW
-  511... efekt obdobný napětí 1,65 V, výstup 50 % časuLOWa 50 % časuHIGH
-  1023... efekt obdobný napětí 3,3 V, výstup trvaleHIGH
 
-  
Čísla pinů (pinout)
-  Na devboardu NodeMCU jsou výstupy označeny kódy D0...D12a dalším.
- Číslo pinu v kódu je třeba převést na odpovídající číslo portu GPIO a najít odpovídající pin devboardu.
Knihovny Arduino IDE mají předdefinované konstanty 
D1..D12, které můžeme s výhodou použít, abychom nemuseli čísla převádět.- Pokud je třeba, přiřazení pinů najdete například na odkazu: IoTBytes.Wordpress.com → NodeMCU-pinout.
- Vybrané hodnoty uvádíme dále:
| Číslo pinu v kódu | ESP GPIO | Označení na devboardu NodeMCU 1.0 | Funkce | 
|---|---|---|---|
| 3 | GPIO 16 | D0 | Na některých zařízeních ovládá vestavěnou diodu. Neměl by být používán pro vstup a připojování zařízení. Používá se při nahrávání firmware. ?Nelze zde použít PWM? | 
| 5 | GPIO 5 | D1 | |
| 2 | GPIO 2 | D4 | Na některých zařízeních ovládá vestavěnou diodu. | 
Příklady
- Analogové zhasínání diody
int pin = 5;
void stmivej() {
    for (int i = 1023; i > 0; i -= 255) {
        analogWrite(pin, i);
        delay(500);
    }
}
void setup() {
    pinmode(5, OUTPUT);
}
void loop() {
    stmivej();
}
Zdroje
- Arduino.ESP8266.com → Reference
- Alokace pinů na NodeMCU: ESP8266.com > Wiki > Doku
