32 lines
1.1 KiB
C++
32 lines
1.1 KiB
C++
/*
|
|
* Отработка по прерыванию таймера
|
|
*/
|
|
|
|
#define CLK 7
|
|
#define DT 8
|
|
#define SW 9
|
|
|
|
#include "GyverEncoder.h"
|
|
#include "TimerOne.h"
|
|
Encoder enc1(CLK, DT, SW);
|
|
|
|
void setup() {
|
|
Serial.begin(9600);
|
|
enc1.setType(TYPE2); // тип энкодера TYPE1 одношаговый, TYPE2 двухшаговый. Если ваш энкодер работает странно, смените тип
|
|
|
|
Timer1.initialize(1000); // установка таймера на каждые 1000 микросекунд (= 1 мс)
|
|
Timer1.attachInterrupt(timerIsr); // запуск таймера
|
|
}
|
|
|
|
void timerIsr() { // прерывание таймера
|
|
enc1.tick(); // отработка теперь находится здесь
|
|
}
|
|
|
|
void loop() {
|
|
if (enc1.isRight()) Serial.println("Right"); // если был поворот
|
|
if (enc1.isLeft()) Serial.println("Left");
|
|
if (enc1.isRightH()) Serial.println("Right holded"); // если было удержание + поворот
|
|
if (enc1.isLeftH()) Serial.println("Left holded");
|
|
|
|
}
|