Schéma tlačítka taktu. Připojení tlačítka k Arduinu. Přepínání režimů pomocí tlačítka

Tlačítko je známé mechanické zařízení, které se může zavírat a otevírat elektrický obvod na žádost osoby. Existuje mnoho typů tlačítek, která fungují podle různých pravidel. Například tlačítko použité v tomto tutoriálu dokončí obvod pouze tak dlouho, dokud na něj budete držet prst. Otevřené tlačítko na druhé straně přeruší obvod při stisknutí.

Existují tlačítka se skupinou kontaktů, z nichž některá při stisknutí přeruší obvod, zatímco jiná se v tuto chvíli zavřou. Malé verze těchto tlačítek se často nazývají mikrospínače.

Taktovací tlačítka najdeme téměř v každém elektronické zařízení: v klávesnici počítače, v telefonu, v dálkovém ovladači televizoru atd.

Existují západková tlačítka, která fungují jako tlačítko na kuličkovém peru: jednou stisknuté - obvod se uzavře, podruhé - přeruší se. Níže uvedená fotografie je jen jednou z nich. Zamykací tlačítka jsou vhodná pro přepínání provozního režimu zařízení. Můžete například přepnout zdroj napájení: baterie nebo napájecí zdroj.

Nebo další možnost - velká tlačítka pro nouzové zastavení zařízení. Jsou vymalovány pestrými barvami, aby upoutaly pozornost lidí. V podstatě jsou to obyčejná dotyková tlačítka pro otevírání, případně tlačítka s aretací.

To jsou jen některé z možností. Kromě tlačítek existují ve světě elektřiny i další mechanismy, jako jsou páčkové spínače a spínače. Všechny jsou navrženy tak, aby mechanicky řídily tok proudu v obvodu.

Připojení tlačítka

Budeme tedy pracovat s nejjednodušším taktovým tlačítkem, ke kterému se pokusíme připojit Arduino Uno. Při práci s nepájivými prkénky se obvykle používá tlačítko s pájecími kolíky. Na fotografii na začátku lekce můžete vidět, že takové tlačítko má čtyři mírně ohnuté kolíky. Jsou zde tlačítka se dvěma přímými výstupy, hodí se i pro naši činnost.

Na elektrická schémata tlačítko vypadá takto:

Pokud se podíváte dovnitř čtyřtaktu, můžete vidět toto schéma:

Kolíky dotykového tlačítka jsou zpravidla umístěny na opačných stranách pouzdra ve dvojicích. To znamená, že můžeme použít buď pár kontaktů na jedné straně nebo pár na druhé straně.

A takto vypadá schéma dvoupinového tlačítka.

Je těžké se splést s tímto tlačítkem: dva kontakty, které se spojí po stisknutí tlačítka.

Na prkénku na krájení jsou oba typy dotykových tlačítek obvykle umístěny takto:

Nyní se pokusíme sestavit nejjednodušší obvod na nepájivém prkénku, který bude demonstrovat činnost tlačítka. Rozsvítíme LED.

Výsledný obvod plní jednoduchou funkci: stiskněte tlačítko - LED se rozsvítí, uvolněte - zhasne.

Připojení k Arduino Uno

Nyní, když je funkce dotykového tlačítka zcela jasná, sestavme obvod s tlačítkem a LED a připojte je k ovladači. Stanovme si jednoduchý úkol: nechte LED Arduino Uno třikrát zablikat, když jednou stisknete tlačítko Arduino Uno.

Schematický diagram


Vzhled rozložení


Na tomto schématu vidíme již známý obvod pro. Vidíme také tlačítko připojené na Arduino pin č. 3. Zde může docela rozumně vyvstat otázka: proč jsme také připojili tlačítko k zemi přes odpor 10 kOhm? Abychom se vypořádali s tímto problémem, představme si, že jsme tlačítko připojili pomocí „naivního“ obvodu bez dalších odporů.

Zde mezi pinem č. 3 a zemí je malý kondenzátor, který může akumulovat náboj. Mnoho mikrokontrolérů má tuto funkci.

Nyní si představte, že zavíráme tlačítko. Proud začíná běžet od +5V přímo ke kontaktu č. 3, přičemž se současně nabíjí kapacita. Arduino úspěšně zaregistruje stisknutí tlačítka. Ale poté, co sundáme prst z tlačítka hodin, na rozdíl od našich očekávání, mikrokontrolér nadále považuje tlačítko za stisknuté! Samozřejmě proto, že nabitý kondenzátor postupně uvolňuje nahromaděný náboj do nohy č. 3. Toto bude pokračovat, dokud nebude kapacita vybita pod logickou úroveň.

Připojení modulu tlačítka hodin ROC k Arduinu

