Для своего CarPC озадачился вопросом — сделать регулятор громкости в виде ручки крутилки, как на обычных магнитолах.
Очевидное решение, это припаять переменный резистор между звуковой картой и усилком. Этот вариант исползовать не стал, все-таки неохота применять в цифровой технике аналоговые решения.
Поиск в интернете по теме выдал статью Подключение поворотного энкодера к компьютеру через USB. Читаю. Понятно откуда начинать плясать.
После прочтения статьи и анализа понимаю, что вариант передачи данных через виртуальный COM порт (CDC) мне почему-то не нравится. Решаю сделать, как предложено в конце статьи, HID устройство.
Для опытов закупаю две платы AVR-USB-MEGA16 и AVR-USB-TINY45 .
Подключаю к макеткам энкодеры в соответствии с приведенными схемами
И читаю на этом сайте(http://microsin.ru/) документацию по библиотеке V-USB и HID устройствам на ее основе. Не нравится, что для того чтобы программа на компе работала с устройством необходимо устанавливать и настраивать библиотеку libusb(что не есть удобно), но замечаю оговорку что с HID устройствам можно работать при помощи встроенной в windows hid.dll только это сложно, но мы не ищем легких путей.
Гуглим дальше. Находим , USB для AVR. Часть 1. Вводная, USB для AVR. Часть 2. HID Class на V-USB. Теперь становится понятно, как строится часть ПО хоста для взаимодействия с HID устройством.
Пытаюсь реализовать найденное. В результате выясняется, что вариант управления звуком предложенный в статье по подключению энкодера не подходит для Win7. Поэтому гуглим дальше и находим How do I change the master volume in Windows Vista
Комбинируя вышенайденное получаем Исходники . Проекты написаны с использованием AVR Studio 5.0 и Embarcadero RAD studio XE C++ Builder. Энкодер к микроконтроллеру подключается в соответствии со схемой. В варианте платы Mega16 энкодер подключается к пинам PORT A, PIN 0,1,2 (их можно менять в encoler.h), в варианте Tiny45 PORT B, PIN 3,4,1 (менять не на что).
Программа для хоста не требует установки. Достаточно запустить ее и она висит а трее. При необходимость следует выбрать аудио устройство, чью громкость она будет регулировать. Работает только на Vista и старше. При первом запуске может выдавать страшные ошибки. Не обращайте внимания, просто необходимо выбрать звуковое устройство
Позже расскажу как сделать регулятор звука, который не требует ПО на хосте. Просто воткнул в USB и все заработало.
P.S. Для подавления дребезга необходимо повесить кондеры на каждый контакт энкодера и землю
[Ссылки]
Добавить комментарий