30 lines
975 B
C++
30 lines
975 B
C++
// Пример с обработчиками в прерывании
|
||
|
||
#include <EncButton.h>
|
||
EncButton<EB_CALLBACK, 2, 3, 4> enc; // энкодер с кнопкой <A, B, KEY>
|
||
|
||
void setup() {
|
||
Serial.begin(9600);
|
||
enc.attach(TURN_HANDLER, myTurn); // подключим поворот
|
||
|
||
// прерывание обеих фаз энкодера на функцию isr
|
||
attachInterrupt(0, isr, CHANGE);
|
||
attachInterrupt(1, isr, CHANGE);
|
||
}
|
||
|
||
void myTurn() {
|
||
Serial.print("TURN_HANDLER: ");
|
||
Serial.println(enc.counter);
|
||
}
|
||
|
||
void isr() {
|
||
enc.tickISR(); // тикер в прерывании
|
||
// Не вызывает подключенные коллбэки внутри прерывания!!!
|
||
}
|
||
|
||
void loop() {
|
||
enc.tick(); // дополнительный опрос таймаутов и коллбэков в loop
|
||
// вызов подключенных функций будет здесь,
|
||
// чтобы не грузить прерывание
|
||
}
|