roboforum.ru

Технический форум по робототехнике.


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

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

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

Сообщение ursus » 25 авг 2018, 19:36

Приветствую, товарищи.
Пытаюсь собрать регулятор громкости на ардуино про микро и энкодере.
Нашел вот такой скетч.
Код: Выделить всёРазвернуть
#include <HID-Project.h>
#include <HID-Settings.h>

#include <Encoder.h>
Encoder myEnc(3,2);
const int pinLed = LED_BUILTIN;
const int pinButton = 12;
int bulbPin = 9;
int oldPosition  = -999;
boolean muted = 0;
int safePosition = 0;
int volume = 0;
int oldVolume = 0;
int actualVolume = 0;
void setup() {
  pinMode(7, INPUT);
  pinMode(8, INPUT);
  pinMode(pinLed, OUTPUT);
  pinMode(pinButton, INPUT_PULLUP);
Serial.begin(9600);
  Consumer.begin();
  delay(1000);
  for(int i = 50; i > 0; i--){
  Consumer.write(MEDIA_VOLUME_DOWN);
  delay(1);
  }
}

void loop() {
  int newPosition = myEnc.read();
  if (newPosition != oldPosition) {
    safePosition = newPosition;
    if(newPosition < 0){
      safePosition = 0;
      myEnc.write(safePosition);
    }
    if(newPosition > 400){
      safePosition = 400;
      myEnc.write(safePosition);
    }
    oldPosition = safePosition;
    volume = safePosition / 4;
    volume = volume / 2;
    noInterrupts(); 
    Serial.print("calc volume: ");
    Serial.print(volume);
    Serial.print(" act volume: ");
    Serial.print(actualVolume);
    Serial.println("");
    changeVolume();
    interrupts();
   
  }
 
  if (!digitalRead(pinButton)) {
   
    Consumer.write(MEDIA_VOLUME_MUTE);
    muted = !muted;
    delay(300);
  }
  if(muted){
    analogWrite(bulbPin, 0);
  }
  else{
    analogWrite(bulbPin, map(volume, 0, 100, 0, 255));
  }
 



}

void changeVolume(){
if (volume != oldVolume) {
    if(volume > oldVolume){
      //delay(100);
      Consumer.write(MEDIA_VOLUME_UP);
      actualVolume = actualVolume + 2;
      oldVolume = volume;
    }
    else{
      //delay(100);
      Consumer.write(MEDIA_VOLUME_DOWN);
      actualVolume = actualVolume - 2;
      oldVolume = volume;
    }
  }
}

Схемы подключения энкодера не приложено. Кое как подключил. Даже работает регулировка громкости. Но вот отключение звука не работает. Не пойму куда подключать пин клика. Громкость нормально регулируется только если пин клика подключен к выводу 2 на ардуине. На других выводах работает криво. Подскажите, пожалуйста, что я делаю не так?
И еще один вопрос. Как поменять направление вращения энкодера? Сейчас он по часовой убавляет, а против прибавляет. По хорошему надо наоборот.

Подключен энкодер вот по этой схеме.
1458887444_encoder_volume_control.jpg
ZAV MAX Pro V1. ZAV mini.
ursus
 
Сообщения: 267
Зарегистрирован: 27 авг 2014, 02:11
Откуда: Тольятти
ФИО: Михаил

Re: USB Регулятор громкости на ардуино про микро

Сообщение setar » 25 авг 2018, 20:43

клик это просто замыкатель.
соответственно есть два варианта работы:
1. один контакт вешаем на массу а второй подтягиваем на ноге входа, активным (признаком срабатывания) будет низкий уровень
2. тот же контакт подключаем на VCC через резистор, и детектируем неподтянутую ногу по высокому уровню

я бы выкинул нафиг все три сопротивления как лишние сущности и все три входа A, B , SW сделал по первому варианту.
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: USB Регулятор громкости на ардуино про микро

Сообщение ursus » 25 авг 2018, 21:35

Выкинуть не могу. Это модуль готовый. Нет могу конечно, но работает и так.
То что клик замыкатель это я понимаю. И вроде бы даже понимаю про первый пункт. Про второй не понимаю, но да ладно. Самое главное я не понимаю что с этим сделать в скетче.
При нынешнем подключении в мониторе порта вообще нет реакции на нажатие клика. Я так понимаю не правильно подключен пин. Как найти правильный пин в скетче? const int pinButton = 12; Пытался менять пин здесь. Начинает выключать звук поворотом, а на клик по прежнему нет реакции.
ZAV MAX Pro V1. ZAV mini.
ursus
 
Сообщения: 267
Зарегистрирован: 27 авг 2014, 02:11
Откуда: Тольятти
ФИО: Михаил

Re: USB Регулятор громкости на ардуино про микро

Сообщение sergey2x » 25 авг 2018, 23:01

pinButton = 16 не?
sergey2x
 
Сообщения: 235
Зарегистрирован: 14 янв 2015, 16:18
Откуда: СПб

Re: USB Регулятор громкости на ардуино про микро

