⚙️Разберём 3 способа читать энкодеры на ESP32 Подойдёт для роботов, тележек, манипуляторов и всего, что крутится 🙂 1. Простой опрос порта Подходит для низких скоростей или когда точность не критична. Плюсы: просто Минусы: легко потерять импульсы на быстрых вращениях const int ENC_PIN = 4; int pulses = 0; int lastState = 0; void setup() { pinMode(ENC_PIN, INPUT); lastState = digitalRead(ENC_PIN); } void loop() { int s = digitalRead(ENC_PIN); if (s != lastState) { pulses++; lastState = s; } } 2. Прерывания (ISR) Уже хорошо для быстрых энкодеров. ESP32 умеет работать с прерываниями очень быстро. Плюсы: точнее, чем просто чтение Минусы: опасность дребезга, нужно писать ISR аккуратно const int ENC_PIN = 4; volatile long pulses = 0; void IRAM_ATTR encISR() { pulses++; } void setup() { pinMode(ENC_PIN, INPUT_PULLUP); attachInterrupt(ENC_PIN, encISR, CHANGE); // RISING/ FALLING / CHANGE } void loop() { long p = pulses; // читаем копию } 🔹 3. Аппаратный счётчик — PCNT (Pulse