#include "RotaryEncoder.h" // библиотека для энкодера
#include <Servo.h> // библиотека для сервопривода
RotaryEncoder encoder(10, 9); // пины подключение энкодера (DT, CLK)
Servo servo;
// задаем шаг энкодера, макс./мин. значение поворота
#define STEPS 10
#define POSMIN 0
#define POSMAX 180
static int pos = 0; // задаем начальное положение энкодера
int lastPos, newPos;
void setup() {
servo.attach(3); // пин для подключения серво
Serial.begin(9600);
Serial.print("Начальная позиция: "); Serial.println(pos);
//encoder.setPosition(10 / STEPS);
encoder.setPosition(0);
}
void loop() {
// проверяем положение ручки энкодера
encoder.tick();
newPos = encoder.getPosition() * STEPS;
if (newPos < POSMIN) {
encoder.setPosition(POSMIN / STEPS);
newPos = POSMIN;
}
else if (newPos > POSMAX) {
encoder.setPosition(POSMAX / STEPS);
newPos = POSMAX;
}
// если положение изменилось - выводим на монитор
if (lastPos != newPos) {
Serial.print("Текущая позиция: "); Serial.println(newPos);
lastPos = newPos;
}
// устанавливаем угол поворота микросерво
servo.write(lastPos);
// проверяем кнопки
}