Speciálně pro vaše projekty jsme v RobotClass vytvořili modul dvou taktových tlačítek. Modul má již potřebné odpory a dokonce dvě LED pro indikaci stisku tlačítka.


Pojďme zjistit, jak připojit tento modul k Arduino Uno.

Schematický diagram


Vzhled rozložení


Jak vidíte, bez ohledu na to, jaká tlačítka používáme, schéma zapojení se příliš nemění. Nezmění se ani program pro práci s nimi.

Program pro práci s tlačítkem na Arduinu

Konečně jsme přišli na nuance našeho schématu a jsme připraveni napsat program. V softwarovém tutoriálu jsme se dozvěděli o funkcích pro nastavení pinů pinMode a funkce digitálního výstupu digitalWrite. Tentokrát potřebujeme ještě jednu důležitou funkci, která poskytuje vstupní informace mikrokontroléru:

DigitalRead(číslo_kontaktu);

Tato funkce vrací booleovskou hodnotu, kterou Arduino přečetlo z daného pinu. To znamená, že pokud se na kontakt přivede +5V, funkce se vrátí pravda*. Pokud je kontakt spojen se zemí, dostaneme hodnotu lhát. V C++ jsou pravda a nepravda ekvivalentní číslům 1 a 0.

Aby kontakt, o který máme zájem, fungoval v režimu zadávání informací, musíme jej nastavit do určitého režimu:

PinMode(číslo_pinu, INPUT);

Nakonec dáme vše dohromady a napíšeme program.

Const int led = 2;
tlačítko const int = 3;
int val = 0;

void setup())(
pinMode(led, OUTPUT);
pinMode(tlačítko, INPUT);
}

void loop()
val = digitalRead(tlačítko);
if(hodnota == VYSOKÁ)(
// smyčka od 0 do 2, v krocích po 1
for(int i=0; i<3; i++){
digitalWrite(led, HIGH);
zpoždění(500);
digitalWrite(led, LOW);
zpoždění(500);
}
}
}

Nahrajeme program na Arduino Uno a zkontrolujeme fungování programu. Pokud je vše provedeno správně, mělo by to vypadat jako na obrázku:

Dobře, teď je po všem. Nyní můžeme naše zařízení ovládat pomocí tlačítek. Pokud jste již absolvovali lekci dne, pak vám budeme moci vyrobit hodiny s budíkem!

Program spouštěcího tlačítka

Dalším příkladem, který stojí za zmínku, je spouštěcí tlačítko. Funguje to takto: stiskněte jednou tlačítko - LED se rozsvítí, stiskněte podruhé - zhasne.

K implementaci tohoto chování tlačítka potřebujeme další proměnnou, často nazývanou „stavová proměnná“ nebo „příznak“.

Const int led = 2;
tlačítko const int = 3;
int val = 0;
stav bajtu = 0; // stavová proměnná
void setup())(
pinMode(led, OUTPUT);
pinMode(tlačítko, INPUT);
}
void loop()
// zapíše stav tlačítka do proměnné val
val = digitalRead(tlačítko);
// pokud je stav tlačítka pravdivý, proveďte akci
if(hodnota == VYSOKÁ)(
// změnit stav na opačný
stav = !stav;
if(stav == VYSOKÝ)(
// pokud je aktuální stav pravdivý, rozsvítí LED
digitalWrite(led, HIGH);
) jinak (
// pokud je aktuální stav nepravdivý, vypněte LED
digitalWrite(led, LOW);
}
zpoždění(300);
}
}

Nahrajeme program na Arduino a zkontrolujeme fungování obvodu. Rychle stiskněte tlačítko a LED se rozsvítí. Stiskněte znovu a zhasne. Pokud ale tlačítko stisknete a nepustíte, LED dioda začne blikat s periodou 600 ms! proč tomu tak je? Zkuste na to přijít.

Úkoly

Zkusme z praxe vyřešit několik jednoduchých problémů s tlačítkem a LED.

  • Obvod obsahuje dvě tlačítka a jednu LED. Nechte LED svítit, když stisknete první tlačítko, a zhasněte, když stisknete druhé tlačítko.
  • Klavír. Obvod obsahuje sedm tlačítek a jeden reproduktor. Když stisknete každé ze sedmi tlačítek, reproduktor by měl zahrát odpovídající tón. Bude potřeba studovat.
  • Hra "Kovbojové". Obvod obsahuje dvě tlačítka, jeden bzučák a dvě LED. Po spuštění programu by měl bzučák vydat krátký zvuk. Ihned poté musí každý hráč co nejrychleji stisknout své tlačítko. Hráč, který to udělá jako první, bude mít LED světlo. Budete si muset prostudovat lekci o přerušeních.

Připojení senzoru tlačítka k Arduinu vyžaduje určité znalosti a dovednosti. V tomto článku si povíme, co je taktovací tlačítko, co je odskok tlačítka, jak správně zapojit tlačítko s pull-up a pull-down rezistorem, jak můžete pomocí tlačítka ovládat LEDky a další zařízení.

Tlačítko (nebo tlačítkový spínač) je nejjednodušší a nejdostupnější ze všech typů senzorů. Kliknutím na něj odešlete signál do ovladače, který pak vede k některým akcím: rozsvítí se LED diody, zazní zvuky, spustí se motory. Ve svém životě se často setkáváme s různými vypínači a toto zařízení velmi dobře známe.

Dotyková tlačítka a spínací tlačítka

Jako obvykle začínáme sekci jednoduchými věcmi, které jsou zajímavé pouze pro začátečníky. Pokud znáte základy a chcete se dozvědět o různých možnostech připojení tlačítka k Arduinu, můžete tento odstavec přeskočit.

Co je to tlačítko? V podstatě se jedná o celkem jednoduché zařízení, které zavírá a otevírá elektrickou síť. Toto zavírání/otevírání můžete provádět v různých režimech, při fixaci nebo nefixaci vaší pozice. Podle toho lze všechna tlačítka rozdělit do dvou velkých skupin:

  • Spínací tlačítka s fixací. Po propuštění se vrátí do původního stavu. Kdy se v závislosti na výchozím stavu dělí na tlačítka normálně zavřená a normálně otevřená.
  • Okamžitá tlačítka (taktová tlačítka). Jsou upevněny a zůstávají v poloze, ve které byly ponechány.

Existuje mnoho možností pro různá tlačítka, jedná se skutečně o jeden z nejběžnějších typů elektronických součástek.






Arduino tlačítka pro jednoduché projekty

V našich projektech budeme pracovat s velmi jednoduchými 4nohými tlačítky hodin, která přicházejí s téměř jakoukoli sadou Arduino. Tlačítko je spínač se dvěma páry kontaktů. Kontakty v jednom páru jsou vzájemně propojeny, takže do obvodu nebude možné implementovat více spínačů, ale můžete současně ovládat dva paralelní segmenty, to se může hodit.

V závislosti na situaci můžete vytvořit oba obvody s normálně zavřenými a normálně otevřenými kontakty - stačí pouze odpovídajícím způsobem provést zapojení v obvodu.

Pro snadné použití je tlačítko takt obvykle opatřeno plastovou krytkou nějaké barvy, která zcela zjevně pasuje přes tlačítko a dodává projektu méně hackerský vzhled.

Připojení tlačítka Arduino

Zapínání a vypínání LED pomocí tlačítka

Začněme nejjednodušším způsobem připojení dotykového tlačítka. Zvažte obvod s Arduinem jako zdrojem energie, LED diodou, omezovacím odporem 220 Ohm a tlačítkem, které zavře a otevře obvod.

Při zapojování tlačítka se dvěma páry nožiček je důležité zvolit správné NC kontakty. Podívejte se pozorně na obrázek: páry nohou jsou umístěny po stranách tlačítka. Samotné tlačítko je čtvercové, ale vzdálenosti mezi dvojicemi kontaktů jsou vizuálně patrné: můžete okamžitě vybrat dva na jedné straně a dva na druhé. Přepínač bude tedy implementován mezi jedním „párem“ na straně. Abychom byli zařazeni do obvodu, připojíme k jednomu a druhému kontaktu, mezi nimiž je minimální vzdálenost. Druhý pár kontaktů jednoduše duplikuje první.

Pokud máte jiný typ spínače, můžete bezpečně vybrat kontakty z protilehlých rohů (na některých tlačítkách je speciální značka ve formě vybrání, pomocí které můžete určit, na které straně jsou spárované kontakty umístěny). Nejspolehlivějším způsobem, jak určit správné nohy, je prozvonit kontakty testerem.

Samotný obvod s tlačítkem, LED a Arduino ovladačem nepotřebuje žádné zvláštní vysvětlení. Tlačítko přeruší obvod, LED nesvítí. Po stisknutí se obvod uzavře a LED se rozsvítí. Pokud zaměníte kontakty (zapnete tlačítka přes uzavřené spárované kontakty), tlačítko nebude fungovat, protože obvod se nikdy neotevře. Stačí vyměnit kontakty.

Připojení tlačítka s pull-up rezistorem

Nyní připojíme tlačítko k Arduinu, abychom si mohli přečíst jeho stav ve skice. K tomu nám poslouží následující schéma.

Blikající LED po stisknutí tlačítka

V předchozím příkladu s LED jsme připojili tlačítko k desce Arduino a pochopili, jak to funguje. LED se rozsvěcovala a zhasínala, ale dělala to ve zcela pasivním režimu - samotný ovladač zde byl naprosto nadbytečný, mohl být nahrazen bateriemi. Udělejme proto náš nový projekt „inteligentnější“: když stisknete tlačítko, LED dioda bude nepřetržitě blikat. S běžným obvodem s žárovkou a spínačem to nemůžete udělat - k vyřešení tohoto, i když jednoduchého, ale ne triviálního úkolu, využijeme sílu našeho mikrokontroléru.

Fragment obvodu s LED je nám již známý. Sestavili jsme běžný maják s LED a omezovacím odporem. V druhé části ale vidíme známé tlačítko a další rezistor. I když nebudeme zabíhat do detailů, pouze sestavíme obvod a nahrajeme jednoduchou skicu do Arduina. Všechny prvky obvodu přicházejí v nejjednodušších startovacích sadách Arduino.

/* Náčrt obvodu pomocí tlačítka taktu a LED diody LED bliká, když je tlačítko stisknuto. Tlačítko je přitaženo k zemi, jeho stisknutí odpovídá HIGH na vstupu */ const int PIN_BUTTON = 2; const int PIN_LED = 13; void setup() ( Serial.begin(9600); pinMode(PIN_LED, OUTPUT); ) void loop() ( // Získání stavu tlačítka int buttonState = digitalRead(PIN_BUTTON); Serial.println(buttonState); // Pokud není stisknuto tlačítko, pak neuděláme nic, pokud (!buttonState) ( delay(50); return; ) // Tento blok kódu bude proveden, pokud je tlačítko stisknuto // Blikání LED digitalWrite(PIN_LED, HIGH delay( 1000, NÍZKÁ;

Stiskněte a podržte - LED bliká. Pusťte - zhasne. Přesně to, co jsme chtěli. Radostně tleskáme rukama a začínáme analyzovat, co jsme udělali.

Podívejme se na skicu. Vidíme v tom celkem jednoduchou logiku.

  1. Zjistěte, zda je tlačítko stisknuto.
  2. Pokud není tlačítko stisknuto, pak jednoduše opustíme metodu smyčky, aniž bychom cokoliv zapínali nebo měnili.
  3. Pokud je stisknuto tlačítko, blikáme pomocí fragmentu standardního náčrtu:
    1. Zapněte LED přivedením napětí na požadovaný port
    2. Když LED svítí, uděláme potřebnou pauzu
    3. Vypněte LED
    4. Uděláme potřebnou pauzu s vypnutou LED

Logika chování tlačítka ve skice může záviset na způsobu připojení s pull-up rezistorem. O tom si povíme v dalším článku.

Drnčení tlačítka Arduino

Při práci s tlačítky se můžeme setkat s velmi nepříjemným jevem zvaným odskok tlačítka. Jak sám název napovídá, tento jev je způsoben chvěním kontaktů uvnitř tlačítkového spínače. Kovové pláty se nedotýkají okamžitě (i když pro naše oči velmi rychle), takže v kontaktní oblasti dochází na krátkou dobu k přepětí a poklesům napětí. Pokud nepředvídáme výskyt takových „odpadkových“ signálů, budeme na ně pokaždé reagovat a můžeme náš projekt dovést až k domu.

K eliminaci bounce se používají softwarová a hardwarová řešení. V kostce se zmíníme jen o hlavních metodách potlačení klábosení:

  • Mezi sbírku hodnot z pinu Arduino přidáme do náčrtu pauzu 10-50 milisekund.
  • Pokud použijeme přerušení, nelze použít softwarovou metodu a tvoříme hardwarovou ochranu. Nejjednodušší z nich je RC filtr s kondenzátorem a odporem.
  • Pro přesnější odskok je použit hardwarový filtr využívající Schmidtův trigger. Tato možnost vám umožní získat signál téměř ideálního tvaru na vstupu do Arduina.

Podrobnější informace o způsobech, jak se vypořádat s klábosením, najdete v tomto.

Přepínání režimů pomocí tlačítka

Chcete-li zjistit, zda bylo stisknuto tlačítko, stačí zaznamenat skutečnost, že bylo stisknuto, a uložit atribut do speciální proměnné.

Skutečnost stisknutí určíme pomocí funkce digitalRead(). V důsledku toho dostaneme HIGH (1, TRUE) nebo LOW (0, FALSE), podle toho, jak je tlačítko zapojeno. Pokud připojíme tlačítko pomocí vnitřního pull-up rezistoru, pak stisknutí tlačítka způsobí vstup na úroveň 0 (FALSE).

Chcete-li uložit informace o kliknutí na tlačítko, můžete použít booleovskou proměnnou:

boolean keyPressed = digitalRead(PIN_BUTTON)==NÍZKÁ;

Proč používáme tuto konstrukci a neděláme to takto:

boolean keyPressed = digitalRead(PIN_BUTTON);

Jde o to, že digitalRead() může vrátit hodnotu HIGH, ale neindikuje stisknutí tlačítka. V případě použití obvodu s pull-up rezistorem bude HIGH znamenat, že tlačítko naopak není stisknuto. V první volbě (digitalRead(PIN_BUTTON)==LOW) jsme okamžitě porovnali vstup s hodnotou, kterou jsme potřebovali, a zjistili, že tlačítko bylo stisknuto, ačkoli úroveň signálu na vstupu byla nyní nízká. A uložil stav tlačítka do proměnné. Pokuste se explicitně označit všechny logické operace, které provádíte, aby byl váš kód transparentnější a předešlo se zbytečným hloupým chybám.

Jak přepínat provozní režimy po stisknutí tlačítka?

Často nastává situace, kdy při používání tlačítek musíme počítat s tím, že tlačítko nejen stiskneme, ale i pustíme. Například stisknutím a uvolněním tlačítka můžeme rozsvítit světlo nebo přepnout provozní režim okruhu. Jinými slovy, musíme nějakým způsobem zaznamenat do kódu skutečnost, že na tlačítko bylo kliknuto, a použít tuto informaci v budoucnu, i když již tlačítko nebude stisknuto. Pojďme se podívat, jak to lze provést.

Logika programu je velmi jednoduchá:

  • Pamatujeme si skutečnost, že jsme klikli na proměnnou služby.
  • Čekáme, až přejdou jevy spojené s chrastěním.
  • Čekáme na uvolnění tlačítka.
  • Pamatujeme si skutečnost uvolnění a nastavujeme v samostatné proměnné znamení, že tlačítko bylo zcela stisknuto.
  • Vymažte proměnnou služby.

Jak zjistit vícenásobné stisknutí tlačítka?

Stačí si zapamatovat stav každého tlačítka v odpovídající proměnné nebo v poli Arduino. Hlavní věc, kterou je zde třeba pochopit, je, že každé nové tlačítko je zaneprázdněný pin. Pokud tedy máte velké množství tlačítek, můžete zaznamenat nedostatek volných kontaktů. Alternativní možností je použití tlačítek připojených k jednomu analogovému pinu pomocí obvodu s odporovým děličem. O tom si povíme v následujících článcích.

V tomto příkladu se podíváme na připojení tlačítka k ovladači Arduino. Když stisknete tlačítko, rozsvítíme vestavěnou LED. Většina desek Arduino má vestavěnou SMT LED připojenou k výstupu 13 (pin 13).

Požadované komponenty

  • Arduino ovladač
  • taktovací tlačítko
  • 10kOhm odpor
  • prototypová deska
  • propojovací dráty

Spojení

Napájecí výstup (5V) a zem (Gnd) připojíme červenými a černými vodiči k prkénku. Prkénka na krájení obvykle používají nejvzdálenější řady kolíků pro napájení a uzemnění, jak je znázorněno na obrázku. Třetím modrým vodičem propojíme digitální kolík 2 ovladače Arduino s kolíkem tlačítka hodin. Ke stejnému kontaktu nebo ke kontaktu k němu trvale připojenému ve 4pinovém provedení připojíme 10kOhm pull-up rezistor, který je zase spojen se zemí. Druhý výstup tlačítka připojíme na 5V zdroj.

Když není stisknuto tlačítko hodin, výstup 2 je připojen pouze k zemi přes pull-up rezistor a tento vstup bude číst LOW. A po stisku tlačítka se objeví kontakt mezi vstupem 2 a 5V napájením a bude načten.

Poznámka: Nejčastěji mají dotyková tlačítka dva kontakty na každé straně, jak je znázorněno na obrázku připojení. Tlačítko je přitom téměř čtvercového tvaru. Při zapojování je DŮLEŽITÉ, které kontakty jsou připojeny a které jsou při stisku sepnuté. Pokud si nejste jisti, je nejlepší zazvonit na tlačítko.

Tlačítko můžete připojit i obráceně - přes pull-up rezistor k napájení a přes tlačítko k zemi. Poté se ze vstupu načte HIGH a po stisknutí tlačítka LOW.

Pokud je vstup ponechán nezapojený, vstup bude náhodně číst HIGH nebo LOW. To je důvod, proč používáme pull-up rezistor pro nastavení konkrétní hodnoty, když není stisknuto tlačítko.

Systém

Kód

/* Tlačítko Zapněte a vypněte LED stisknutím tlačítka. vytvořený v roce 2005 DojoDave upraveno 28. října 2010 Tomem Igoem Tento příklad kódu je volným dílem. */ // nastavení konstant const int buttonPin = 2; // číslo vstupu připojené k tlačítku const int ledPin = 13; // číslo výstupu LED // proměnné int buttonState = 0; // proměnná pro uložení stavu tlačítka void setup() ( // inicializuje pin připojený k LED jako výstupní pinMode(ledPin, OUTPUT); // inicializuje pin připojený k tlačítku jako vstupní pinMode(buttonPin, INPUT ) void loop())( // přečtení hodnot ze vstupu tlačítka buttonState = digitalRead(buttonPin); // kontrola, zda je tlačítko stisknuto // pokud je stisknuto, buttonState bude HIGH: if (buttonState); == HIGH) ( // zapnout LED digitalWrite(ledPin, HIGH); ) else ( // vypnout LED digitalWrite(ledPin, LOW); ) )


viz také

Při vývoji zařízení často potřebujete použít tlačítko připojené k desce Arduino. Jako tlačítko se obvykle používají taktová tlačítka, která při stisku uzavřou obvod a při nestisknutí nepropustí proud. Nestačí ale jednoduše připojit tlačítko k digitálnímu vstupu mikrokontroléru. Článek ukazuje nuance připojení a poskytuje příklady.

Použijeme například taktovací tlačítko. Tlačítko má 4 výstupy. Ale ve skutečnosti jsou 4 piny potřeba pouze pro pevné osazení tlačítka na desce. Uvnitř má pouze 2 kontakty po stranách, z nichž každý vyčnívá za hranice pouzdra vlevo a vpravo. To je jasně vidět na rozložených fotografiích tlačítka:

Tlačítko bez horního krytu. Kontakty připojené k různým kolíkům jsou zvýrazněny různými barvami. Vedle demontovaného tlačítka je vidět kovový kulatý díl, který po zmáčknutí sepne střední a boční kontakty.

Sekční tlačítko. Je vidět, že krajní kontakty jsou fyzicky připojeny k jedné svorce vycházející z obou stran. Centrální výstup je uspořádán podobně.

Je důležité nezaměňovat, které kontakty jsou spojeny (to znamená, že jsou jedním celkem) a které by se měly při stisknutí uzavřít. Tlačítko je připojeno jedním z kontaktů k libovolnému digitálnímu kolíku Arduina a druhým kontaktem ke kladnému pólu napájení. Dále je potřeba nakonfigurovat pin Arduino jako vstup pomocí funkce pinMode() a hodnotu z pinu můžete načíst pomocí funkce digitalRead(). Po stisku tlačítka se z pinu načte hodnota HIGH. Tady bychom mohli skončit, nebýt jedné věci: v otevřeném stavu budou na vstup náhodně posílány signály LOW a HIGH, protože takový výstup není s ničím spojen a „visí ve vzduchu“. Pro správné připojení je potřeba pin, ke kterému je tlačítko připojeno, „přitáhnout“ k jedné z hodnot. V našem případě při nestisknutém tlačítku by se z čepu měla načíst hodnota LOW, takže jej přitáhneme k zemi.

K tomu je potřeba jej zapojit paralelně s tlačítkem na vybranou svorku velké nominální hodnoty (10 KOhm a více), kterou bude protékat velmi malý proud. Když pak není tlačítko stisknuté, bude mít pin jasnou hodnotu LOW a při stisknutí tlačítka nebude náš pull-up rezistor rušit čtení HIGH. Protože přes pull-up rezistor proteče velmi malý proud ve srovnání se zkratovým proudem kolíku ovladače ke kladnému pólu napájení.

Po sestavení obvodu nahrajte do desky následující program:

/* Přepněte LED, když stisknete tlačítko Schéma zařízení: * LED je připojena ke kolíku 13 (vestavěná LED) * Tlačítko hodin je připojeno k 2. kolíku * 10 kOhm rezistor se používá k vytažení 2. kolíku k zem */ // Nastavíme konstanty // nastavíme čísla pinů: const int buttonPin = 2 // Číslo pinu, ke kterému je tlačítko připojeno const int ledPin = 13; // Číslo pinu, ke kterému je LED připojena //Declare variables int buttonState = 0; // Proměnná pro uložení stavu tlačítka void setup() ( // Nastaví pin, ke kterému je LED připojena, jako výstupní pinMode(ledPin, OUTPUT); // Nastaví pin, ke kterému je tlačítko připojeno jako an input pinMode(buttonPin, INPUT ) void loop())( // Čtení stavu tlačítka buttonState = digitalRead(buttonPin); // Zkontrolujte, zda je tlačítko stisknuto // Pokud je stisknuto, kolík s tlačítkem se zobrazí; přijme hodnotu HIGH if (buttonState == HIGH) ( // Zapne LED diodu digitalWrite (ledPin, HIGH); ) else ( // Vypne LED digitalWrite(ledPin, LOW); ) )

Přepnutí LED při stisknutí tlačítka

Schéma zařízení:

* LED připojená ke kolíku 13 (vestavěná LED)

* Tlačítko taktu je připojeno ke 2. kolíku

* K přitažení 2. kolíku k zemi se používá 10kOhm rezistor

//Nastavit konstanty

// nastavení čísel pinů:

const int buttonPin = 2 ; // Číslo pinu, ke kterému je tlačítko připojeno

const int ledPin = 13 ; // Číslo pinu, ke kterému je LED připojena

//Deklarování proměnných

int buttonState = 0 ; // Proměnná pro uložení stavu tlačítka

void setup() (

// Nakonfigurujte pin, ke kterému je LED připojena jako výstup

pinMode(ledPin, OUTPUT);

// Nastaví pin, ke kterému je tlačítko připojeno, jako vstup

pinMode(tlačítkoPin, INPUT);

void loop() (

// Přečtěte si stav tlačítka

buttonState = digitalRead(buttonPin);

Instrukce

Tlačítka jsou různá, ale všechna plní stejnou funkci – fyzicky spojují (nebo naopak přerušují) vodiče dohromady, aby zajistily elektrický kontakt. V nejjednodušším případě se jedná o spojení dvou vodičů jsou zde tlačítka, která spojují větší počet vodičů.
Některá tlačítka po stisku ponechávají vodiče připojené (uzamykací tlačítka), jiná otevírají obvod ihned po uvolnění (neuzamykací tlačítka).
Tlačítka se také dělí na normálně otevřená a normálně zavřená. Prvními se po stisku okruh uzavírá, druhými se okruh otevírá.
V dnešní době našel široké použití typ tlačítek nazývaných „taktová tlačítka“. Hodiny – ne od slova „taktní“, ale spíše od slova „hmatový“, protože Tlak je dobře cítit prsty. Jsou to tlačítka, která po stisknutí uzavřou elektrický obvod a po uvolnění jej otevřou.

Tlačítko je velmi jednoduchý a užitečný vynález, který slouží k lepší interakci mezi člověkem a technikou. Ale jako všechno v přírodě to není ideální. To se projevuje tak, že při stisknutí tlačítka a při jeho uvolnění dojde k tzv. "" ("odskočit" v -). Jedná se o vícenásobné přepnutí stavu tlačítka během krátké doby (řádově několik milisekund), než přejde do ustáleného stavu. K tomuto nežádoucímu jevu dochází při sepnutí tlačítka v důsledku elasticity materiálů tlačítka nebo v důsledku vznikajících elektrických mikrojisker.
Můžete to vidět na vlastní oči pomocí Arduina, což si uděláme o něco později.

Chcete-li připojit normálně otevřené tlačítko hodin k Arduinu, můžete to udělat nejjednodušším způsobem: připojte jeden volný vodič tlačítka k napájení nebo zemi, druhý k digitálnímu výstupu Arduina. Ale obecně řečeno je to špatně. Faktem je, že ve chvílích, kdy není tlačítko zavřené, se na digitálním výstupu Arduino objeví elektromagnetické rušení, a proto jsou možné falešné poplachy.
Aby se zabránilo rušení, je digitální kolík obvykle připojen přes poměrně velký odpor (10 kOhm) buď k zemi nebo k napájení. V prvním případě se nazývá „s pull-up rezistorem“, ve druhém - „obvod s pull-down rezistorem“. Podívejme se na každou z nich.

Nejprve připojíme tlačítko k Arduinu pomocí obvodu s pull-up rezistorem. K tomu připojíme jeden kontakt tlačítka k zemi, druhý k digitálnímu výstupu 2. Digitální výstup 2 je také připojen přes odpor 10 kOhm k napájení +5 V.

Pojďme si napsat takovýto náčrt pro zpracování stisku tlačítek a nahrát jej do Arduina.
Nyní vestavěná LED na kolíku 13 trvale svítí, dokud není stisknuto tlačítko. Když stiskneme tlačítko, přejde do stavu LOW a LED zhasne.

Nyní sestavíme obvod se stahovacím rezistorem. Jeden kontakt tlačítka připojíme na zdroj +5 V, druhý na digitální výstup 2. Digitální výstup 2 připojíme přes rezistor 10 kOhm k zemi.
Náčrt měnit nebudeme.

Nyní se LED nerozsvítí, dokud nestisknete tlačítko.

Video k tématu

Tip 2: Jak se zbavit odskoku kontaktu při připojení tlačítka k Arduinu

Již jsme se podívali na připojení tlačítka k Arduinu a dotkli se problému „odskakování“ kontaktu. Jedná se o velmi nepříjemný jev, který způsobuje opakované stisky tlačítka a komplikuje softwarové zpracování stisku tlačítka. Pojďme si promluvit o tom, jak se zbavit odrazu kontaktu.

Budete potřebovat

  • - Arduino;
  • - taktovací tlačítko;
  • - rezistor o jmenovité hodnotě 10 kOhm;
  • - Světelná dioda;
  • - propojovací vodiče.

Instrukce

Odskok kontaktu je jev charakteristický pro mechanické spínače, tlačítka, páčkové spínače a relé. Vzhledem k tomu, že kontakty jsou obvykle vyrobeny z kovů a slitin, které mají elasticitu, při fyzickém uzavření okamžitě nevytvoří spolehlivé spojení. Během krátké doby se kontakty několikrát uzavřou a odpuzují. V důsledku toho elektrický proud nenabude stálé hodnoty okamžitě, ale po sérii vzestupů a poklesů. Doba trvání tohoto přechodového jevu závisí na materiálu kontaktů, jejich velikosti a provedení. Obrázek ukazuje typický průběh, když jsou kontakty dotykového tlačítka sepnuté. Je vidět, že doba od okamžiku přepnutí do ustáleného stavu je několik milisekund. To je také "poskakování".

Tento efekt není patrný u elektrických ovladačů osvětlení nebo jiných inerciálních senzorů a zařízení. Ale v obvodech, kde dochází k rychlému čtení a zpracování informací (kde jsou frekvence stejného řádu jako „odrazové“ pulsy nebo vyšší), je to problém. Zejména Arduino UNO, které běží na 16 MHz, je vynikající v odrážení pinů, přijímá sekvenci jedniček a nul namísto jediného přepínače z 0 na 1.

Podívejme se, jak odraz kontaktu ovlivňuje správnou činnost obvodu. K Arduinu připojíme hodinové tlačítko pomocí obvodu s pull-down rezistorem. Po stisku tlačítka rozsvítíme LED diodu a necháme ji svítit do opětovného stisku tlačítka. Pro přehlednost připojte externí LED k digitálnímu kolíku 13, i když si vystačíte s vestavěným.

Při realizaci tohoto úkolu vás první napadne:
- zapamatovat si předchozí stav tlačítka;
- porovnat se současným stavem;
- pokud se stav změnil, změňte stav LED.
Napíšeme si takový náčrt a nahrajeme ho do paměti Arduina.
Při uvedení obvodu do provozu je okamžitě viditelný efekt odskoku kontaktu. Projevuje se to tím, že se LED dioda po stisknutí tlačítka hned nerozsvítí, nebo se rozsvítí a hned zhasne, nebo po stisknutí tlačítka hned nezhasne, ale svítí dál. Obecně schéma nefunguje stabilně. A pokud to pro rozsvícení LED není tak kritické, pak pro jiné, vážnější úkoly, je to prostě nepřijatelné.

Pokusíme se situaci napravit. Víme, že k odskoku kontaktu dochází během několika milisekund po sepnutí kontaktů. Počkáme řekněme 5 ms po změně stavu tlačítka. Tato doba je pro člověka prakticky okamžitá a stisknutí tlačítka člověkem obvykle trvá mnohem déle – několik desítek milisekund. A Arduino funguje skvěle s tak krátkými časovými úseky a těchto 5 ms mu umožní přerušit odskoky kontaktu od stisknutí tlačítka.
V tomto náčrtu budeme deklarovat proceduru debounce() („bounce“ v angličtině je jen „bounce“, předpona „de“ znamená obrácený proces), do jejíhož vstupu dodáme předchozí stav tlačítka. Pokud stisk tlačítka trvá déle než 5 ms, jedná se skutečně o stisk.
Po detekci lisu změníme stav LED.
Nahrajeme skicu na desku Arduino. Nyní je vše mnohem lepší! Tlačítko funguje bez závad, při stisku LED změní stav, jak jsme chtěli.

Podobnou funkcionalitu poskytují speciální knihovny, například knihovna Bounce2. Můžete si jej stáhnout z odkazu v sekci „Zdroje“ nebo na webu https://github.com/thomasfredericks/Bounce2. Chcete-li knihovnu nainstalovat, umístěte ji do adresáře knihoven vývojového prostředí Arduino a restartujte IDE.
Knihovna "Bounce2" obsahuje následující metody:
Bounce() - inicializace objektu "Bounce";
prázdný interval (ms)- nastavuje dobu zpoždění v milisekundách;
neplatná příloha (číslo PIN)- nastavuje pin, ke kterému je tlačítko připojeno;
int update()- aktualizuje objekt a vrací true, pokud se stav pinu změnil, a false jinak;
int read()- přečte nový stav kolíku.
Přepišme naši skicu pomocí knihovny. Můžete si také zapamatovat a porovnat minulý stav tlačítka s aktuálním, ale zjednodušíme algoritmus. Když stisknete tlačítko, budeme počítat stisky a každé liché stisknutí rozsvítí LED a každé sudé zhasne. Tato skica vypadá stručně, snadno se čte a snadno se aplikuje.

Prameny:

  • Odrážení kontaktů tlačítka připojeného k Arduinu
  • Knihovna Bounce2