Вот так верно?
При смене сигнала на энкодере(D2, D3) подключается либо D4(High) через резистор 680ом, либо D5 - 330ом.
Вот только, правильно ли я провел схемнотехническую имититацию нажатия резистивной кнопки не знаю.
Код:
#define VolUp 4
#define VolDown 5
#define encoder0PinA 2
#define encoder0PinB 3
void setup()
{
pinMode(encoder0PinA, INPUT);
digitalWrite(encoder0PinA, HIGH); // подключить подтягивающий резистор
pinMode(encoder0PinB, INPUT);
digitalWrite(encoder0PinB, HIGH); // подключить подтягивающий резистор
attachInterrupt(0, doEncoderA, FALLING); // настроить прерывание interrupt 0 на pin 2
attachInterrupt(1, doEncoderB, FALLING); // настроить прерывание interrupt 0 на pin 3
pinMode(VolUp, OUTPUT);
pinMode(VolDown, OUTPUT);
Serial.begin (115200);
}
void loop()
{
//digitalWrite(VolDown , HIGH);
}
// обработка прерывания
void doEncoderA()
{
if(digitalRead(encoder0PinB)==HIGH){Volume(1);}
}
// обработка прерывания
void doEncoderB()
{
if(digitalRead(encoder0PinA)==HIGH){Volume(0);}
}
void Volume(byte updown)
{
Serial.println(updown);
if (updown==1) {digitalWrite(VolUp , HIGH);}
else {digitalWrite(VolDown , HIGH);}
delay(200);
digitalWrite(VolUp , LOW);
digitalWrite(VolDown , LOW);
}