
Сообщение от
Chip
Нет не одну, но прерываний не бывает много их всегда не хватает
А если нужно отработать нажатие на вал энкодера как на кнопку (нажал - отпустил) , функция прерывания будет вызываться только при изменении DT . Значит кнопку энкодера нужно тоже подключить к прерыванию?
PHP код:
#define CLK 4
#define DT 3
#define SW 2
long count = 0;
boolean DT_1, DT_2;
void setup() {
Serial.begin (9600);
pinMode (CLK, INPUT);
pinMode (DT, INPUT);
pinMode (SW, INPUT_PULLUP);
attachInterrupt(1, encoder, CHANGE);
attachInterrupt(0, encoderPress, CHANGE); // если обозначить новое прерывание таким способом ( выдаёт ошибку)
DT_2 = digitalRead(DT);
}
void loop() {
Serial.println(count);
}
void encoder() {
DT_1 = digitalRead(DT);
if (DT_1 != DT_2) {
if (digitalRead(CLK) != DT_1) {
count ++;
} else {
count --;
}
}
DT_2 = DT_1;
}
void encoderPress() {
if(!digitalRead(SW)) {
count += 10;
}
}