Processing:Библиотеки/Hardware I/O/Класс GPIO/attachInterrupt()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску


Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.



attachInterrupt()[1]

Класс

GPIO

Обозначение

attachInterrupt()

Описание

Вызывает функцию, если меняется значение входного контакта.

У пользовательской функции pinEvent() из скетча-примера ниже должен быть только один параметр – это номер контакта, который проверяется на прерывание. Поскольку эта функция может быть вызвана в любой момент (в том числе – когда запрещено рисование в дисплейном окне), желательно использовать в ней только простые переменные. Их изменение, в свою очередь, будет влиять на то, что происходит при следующем вызове цикла draw(), как в примере ниже. Кроме того, на этом этапе можно свободно вызывать функции библиотеки Hardware I/O.

Четвертый параметр (mode) задает, когда нужно вызвать функцию. При использовании FALLING прерывание сработает, если значение на заданном контакте сменится с HIGH на LOW, при использовании RISING – с LOW на HIGH, а при использовании CHANGE – при любом из этих изменений.

Синтаксис

.attachInterrupt(pin, parent, method, mode)

Параметры

pin  входной/выходной контакт общего назначения, проверяемый на прерывание. Тип данных  int
parent  как правило, используется «this». Тип данных  PApplet
method  название пользовательской функции, вызываемой при прерывании. Тип данных  String
mode  режим вызова функции (то есть то, при каком типе изменения значения нужно вызвать функцию). Возможные значения: CHANGE, FALLING и RISING. Тип данных  int

Возвращаемое значение

void

Пример

import processing.io.*;
color bgcolor = 0;

void setup() {
  GPIO.pinMode(4, GPIO.INPUT);
  GPIO.attachInterrupt(4, this, "pinEvent", GPIO.RISING);
}

void draw() {
  background(bgcolor);
}

// эта функция будет вызваться всякий раз, 
// когда значение на контакте GPIO4 изменится с LOW на HIGH:
void pinEvent(int pin) {
  println("Received interrupt");
      //  "Вызвано прерывание"
  if (bgcolor == 0) {
    bgcolor = color(255);
  } else {
    bgcolor = color(0);
  }
}

См.также

Внешние ссылки