Давно хотел провести эксперимент с энкодером и прикрутить его к Arduino Nano
Но все никак не удавалось его приобрести .
Вчера разобрал старую убитую мышку и выпаял из нее Энкодер для экспериментов. Все оказалось достаточно просто . Написал скетч для cArduino / Arduino, взял уже готовую программу для ПК написанную для другого проекта и через 15 мин. я уже регулировал громкость при помощи энкодера.
Недавно приобрел энкодер с нажатием и подправил Sketch под него, теперь можно назначать вращение энкодера с нажатием и без него или назначать комбинацию клавишь только на нажатие
Программу скачиваем здесь
Код для Arduino Nano:
	PHP код:
	
#define encoder0PinA  2  
#define encoder0PinB  3 
#define encoder0PinC  4
byte bytes[2]={0,7} ;   
void setup()   
{     
  pinMode(encoder0PinA, INPUT);   
  digitalWrite(encoder0PinA, HIGH);     // подключить подтягивающий резистор  
  pinMode(encoder0PinB, INPUT);   
  digitalWrite(encoder0PinB, HIGH);    // подключить подтягивающий резистор 
  pinMode(encoder0PinC, INPUT);   
  digitalWrite(encoder0PinC, HIGH);    // подключить подтягивающий резистор  
  
  attachInterrupt(0, doEncoderA, FALLING);  // настроить прерывание interrupt 0 на pin 2  
  attachInterrupt(1, doEncoderB, FALLING);  // настроить прерывание interrupt 0 на pin 3  
  Serial.begin (115200);  
}   
void loop()  
{    
 if(digitalRead(encoder0PinC)==LOW) 
   {
     bytes[1]=8;
      Serial.write( bytes,2);  
      while(digitalRead(encoder0PinC)==LOW){delay(50);}
       bytes[1]=7; 
   }
}  
// обработка прерывания  
void doEncoderA()  
{  
  if(digitalRead(encoder0PinB)==HIGH){bytes[0]=25;}else{bytes[0]=5;}   
  Serial.write( bytes,2); 
  bytes[0]=0;
}    
// обработка прерывания  
void doEncoderB()  
{  
    if(digitalRead(encoder0PinA)==HIGH){bytes[0]=5;}else{bytes[0]=25;}  
    Serial.write( bytes,2); 
    bytes[0]=0;    
}