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

Автор: Tonich от 31-03-2016, 12:29

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


После установил всё это дело в корпус и положил на столе, очень удобно:

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

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


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

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
  • Группа: Посетители
  • ICQ:
  • Регистрация: 18.11.2016
  • Статус: Пользователь offline
  • Комментариев: 1
  • Публикаций: 0
^
hello, i am trying to compile the sketch but i get some erros

Encoder_volume_control:9: error: 'Keyboard' not found. Does your sketch include the line '#include <Keyboard.h>'?
Keyboard.begin();

^

C:\Users\AdiContakt\Desktop\Encoder_volume_control\Encoder_volume_control.i
no: In function 'void loop()':

Encoder_volume_control:16: error: 'Remote' was not declared in this scope

Remote.increase(); // ?????µ?»???‡???‚?? ???€???????????‚??

^

Encoder_volume_control:21: error: 'Remote' was not declared in this scope

Remote.decrease();

^

Encoder_volume_control:32: error: 'Remote' was not declared in this scope

Remote.mute();

^

Multiple libraries were found for "Encoder.h"
Used: C:\Users\AdiContakt\Documents\Arduino\libraries\Encoder
Not used: C:\Program Files (x86)\Arduino\libraries\Encoder
exit status 1
'Keyboard' not found. Does your sketch include the line '#include <Keyboard.h>'?


how to fix it?
  • Группа: Посетители
  • ICQ:
  • Регистрация: 15.06.2018
  • Статус: Пользователь offline
  • Комментариев: 1
  • Публикаций: 0
^
Добрый вечер! А возможно ли сделать данный девайс с подключение к ПК через блютуз? И можно ли применить плату attiny85 от Digispark для минимизации размеров? Я с ардуино на вы, поэтому буду признателен если вы поможете мне в реализации моей идеи.

Добрый вечер! А возможно ли сделать данный девайс с подключение к ПК через блютуз? И можно ли применить плату attiny85 от Digispark для минимизации размеров? Если возможно, то какая схема подключения : Ардуино нано про+блютуз модуль + энкодер. Также был бы признателен, если помогли бы со скетчем
  • RAV1962

  • 11 декабря 2019 22:49
  • Группа: Посетители
  • ICQ:
  • Регистрация: 11.12.2019
  • Статус: Пользователь offline
  • Комментариев: 1
  • Публикаций: 0
^
Добрый день.
У меня в машине установлен ПС. Пользуюсь плееров Foobar 2000.
Пытаюсь сделать USB регулятор громкости. Это мои первые шаги с Arduino. Нашел Ваш скетч.
1. При компиляции выдает ошибку:

Encoder_volume_control:2:21: error: missing terminating > character

#include <SPI.h>//

^

Encoder_volume_control:2:10: error: SPI.h>: No such file or directory

#include <SPI.h>//

^

compilation terminated.

exit status 1
missing terminating > character

2. Как сделать, что бы при увеличении системной громкости одновременно увеличивалась громкость на плеере
(KEYCODE_MOD_LEFT_ALT, KEYCODE_9),
При уменьшении системной громкости одновременно уменьшалась громкость на плеере
(KEYCODE_MOD_LEFT_ALT, KEYCODE_0)

Заранее благодарю.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.