ESP: GPIO
Z MiS
				
				
				(Rozdíly mezi verzemi)
				
																
				
				
								
				 (→Čísla pinů (pinout):  Upřesněno ovládání vestavěné diody)  | 
		 (Doplněn digitální a analogový vstup, upřesněno PWM.)  | 
		||
| (Nejsou zobrazeny 2 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  | 
|-  | |-  | ||
| − | |   | + | | 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