41 lines
1.7 KiB
C++
41 lines
1.7 KiB
C++
// подключаем "внешний" энкодер, для работы с расширителями пинов например
|
||
|
||
#define SW 0
|
||
#define DT 2
|
||
#define CLK 3
|
||
|
||
#include "GyverEncoder.h"
|
||
Encoder enc1;
|
||
|
||
void setup() {
|
||
Serial.begin(9600);
|
||
enc1.setType(TYPE2);
|
||
pinMode(SW, INPUT_PULLUP);
|
||
pinMode(CLK, INPUT);
|
||
pinMode(DT, INPUT);
|
||
}
|
||
|
||
void loop() {
|
||
// подаём значения напрямую в tick()
|
||
// можно подавать лог. величины с любых расширителей пинов!!!
|
||
// Здесь в качестве примера digitalRead
|
||
enc1.tick(digitalRead(CLK), digitalRead(DT), !digitalRead(SW));
|
||
|
||
if (enc1.isTurn()) { // если был совершён поворот (индикатор поворота в любую сторону)
|
||
// ваш код
|
||
}
|
||
|
||
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");
|
||
|
||
if (enc1.isPress()) Serial.println("Press"); // нажатие на кнопку (+ дебаунс)
|
||
if (enc1.isClick()) Serial.println("Click"); // отпускание кнопки (+ дебаунс)
|
||
//if (enc1.isRelease()) Serial.println("Release"); // то же самое, что isClick
|
||
|
||
if (enc1.isHolded()) Serial.println("Holded"); // если была удержана и энк не поворачивался
|
||
//if (enc1.isHold()) Serial.println("Hold"); // возвращает состояние кнопки
|
||
}
|