Описание
Задает функцию обработки внешнего прерывания, то есть функция, которая будет вызвана по внешнему прерыванию. Если до это была задана другая функция, то назначается новая.
Плата | int.0 | int.1 | int.2 | int.3 | int.4 | int.5 |
---|---|---|---|---|---|---|
UNO, Ethernet | 2 | 3 | ||||
Mega2560 | 2 | 3 | 21 | 20 | 19 | 18 |
Leonardo | 3 | 2 | 0 | 1 | 7 |
Синтаксис
attachInterrupt(interrupt, function, mode);
Параметры
interrupt: номер прерывания (int)
или pin: номер цифрового порта (только для Arduino Due)
function: функция, вызываемая прерыванием, функция должна быть без параметров и не возвращать значений. В англоязычной документации употребляется термин interrupt service routine для такой функции.
mode задает режим обработки прерывания. Допустимо использование следующих констант:
- LOW вызывает прерывание, когда на порту LOW
- CHANGE прерывание вызывается при смене значения на порту, с LOW на HIGH и наоборот
- RISING прерывание вызывается только при смене значения на порту с LOW на HIGH
- FALLING прерывание вызывается только при смене значения на порту с HIGH на LOW
Возвращаемое значение
нет
Дополнительная информация
Большинство контроллеров Ардуино умеют обрабатывать до двух внешних прерываний, пронумерованных так:
- 0 — на цифровом порту 2
- 1 — на цифровом порту 3
Arduino Mega обрабатывает дополнительно еще четыре прерывания:
- 2 — порт 21
- 3 — порт 20
- 4 — порт 19
- 5 — порт 18
Arduino Due имеет мощные возможности обработки прерываний, что позволяет прикрепить функцию прерывания для всех доступных контактов. Вы можете напрямую указать пин в attachInterrupt().
Пример
int pin = 13;
volatile int state = LOW;
void setup(){
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, CHANGE);
}
void loop(){
digitalWrite(pin, state);
}
void blink(){
state = !state;
}