(pinMode) Arduino INPUT_PULLUP

V tomto návode vám ukážem rôzne príklady pomocou dosky Arduino a jednoduchého tlačidla, aby som vysvetlil, čo INPUT_PULLUP robí a ako ho používať vo vašich programoch Arduino.

S Arduino môžete použiť digitálne kolíky buď na čítanie (binárnych) údajov zo senzora,

Napríklad:

alebo na zápis (binárnych) údajov do akčného člena.

Napríklad :

ako-nastaviť-piny-arduino
  • VÝSTUP: slúži na zapisovanie údajov do akčného člena, napríklad aj LED.
  • VSTUP: v tomto prípade budete čítať údaje zo senzora. Hodnota, ktorú získate, bude VYSOKÁ alebo NÍZKA (binárna).

Ale je tu aj tretia možnosť:

INPUT_PULLUP. Táto možnosť je rovnaká ako INPUT (čítate dáta zo senzora), ale okrem toho je povolený interný pull-up rezistor – medzi 20k a 50k Ohm – aby sa signál predvolene udržal VYSOKÝ.

Problémom je : “plávajúca hodnota Pinu

Arduino-uno-tlačidlo

Jednu nohu tlačidla pripojíte k zemi (GND) a druhú – na druhej strane tlačidla – k digitálnemu kolíku. Napíšme jednoduchý kód na vytlačenie hodnoty tlačidla na sériovom monitore.

2 dôležité veci:

  • pinMode(BUTTON_PIN, INPUT); nastavíme pin 4 na INPUT, aby sme mohli čítať údaje z tlačidla.
  • digitalRead(BUTTON_PIN) to nám dá aktuálny stav tlačidla, buď LOW alebo HIGH.

Ak spustíme tento program a otvoríme sériový plotter (Nástroje > Sériový plotter, alebo CTRL+SHIFT+L), bez stlačenia tlačidla získame toto.

sériový-plotter-arduino

Keď stlačíme tlačidlo, hodnota je vždy NÍZKA, ale keď ho uvoľníme, je úplne náhodná:

niekedy VYSOKÁ, inokedy NÍZKA a veľmi sa pohybuje. Vidíme to, pretože napätie pre tlačidlo sa pohybuje medzi 0 a 5V. Ak je napätie pod určitou hodnotou V, Arduino bude čítať LOW. A ak je nad určitým množstvom V, Arduino bude čítať HIGH.

Keďže pre tlačidlo neexistuje žiadna interná alebo externá referencia napätia, hodnota bude veľmi náhodne oscilovať. A ako môžete predvídať, nemôžeme sa spoliehať na tieto údaje pri prijímaní rozhodnutí v rámci nášho programu Arduino. Čo musíme urobiť, je „vynútiť“ predvolený stav (tlačidlo nie je stlačené), aby bol blízko HIGH alebo LOW.

Použime presne ten istý obvod, ale tentoraz s INPUT_PULLUP

Ak spustíte tento kód a otvoríte sériový plotr, uvidíte, že predvolená hodnota je 1 (HIGH). Keď stlačíte tlačidlo, stav priamo prejde na 0 (LOW) a vráti sa späť na HIGH, keď tlačidlo uvoľníte.

sériový-plotter-arduino

No teraz je to oveľa lepšie. Problém vyriešený!

Keď nastavíte režim na INPUT_PULLUP, interný odpor – vnútri dosky Arduino – sa nastaví medzi digitálny kolík 4 a VCC (5V).

Tento odpor – hodnota odhadovaná medzi 20 k a 50 kOhm – zabezpečí, že stav zostane VYSOKÝ. Keď stlačíte tlačidlo, stav sa zmení na NÍZKY.

Namiesto použitia vnútorného pull up odporu na vašej dosky Arduino sa môžete rozhodnúť vytvoriť obvod sami a pridať externý pull up odpor.

arduino-uno-tlačidlo

Tu som jednoducho pridal 10k Ohm odpor medzi jednu nohu tlačidla (rovnaká strana ako dátová strana – digitálny kolík 4) a VCC (5V).

Teraz s týmto okruhom už nemusíte povoliť interné pull up. Takže vo svojom programe použite

pinMode(BUTTON_PIN, INPUT); namiesto toho pinMode(BUTTON_PIN, INPUT_PULLUP);

Keď spustíte program, budete mať rovnaký výsledok: predvolený stav tlačidla je VYSOKÝ a keď ho stlačíte, jeho stav sa zmení na NÍZKY.

sériový-plotter-arduino

Toto je ďalšia možnosť, ktorú si môžete vybrať, ktorá je tiež veľmi populárna:

pridajte Pull down odpor. Predvolený stav tlačidla bude teda NÍZKY a keď ho stlačíte, zmení sa na VYSOKÝ. Na rozdiel od Pull up odporu ho nemôžete nastaviť len pomocou kódu, budete musieť použiť externý odpor.

Tu je okruh.

arduino-uno-tlačidlo

Okruh je podobný predchádzajúcemu:

  • 10k Ohmový odpor je medzi jednou nohou a zemou (GND).
  • Vodič pre digitálny kolík 4 je na rovnakej strane ako uzemnenie.
  • Druhá strana tlačidla je pripojená priamo k VCC (5V).

Pri spustení programu pomocou pinMode(BUTTON_PIN, INPUT); dostanete:

sériový-plotter-arduino

V tomto návode ste videli, ako správne používať pull up a pull down rezistory pre vaše Arduino senzory a kedy použiť možnosť INPUT_PULLUP pre funkciu pinMode. Aby sme to zhrnuli, máte 3 možnosti v závislosti od predvoleného stavu, ktorý chcete pre tlačidlo:

  • 1.Pridajte externý pull down odpor, takže predvolený stav je LOW.
  • 2.Pridajte externý pull up odpor, takže predvolený stav je VYSOKÝ.
  • 3.Použite interný pull-up odpor Arduino. Správanie bude rovnaké ako pri možnosti č.2

Neexistuje lepšia alebo horšia voľba, závisí to od dostupných hardvérových komponentov, ktoré máte, a od niektorých požiadaviek špecifických pre váš projekt. Je to tiež otázka preferencie:

chcete, aby bol predvolený stav (keď nie je stlačený) NÍZKY alebo VYSOKÝ? – s vedomím, že to možno jednoducho opraviť na strane softvéru.


Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Nemôžete kopírovať obsah tejto stránky