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);
  }
}

См.также

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