Началось всё со старого усилителя подключённого к ПК, на котором отсутствовали регулировки громкости. Приходилось регулировать громкость на самом компьютере при помощи мышки или мультимедийной клавиатуры, что не совсем удобно. Вот и пришла идея сделать отдельный регулятор подключаемый по USB. Как раз без дела лежали Arduino pro micro и модуль энкодера.
Схема подключения:
Перед компиляцией копируем библиотеку 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);
}
}
После установил всё это дело в корпус и положил на столе, очень удобно:
Скачать скетч:
Скачать библиотеку энкодера для arduino: