Processing:Библиотеки/Hardware I/O/Класс GPIO/attachInterrupt(): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
Строка 10: Строка 10:
==Класс==
==Класс==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
GPIO
GPIO
</syntaxhighlight>
</syntaxhighlight>
Строка 16: Строка 16:
==Обозначение==
==Обозначение==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
attachInterrupt()
attachInterrupt()
</syntaxhighlight>
</syntaxhighlight>
Строка 30: Строка 30:
==Синтаксис==
==Синтаксис==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
.attachInterrupt(pin, parent, method, mode)
.attachInterrupt(pin, parent, method, mode)
</syntaxhighlight>
</syntaxhighlight>
Строка 36: Строка 36:
==Параметры==
==Параметры==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
pin – входной/выходной контакт общего назначения, проверяемый на прерывание. Тип данных – int
pin – входной/выходной контакт общего назначения, проверяемый на прерывание. Тип данных – int
parent – как правило, используется «this». Тип данных – PApplet
parent – как правило, используется «this». Тип данных – PApplet
Строка 45: Строка 45:
==Возвращаемое значение==
==Возвращаемое значение==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
void
void
</syntaxhighlight>
</syntaxhighlight>
Строка 51: Строка 51:
==Пример==
==Пример==


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
import processing.io.*;
import processing.io.*;
color bgcolor = 0;
color bgcolor = 0;

Текущая версия от 11:54, 20 мая 2023


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



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

См.также

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