30 lines
975 B
Arduino
30 lines
975 B
Arduino
|
// Пример с обработчиками в прерывании
|
|||
|
|
|||
|
#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
|
|||
|
// вызов подключенных функций будет здесь,
|
|||
|
// чтобы не грузить прерывание
|
|||
|
}
|