Сообщение ursus » 26 авг 2018, 04:32

Вот ведь. Меня почему то переклинило, что clk на модуле энкодера это кнопка. И я даже не рассматривал другие варианты. Рукалицо... Работает теперь все отлично. Спасибо.
Осталось понять как инвертировать вращение энкодера.
ZAV MAX Pro V1. ZAV mini.
ursus
 
Сообщения: 267
Зарегистрирован: 27 авг 2014, 02:11
Откуда: Тольятти
ФИО: Михаил

Re: USB Регулятор громкости на ардуино про микро

Сообщение setar » 26 авг 2018, 09:42

попробуй
Encoder myEnc(2,3);
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: USB Регулятор громкости на ардуино про микро

Сообщение ursus » 26 авг 2018, 16:24

Шикарно! Благодарю! Все работает как надо :)

Добавлено спустя 3 часа 50 минут 18 секунд:
Возник тут еще один вопрос.
У данного регулятора есть функция регулировки подсветки пропорционально громкости. На 9 ногу приходит шим с напряжением от 0 до 2в. Т.е. если подключить один светодиод то все будет нормально работать. Но как подключить несколько светодиодов? Если надо просто включить выключить, тогда понятно, ставишь транзистор и на него уже вешаешь светодиоды сколько хочешь. Но при таком варианте не будет управления яркостью. А как сохранить управление яркостью и увеличить максимальный допустимый ток?
ZAV MAX Pro V1. ZAV mini.
ursus
 
Сообщения: 267
Зарегистрирован: 27 авг 2014, 02:11
Откуда: Тольятти
ФИО: Михаил

Re: USB Регулятор громкости на ардуино про микро

Сообщение Dmitry__ » 26 авг 2018, 16:29

ursus писал(а): Но при таком варианте не будет управления яркостью.

Почему не будет? Все будет :)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: USB Регулятор громкости на ардуино про микро

Сообщение ursus » 26 авг 2018, 17:03

Да разобрался, спасибо.
ZAV MAX Pro V1. ZAV mini.
ursus
 
Сообщения: 267
Зарегистрирован: 27 авг 2014, 02:11
Откуда: Тольятти
ФИО: Михаил

Re: USB Регулятор громкости на ардуино про микро

Сообщение RAV1962 » 11 дек 2019, 21:48

Подскажите, плиз.
А как одновременно с изменением звука в системе управлять громкостью в Foobar 2000?
KEYCODE_MOD_LEFT_ALT, KEYCODE_9
KEYCODE_MOD_LEFT_ALT, KEYCODE_0
Он работает по ASIO, в обход микшера Windows7. Спасибо.
RAV1962
 
Сообщения: 2
Зарегистрирован: 11 дек 2019, 20:14

Re: USB Регулятор громкости на ардуино про микро

Сообщение Angel71 » 12 дек 2019, 22:35

http://wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Keyboard_Shortcuts
There are no global keyboard shortcuts among the predefined keys. One can easily assign global status to one or more of these keys. Good candidates for global assignment are the volume-controling keys: Num + and Num −. Global assignments should be made carefully as they may interfere with your ability to use other applications.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: USB Регулятор громкости на ардуино про микро

Сообщение RAV1962 » 12 дек 2019, 23:22

Спасибо. И, как это добавить в код?
RAV1962
 
Сообщения: 2
Зарегистрирован: 11 дек 2019, 20:14

Re: USB Регулятор громкости на ардуино про микро

Сообщение Angel71 » 13 дек 2019, 10:39

в код примерно так:
Код: Выделить всёРазвернуть
//wiki.hydrogenaud.io/index.php?title=Foobar2000:Preferences:Keyboard_Shortcuts
/*There are no global keyboard shortcuts among the predefined keys. One can easily assign global status to one or more of these keys. Good candidates for global assignment are the volume-controling keys: Num + and Num −. Global assignments should be made carefully as they may interfere with your ability to use other applications.*/

только зачем оно в коде, английский текст дешифровать будете? не мучайтесь, есть же онлайн переводчики, словари и учебники для изучающих языки. ладно, хорошо, знаю один секретный переводчик, сейчас переведу.
Среди предопределенных клавиш нет глобальных сочетаний клавиш. Можно легко назначить глобальный статус одному или нескольким из этих ключей. Хорошими кандидатами для глобального назначения являются клавиши регулировки громкости: Num + и Num -. Глобальные назначения должны выполняться осторожно, поскольку они могут помешать вам использовать другие приложения.

1) читаем, думаем
2) если нужно, повторить пункт 1
3) попробовать настроить в программе такое же сочетание кнопок, как и для винды
4) если не получится (хз, какие она сочетания может назначать), тогда в прошивке дополнительно добавить отправку какого-нибудь сочетания, которое можно назначить в этой фуубар
5) если до этого пункта ничего не получилось, описать более-менее нормально (с учётом, что скорей всего с этой фуубар врядли работали. туда же их документацию и прочее по этой программе): что пробовали сделать, что именно не получается, если нужно ссылочки и т.д.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1


Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron