Vstupně výstupní porty mikrokontrolérů a PLC Flashcards
Režimy pinů
pinMode() dvě konstanty - OUTPUT a INPUT nebo INPUT_PULLUP
OUTPUT
Při stavu HIGH výstup poskytne max I=40 mA Při stavu LOW může stejně velký proud přijmout
INPUT
ke čtení hodnot z digitálních senzorů (nejjednodušší jsou tlačítka), ale i ke komunikaci. Při použití s tlačítkem si všimněme, že je tento pin stále připojen ke GND přes 10k ohm rezistor. Při nezmáčknutém tlačítku je tedy výsledek funkce digitalRead() hodnota LOW. Po zmáčknutí tlačítka dojde k připojení k +5 V a změny hodnoty funkce na HIGH.
INPUT_PULLUP
podobně, jako INPUT Rozdíl je v tom, že dojde k připojení interního rezistoru. Ten je uvnitř čipu zapojen mezi digitálním vstupem a +5V. Výchozí hodnota funkce digitalRead() je tedy HIGH. Když chceme hodnotu změnit, musíme vstup připojit na GND. Při použití příkladu s tlačítkem má tedy funkce hodnotu HIGH, když je tlačítko uvolněno a LOW, když je zmáčknuto
Jsou pouze dvě možné hodnoty, jaké může mít proud při čtení a zápisu pomocí funkcí digitalRead() a digitalWrite(). Jsou to hodnoty LOW a HIGH.
HIGH
při čtení pomocí funkce digitalRead() je vyhodnocena hodnota napětí jako HIGH, pokud je větší než 3V. Když použijeme funkci digitalWrite(pin, HIGH), na výstupu bude právě 5V.
LOW
Při čtení je stav napětí vyhodnocen jako LOW, pokud je jeho velikost menší než 2V. Při zápisu je hodnota 0V.
Analogový vstup a výstup
Co když ale potřebujeme pracovat i s analogovými hodnotami?
Na to má Arduino ve výbavě užitečné funkce. Ke čtení a zápisu se zde používají funkce analogRead() a analogWrite(). Ty jsou však limitovány pro použití pouze na určených pinech
analogWrite(číslo_pinu, hodnota)
rozsah hodnoty 0-255 sloužící k nastavení “analogové” hodnoty na pinu. Můžeme ji použít pouze na pinech označených PWM (u Arduina UNO jsou to piny: 3, 5, 6, 9, 10, 11) generuje PWM signál, což je jakási digitální “náhražka” analogového signálu. rychle střídá 0 a 5V
analogWrite(pin, 127) // 50% 5 V a 50% 0V
analogRead()
slouží ke čtení analogové hodnoty na vstupech (A0-A5) Většina desek Arduina má rozlišení 10 bitů, což odpovídá hodnotám od 0 do 1023
proměnná = analogRead(pin)
Z funkce analogRead() vychází hodnoty 0 až 1023, kdežto analogWrite() čeká na rozsah hodnot 0 až 255. Musíme tedy zajistit převod hodnot. To je v tomto případě jednoduché, protože 256 (28) se vejde do 1024 (210) čtyřikrát. Nejjednodušším způsobem je tedy vydělení hodnot z analogRead() čtyřmi.