#define CLK 6
#define DT 5
#define SW 4
#define modeMax = 5; //количество режимов
#include "GyverEncoder.h"
#include <Servo.h>
Encoder enc1(CLK, DT, SW);
int angle = 1;
byte menu = 1;
byte mode = 0;
byte modecur;
Servo myservo1;
void setup() {
modecur=mode;
Serial.begin(9600);
enc1.setTickMode(AUTO);
enc1.setType(TYPE2);
Serial.println("Go-------->>>");
myservo1.attach(7);
myservo1.write(0);
}
void loop() {
// enc1.tick(); // не нужна, в этом режиме (AUTO) она входит в каждую функцию!
//if (enc1.isTurn()) { // если был совершён поворот (индикатор поворота в любую сторону)
// ваш код
//}
if (enc1.isRight()) {
if (++mode >= modeMax) mode = 0;
Serial.println(mode);
}
if (enc1.isLeft()) {
if (--mode >= 0) mode = modeMax;
Serial.println(mode);
}
/*
if (enc1.isRight()) {
angle++;
Serial.println(angle);
} // если был поворот
if (enc1.isLeft()){
Serial.println(angle);
angle--;
}
*/
//if (enc1.isRightH()) Serial.println("Right holded"); // если было удержание + поворот
// if (enc1.isLeftH()) Serial.println("Left holded");
// if (enc1.isPress()) Serial.println("Press"); // нажатие на кнопку (+ дебаунс)
// if (enc1.isRelease()) Serial.println("Release"); // отпускание кнопки (+ дебаунс)
// if (enc1.isHolded()) Serial.println("Holded"); // если была удержана и
if (enc1.isClick()){myservo1.write(angle);
Serial.println("Click"); }
if (enc1.isDouble()) Serial.println("Double");
/*switch (mode) {
case 0: task_0();
break;
case 1: task_1();
break;
case 2: task_2();
break;
case 3: task_3();
break;
case 4: task_4();
break;
}*/
}
// наши задачи
void task_0() {
Serial.println("Task 0");
}
void task_1() {
Serial.println("Task 1");
}
void task_2() {
Serial.println("Task 2");
}
void task_3() {
Serial.println("Task 3");
}
void task_4() {
Serial.println("Task 4");
}
void Modew() {
Serial.println("Current Mode");
}