Arduino платы поддерживающие аппаратное прерывание:
Arduino Pro Mini | Pin 2 | Pin 3 | ||||
Arduino Nano | Pin 2 | Pin 3 | ||||
Arduino Uno | Pin 2 | Pin 3 | ||||
Arduino Leonardo | Pin 2 | Pin 3 | Pin 0 | Pin 1 | Pin 7 | |
Arduino Mega2560 | Pin 2 | Pin 3 | Pin 21 | Pin 20 | Pin 19 | Pin 18 |
ESP 8266 01 | Pin 0 | |||||
ESP 8266 12 | Pin 0 | Pin 16 | ||||
ESP 32 | Pin 2 | Pin 12 | Pin 13 | Pin 15 | Pin 27 | Pin 32 |
- LOW вызывает прерывание, когда на порту LOW.
- CHANGE прерывание вызывается при смене значения на порту, с LOW на HIGH и наоборот.
- RISING прерывание вызывается только при смене значения на порту с LOW на HIGH.
- HIGH вызывает прерывание, когда на порту HIGH.
- FALLING прерывание вызывается только при смене значения на порту с HIGH на LOW.
Запрещается использовать блоки внутри функции аппаратного прерывания:
1. Не пытайтесь использовать блоки задержки.
2. Не пытайтесь производить вычисление чисел или переменных.
3. Не используйте вывод в Монитора порта.
4. Не пытайтесь читать данные с Монитора порта.
Мигающий светодиод на pin 13, 10 сек. включение и 1 сек. отключение.
При нажати на кнопку pin 2, резистором 2kOm подтянута к +5v, отключается светодиод.
void interrupt_2(){ pinMode(13, OUTPUT); digitalWrite(13, 0); } void setup() { attachInterrupt(digitalPinToInterrupt(2),interrupt_2,LOW); } void loop() { pinMode(13, OUTPUT); digitalWrite(13, 1); delay(10000); pinMode(13, OUTPUT); digitalWrite(13, 0); delay(1000); }
Открыть пример: Online ArduBlock
Видеоурок: