USB HID мультимедиа клавиатура под андроид
- Войдите на сайт для отправки комментариев
Ср, 15/04/2015 - 23:10
Есть Ардуино про микро (Mega32U4).
Хочу сделать на её основе USB HID клавиатуру под андроид для регулировки громкости по средствам энкодера и запуск нескольких программ типа Navitel, MX Player, какой нибудь музыкальный плеер и кнопки следующая, предыдущая, пауза, воспроизведение.
Может есть у кого готовое решение (или его части). Буду очень признателен, а то я в этом практически не разбираюсь.
Ищите в инете ардуиноподобную плату с названием "Digispark" . Это типа ардуино на Attiny85. Там есть примеры клавиатуры и мыши.
brokly, хмм .. а зачем Т.С. искать диджиспарк, если в ардуине для микры есть готовая встроенная библа? http://www.arduino.cc/en/Reference/MouseKeyboard
Ну пусть тогда не ищет :)
как раз сегодня закончил делать геймпад ,
делал тоже на micro. все отлично arduinka автоматически устанавливаеться на любой ком без дополнительных драйверов.
правда делал не с знкодером , а просто на кнопках.
частично помогла инфа с этого сайта
http://ivan.bmstu.ru/avia_site/r_main/HWR/ADDS/JCUSB/jcusb.htm
а вот и сайт с бесценным кодом который был взят за основу
http://arduino-ua.com/art3-Podkluchenie_matrichnoi_klaviatyri_k_Arduin
А как пропихнуть команду, например, квеличить громкость. Где вообще можно почитать про команды клавиатуры?
ali_vlad, вы удивитесь, но всё на том-же сайте ардуино http://www.arduino.cc/en/Reference/KeyboardModifiers
ali_vlad, вы удивитесь, но всё на том-же сайте ардуино http://www.arduino.cc/en/Reference/KeyboardModifiers
Смотрел, то, что мне нужно не нашел.
Мне надо следующее:
- громкость+
- громкость-
- mute
- play
- pause
- следующая композиция
- предыдущая композиция
- стоп
А еще очень интересувет как запустить андроид-приложение, например Navitel.
ali_vlad, http://stefanjones.ca/blog/arduino-leonardo-remote-multimedia-keys/
,
После изменения файлов при любой компиляции вылазиют ошибки
ali_vlad, я брал упомянутые в статье файлы из их архива
Там-же в статье где-то всё перечислено. Мой рабочий скетч для регулировки громкости энкодером. Кнопка на энкодере -"MUTE".
Я же писал в самом начале, что я в этом 0. Это слишком сложно для меня. Неуже ли нер решения по-проще?. Да и ругается на отсутствие чего-то при компиляции...
На сколько я понял есть Keyboard.press(). Он может эмулировать нажатие клавиш. Только информации по нему, кроме примеров, взятых с сайта нет.
Keyboard.press(ГРОМКОСТЬ_УВЕЛИЧИТЬ);
Как это должно правильно выглядеть?
ali_vlad, проще уже некуда. Я не пойму, что тут может быть непонятным. По ссылке на канадский сайт есть полная исчерпывающая информация. К тому же я дал вам свой рабочий скетч, неужели вам не видно какой командой в нём увеличивается громкость?
Вот это всё для меня непонятно.
ali_vlad, если вы использовали именно те 2 файла из архива, и мой скетч, то наиболее вероятной причиной ошибок может быть конфликт версий arduino ide. У меня версия 1.05-r2 с ней проблем нет.
ps: кстати когда вставляете длинный код, то в меню "дополнительно" выбирайте сворачивать код по-умолчанию.
У меня последняя версия 1.6.хх
Залил 1,05. Залил скетч. Громкость стермится к максимуму постоянно. Кнопка муте соответственно не работает.
ali_vlad, . Энкодер с подтяжкой к питанию? Конденсаторы ставили от выводов энкодера на общий?. Емкость.. где-то от 1...до 10 nF. Кнопка у меня работала и без конденсатора, но в принципе тоже нужен 10..100nF .
Я же писал, что я начинающий, всё это для меня пока сложно, а тут такое...
То ли контроллер глючный, то ли лыжи не едут. После заливки скетча через разные промежутки времени контроллер зависал и одновременно отваливалась родная клава с мышкой. Потом он вообще перестал прошиваться.
Скетч заливал такой
ali_vlad, да, похоже какие-то проблемы с аппаратной частью. Я честно говоря долго не гонял этот регулятор, побаловался минут 10 и разобрал. Но за это время ничего не висло..
Приедет новый контроллер - обязательно попробую. А разница в версии arduino ide есть?
ali_vlad, этот скетч стандартный, лежит в комплекте с примерами софта от тинси. Ардуино микро собрана на таком же чипе что и тинси 2.0, но совместимы ли они программно для среды IDE -я лично не уверен. Как минимум нужно поставить полный пакет софта тинси, и попробывать прошить, выбрав плату тинси2.0. разумеется нет гарантии, что бутлоадер ардуино микро тотчас не убъётся :-)
ali_vlad, этот скетч стандартный, лежит в комплекте с примерами софта от тинси. Ардуино микро собрана на таком же чипе что и тинси 2.0, но совместимы ли они программно для среды IDE -я лично не уверен. Как минимум нужно поставить полный пакет софта тинси, и попробывать прошить, выбрав плату тинси2.0. разумеется нет гарантии, что бутлоадер ардуино микро тотчас не убъётся :-)
поделюсь опытом может кому поможет.
работал в arduino ide 1.6.3 сверху утановлено teensy duino.
проверял на arduino pro mikro и teensy 2.0
практически все скетчи которые подходят на ардуино подходят и на тинси. единственное это нужно выбрать правильный режим работы тинси (в инструментах)
также большинство скетчей от тинси подходят и ардуине.
кстати ничего не убиваеться и не горит. если в настройках вы не указали правильную плату, IDE либо отказываеться прошивать плату либо зависает.
так что - открываете скетч выставляете в настройках свою плату . если компилируеться значит и зальеться и в большинстве случаев работает
ali_vlad, этот скетч стандартный, лежит в комплекте с примерами софта от тинси. Ардуино микро собрана на таком же чипе что и тинси 2.0, но совместимы ли они программно для среды IDE -я лично не уверен. Как минимум нужно поставить полный пакет софта тинси, и попробывать прошить, выбрав плату тинси2.0. разумеется нет гарантии, что бутлоадер ардуино микро тотчас не убъётся :-)
поделюсь опытом может кому поможет.
работал в arduino ide 1.6.3 сверху утановлено teensy duino.
проверял на arduino pro mikro и teensy 2.0
практически все скетчи которые подходят на ардуино подходят и на тинси. единственное это нужно выбрать правильный режим работы тинси (в инструментах)
также большинство скетчей от тинси подходят и ардуине.
кстати ничего не убиваеться и не горит. если в настройках вы не указали правильную плату, IDE либо отказываеться прошивать плату либо зависает.
так что - открываете скетч выставляете в настройках свою плату . если компилируеться значит и зальеться и в большинстве случаев работает
Пытался накатить тенсидуино. Застрял на выборе папки с ардуино
по справке вылезло:
Слежу за темой, но так и не увидел ни где готвого решения, помогите пожалйуста подключить к ардуине просто энкодер, что бы она определялась как ЮСБ клава и просто регулировала VOL_UP и VOL_DOWN
есть же что-то типа такого
pinMode (10,INPUT);
pinMode (11,INPUT);
void setup()
{
Keyboard.begin();
}
void loop()
{ data=pinRead(PinMode 10);
{ Keyboard.press(VOL_UP);
{data=pinRead(PinMode 11);
Keyboard.press(VOL_DOWN);
}
обновите оболочку ардуино и потом установите тинсидуино поверх.
оболочки тинси и ардуино должны быть совместимы.
dimax, выложите, пожалуйста,"исправленную" версию редактора arduino (я про remote), а то у меня чего-то не получается.
TransF, что значит нет готового решения? Сообщения #8, #11, #13 готовое решение для Arduino Micro / Leonardo. Есть ещё для дижиспарка готовые библиотеки с примером. Для прочих ардуин эмуляторы именно мультимедийных клавиш пока не попадались.
ali_vlad, если вы про вариант с софтом от тинси - то я этот вариант не проверял. Если про патч обычной ардуины -то нужно скачать проверенную версию 1.05, и поменять 2 файла, о чём тут уже писал ранее. Готового набора пропатченной ардуины у меня уже нет, стёр во время экспериментов.
Немного модифицировал чужой код. Медленно вращаю - всё нормально регулируется правильно. Быстро вращаю - бардак творится.
11го вывода у меня нет есть 2-10 и 14-16. Громкость регулирует только в одну сторону. При нажатии на кнопку не обрабатывается дребезг контактов
TransF, что значит нет готового решения? Сообщения #8, #11, #13 готовое решение для Arduino Micro / Leonardo. Есть ещё для дижиспарка готовые библиотеки с примером. Для прочих ардуин эмуляторы именно мультимедийных клавиш пока не попадались.
Готовые примеры из перечисленных сообщееий почему то у меня так и не заработали, хотя у меня именно Леонардо микро.
Несколько раз пробовал 13 сообщение, может я что-то не так подключил, уточните пожалуйста подключение.
ali_vlad, что значит нет вывода 11 ? Я распиновку давал для стандартной платы. Это порты контроллера mega32u4 PB6, PB7
TransF, а что может быть непонятным с подключением? Схема стандартная, примерно как тут:
Выводы ардуины микро /леонардо d10, d11. Конденсаторы (для варианта с внешними резисторами, распаянными на энкодере) я применял 0,1мкф. Проблем никаких не было.
Видимо у меня китайская ардуина
http://www.ebay.com/itm/New-Pro-Micro-ATmega32U4-5V-16MHz-Replace-ATmega328-Arduino-Pro-Mini-/140972980117?hash=item20d2a4f795
там нет 11го вывода
Видимо у меня китайская ардуина
http://www.ebay.com/itm/New-Pro-Micro-ATmega32U4-5V-16MHz-Replace-ATmega328-Arduino-Pro-Mini-/140972980117?hash=item20d2a4f795
там нет 11го вывода
Ну не шмогла :)
ali_vlad, мой скетч нетрудно переделать под любые PCINT выводы. Для контроллера 32u4 это выводы порта "B" PB0-PB7. ( соответвующие им ардуиновские ноги будут: D14, D15, D16, D17, D8, D9, D10, D11) Там простое математическое сложение "веса" битов. Либо используйте универсальные обработчики энкодеров, но результат будет хуже. Т.к. мой скетч работает через прерывание, и считывает одновременно оба бита данных с энкодера, чем собственно и повышается качество и скорость обработки.
Что-то туплю с утра. Ткните меня носом.
А лучше поясните в коде, что к какой ноге относится, а то я чувствую, что не въеду. Не могу найти в loop{}, считывание состояний 10 и 11 ног.
Уточните, пожалуйста емкости конденсаторов, а то в соседней ветке читаю, несколько разных утверждений и каждый доказывает, что он прав.
Так же хотелось бы уточнить еще одинмомент. Делитель из резисторов и кондер. Одни советуют кондер в середину делителя полключать (http://arduino.ru/forum/apparatnye-voprosy/ispolzuem-enkoder?page=2#comment-121532), другие "к ноге" ардуины (http://arduino.ru/forum/apparatnye-voprosy/ispolzuem-enkoder?page=2#comment-121571). Как лучше
ali_vlad, если хотите во всём разобраться, то почитайте про то, как работает энкодер. Потом почитайте про прерывания PCINT, потом в даташите на контроллер (страница3) посмотрите на каких ногах есть PCINT. Потом по схеме вашей ардуины выберите нужные ноги. Потом по аналогии переделать скетч на другие выводы. Ну или напишите на какие ноги из перечисленных мною в #44 хотите повесить, я помогу.
По поводу резисторов и конденсаторов - все варианты должны по идее работать, но схема по второй ссылке на мой взгляд более правильная. Какую функцию выполняют резисторы в схеме из первой ссылки я тоже не могу объяснить. Лично я всегда подключаю по схеме из #41, ёмкости использовал 0,01..0,1 мкф.
8, 9 энкодер. 7 Так и останется "mute".
И еще небольшая просьба. Как сделать, чтобы после первого нажатия на кнопку (вывод 7) она не опрашивалась заданное время (0,5 - 1 сек). А то при нажатии идет включение и выключение звука со страшной скоростью. Deley не хотелось бы использовать.
ali_vlad, вот поправил на ноги 8 и 9. Не проверял конечно, но вроде проблем быть не должно.
По поводу кнопки MUTE -на неё тоже нужно конденсатор, лучше не менее 0,1мкф. У меня никаких проблем не было.
Странно как-то. Если вращать ручку, не важно в какую сторону, то первым щелчком громкость изменяется как-бы на 1 шаг, потом на двойной шаг. Сильно замено на ведроиде. Родными кнопками от одного крайнего до другого - 15 нажатий, энкодером - 8 щелчков. На компе то же самое, одного крайнего до другого - 50 нажатий, энкодером - 25 щелчков. Может кондеры не той емкости или резисторы не того сопротивления? Читал про триггеры. Отечественныех микросхем с готовыми триггерами, по моему нет. Нужно схему мутить. Импотрные наверняка есть. Типа так: 1 - вход, 2 - выход, и т.д. но не знаю их названий. Может есть готовые микросхеды - интидребезг?
Резисторы 10к на {+}. Кондеры 0,1 мкФ на {-}.
Странно как-то. Если вращать ручку, не важно в какую сторону, то первым щелчком громкость изменяется как-бы на 1 шаг, потом на двойной шаг. Сильно замено на ведроиде. Родными кнопками от одного крайнего до другого - 15 нажатий, энкодером - 8 щелчков. На компе то же самое, одного крайнего до другого - 50 нажатий, энкодером - 25 щелчков. Может кондеры не той емкости или резисторы не того сопротивления? Читал про триггеры. Отечественныех микросхем с готовыми триггерами, по моему нет. Нужно схему мутить. Импотрные наверняка есть. Типа так: 1 - вход, 2 - выход, и т.д. но не знаю их названий. Может есть готовые микросхеды - интидребезг?
Резисторы 10к на {+}. Кондеры 0,1 мкФ на {-}.
энкодер конструктивно может давать один механический щелчок на два сигнала.
у меня вообще энкодеры дают четыре сигнала на один механический щелчок.
попробуй поставить программный счётчик сигналов на экнодер, что бы проверить, так это или нет.