Цепляем к Freeduino ползунковые резисторы, получаем регулятор громкости.

источник            <<<назад

Зашел на днях в радиомагазин, увидел там длинные ползунковые переменные резисторы, купил 3 штуки, чтобы реализовать давнюю затею - регулятор громкости для компьютера.
Получилось вот так:

Реализация проста как две копейки - собираем на переменных резисторах делители напряжения в нужном количестве. Сопротивления можно брать в широком диапазоне: от 470Ом до 500кОм и даже шире. У меня стоят на 330к. Со стороны Arduino программа измеряет напряжение на входах, и если обнаруживает изменение, шлет новое значение вместе с номером канала в компьютер. Со стороны ПК программа открывает порт, и по приходу данных меняет громкость на соответствующей линии Вашей звуковой карты.
Таких резисторов можно до 6 штук подключить к Arduino/Freeduino без особых проблем, если нужно больше, можно попробовать пару альтернативных вариантов подключения.
Как обычно выкладываю все исходники, а также бинарники, и схему (если ее так можно назвать :)).
Исходники + бинарники

Схема подключения:



К программе есть небольшое описание.
Исходники старался писать простые и понятные. С регулированием громкости под виндами сам детально не разбирался - использовал чью-то библиотеку (еще давно, когда сам был фидошником, знал что такое ZMH, и регулярно посещал пойнтовки кто-то мне ее по нетмылу прислал).
Еще есть небольшое видео с демонстрацией работы:
http://www.youtube.com/watch?v=f-LLXNQuRVY

файл reame.txt
SndVolduino v0.1b
http://arduino-ru.blogspot.com/
http://sites.google.com/site/giordanofilippobruno/sndvolduino
 
Небольшой проект SndVolduino - управление громкостью звука в Windows с помощью
переменных резисторов, подключенных к Arduino/Freeduino.
 
Использовать так:
SndVolduino.exe <COM-порт> <Линия0> [Линия1] [Линия2] [Линия3] [Линия4] [Линия5]
где COM-порт - это нечто вроде "COMn" или "\\.\COMnn" (для портов больше COM9).
Линия[0..5] - номер линии Вашей системы, соответствующий данному каналу АЦП Arduino.
Если какой-то канал АЦП обрабатывать не нужно, пишите там "x"
Номер линии можно узнать с помощью MixerEnum.exe.
 
Примеры вызова:
SndVolduino.exe COM3 1 2 3
Будут измеряться значения с каналов АЦП 0, 1, 2 и соответственно измеренным значениям
будет изменяться громкость линий 1, 2, 3 соответственно.
Arduino висит на порту COM3.
 
SndVolduino.exe \\.\COM13 x x x 3 2 1
Будут измеряться значения с каналов АЦП 3, 4, 5 и соответственно измеренным значениям
будет изменяться громкость линий 3, 2, 1 соответственно.
Arduino висит на порту COM13.
 
Автор - Джордано Бруно (GiordanoFilippoBruno на домене gmail.com)
Использована библиотека для изменения громкости от неизвестного фидошника
и библиотека разбора командной строки от Eric Tetz
http://www.codeguru.com/cpp/w-p/win32/article.php/c1427.
 
Программа для PC разрабатывалась в среде Dev-CPP, но с минимальными
трудозатратами ее можно скомпилировать любым вменяемым компилятором.
 
Буду рад Вашим комментариям и изменениям в программе.