attachInterrupt()

Page

Stránky / Arduino / C++ pre Arduino / Funkcie API /

Funkce připojí uživatelskou funkci obsluhy přerušení na pin externího přerušení. To umožňuje vyhnout se periodické kontrole nějakého pinu a reagovat pouze na konkrétní událost na pinu. Typické úkoly, kdy je to potřeba je například reagovat na rotační enkodér nebo tlačítko.

Syntax

void attachInterrupts(uint8_t interruptNum, void (userFunc*)(void), int mode);

Parametry

  • interruptNum - Číslo přerušení. Toto číslo se neshoduje s číslem pinu a je vhodné využít makro digitalPinToInterrupt na jeho získání. Můžete použít pouze takové piny, které umožňují externí přerušení.
  • userFunc - Uživatelská funkce, která zpracuje přerušení.
  • mode - Na jakou změnu na pinu má přerušení reagovat.
    • LOW - Přerušení nastane, pokud je na pinu logická nula.
    • CHANGE - Přerušení nastane při změně logické úrovně.
    • RISING - Přerušení nastane při změně z LOW na HIGH.
    • FALLING - Přerušení nastane při změně z HIGH na LOW.
    • HIGH - Přerušení nastane při logické jednotce na pinu. Pouze pro Arduino Due, Zero a MKR1000.

Návratová hodnota

  • Funkce nevrací žádnou hodnotu.

Použitelné piny

Deska Použitelné digitální piny
Uno, Nano, Mini 2, 3
Mega 2, 3, 18, 19, 20, 21
Micro, Leonardo 0, 1, 2, 3, 7
Zero Všechny digitální piny kromě 4.
MKR1000 0, 1, 4, 5, 6, 7, 8, 9, A1, A2
Due Všechny digitální piny.

Čísla pinů, které podporují přerušení, jsou jiné než digitální piny. Abyste si je nemuseli pamatovat, můžete použít makro digitalPinToInterrupt(pin). Ve mnoha příkladech, které najdete na Internetu, není toto makro použito. Ani já nejsem výjimkou a mnohé mé starší kódy toto makro nepoužívají.

Příklady

Na stránce najdete několik příkladů použití.


14.11.2017


Menu