Регулятор громкости на Arduino и энкодере

Началось всё со старого усилителя подключённого к ПК, на котором отсутствовали регулировки громкости. Приходилось регулировать громкость на самом компьютере при помощи мышки или мультимедийной клавиатуры, что не совсем удобно. Вот и пришла идея сделать отдельный регулятор подключаемый по USB. Как раз без дела лежали Arduino pro micro и модуль энкодера.

Регулятор громкости на Arduino и энкодере


Регулятор громкости на Arduino и энкодере


Схема подключения:
Регулятор громкости на Arduino и энкодере
Регулятор громкости на Arduino и энкодере


Перед компиляцией копируем библиотеку Encoder в Arduino(C:\Program Files\Arduino\libraries).
По коду всё просто, читаем текущее значение положения энкодера и сравниваем с предыдущим, если текущее больше, то увеличиваем громкость, если меньше, то уменьшаем. Нажатие на энкодер отключает и включает звук (MUTE).


#include <Encoder.h> // The rotary encoder library http://www.pjrc.com/teensy/td_libs_Encoder.html
int accel = 1;
int c = 0 ;
// This is an acceleration factor. Use between 1 and 8 to suit how quickly the volume goes up or down.
Encoder myEnc(2, 3);
long oldPosition = 0;

void setup() {
   Keyboard.begin(); 
   //Serial.begin(9600);
}
void loop() {
  long newPosition = myEnc.read() / accel;
  if (newPosition != oldPosition) {
    if(newPosition > oldPosition) { 
    Remote.increase(); //  Увеличить громкость
    delay(50); 
    Remote.clear();   
    }
    if(newPosition < oldPosition) {  
    Remote.decrease(); 
    delay(50); 
    Remote.clear(); 
    }
    
    oldPosition = newPosition;
    //Serial.println(newPosition);
    
  }
  if (digitalRead(16) == LOW && c==0) { 
   
    Remote.mute(); 
     
    delay(10); 
    Remote.clear(); 
    c=1;  
    delay (100);
  }
  if (digitalRead(16) == HIGH && c==1) { 
    c=0;  
    delay (100);
  }
}


Скачать скетч: Encoder_volume_control.ino [979 b]
Скачать библиотеку энкодера для arduino: Encoder_lib.zip [13,64 Kb]


+ 0 -
  • laboratory
  • 0
  • 3 290

VK:

Добавить комментарий

  • Яндекс.Метрика