USB Multimedia клавиатура arduino pro micro
- Войдите на сайт для отправки комментариев
Добрый день. Начинаю ардуинить так сказать. Хочу сделать управление громкостью, переключение треков, в общем. для начала хочу по кнопке увеличивать громкость накидал такой скетч
Он при нажатии на кнопку зажигает светодиод и по идее должен прибавлять громкость, но что-то не выходит.... не могу понять почму :( прошу пнуть в нужном направлении... Далее в идиале хочется сделать управление планшетом с пульта через ИК приемник. Мультимеди + запуск навигашки + вкл/выкл + еще какие-нибудь приложения.
С ардуино знаком пару дней, это второй скетч после миганию светодиодом)))) сильно прошу не бить :)
Начинаю догонять немного. Насколько я правильно понял проблема заключается в том, что стандартная библиотека ардуины имеет функционал обычной клавиатуры без мультимедиа клавиш, чтобы добиться нужного эффекта от нужных кнопок нужно каким - то образом поправить библиотеку, или сделать новую... Видел в интернетах мануалы по правке USBAPI и HID в каталоге arduino/hardware/core/..../arduino. Попробовал сделать так же, затык при компиляции. Посмотрел там автор пошел через добавление нового класса remoute...
Вопрос такой, вместо этого можно ли в стандартную библиотеку просто добавить коды кнопок мультимедиаклавиатуры? Пробовал не вышло, полагаю что делаю что-то не то :( заранее спасибо за ответ.
А и еще вместо keyboard.write для передачи кода клавиши нажатой, надо использовать keyboard.press это тоже понял :). Кто может прошу помочь, заранее спасибо!
Если не там тему создал, прошу извинить и перенести. Не определился до конца сюда или в раздел с программированием :).
Во-первых, выложите код как положено - http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii - (задоно уберите ненужные, закомментированные куски - глаза разбегаются).
Во вторых объясните по строкам кода, что по Вашему он делает (или должен делать). Толком, спокйон объясните.
А там видно будет.
Прошу прощения, исправляюсь :).
#include <Keyboard.h> int button1 = 16; int ledPin = 8; //char ctrlKey = 0xaf; //переменная для кода клавиши void setup() { Keyboard.begin(); pinMode (ledPin, OUTPUT); pinMode(button1, INPUT_PULLUP); } void loop() { if(digitalRead(button1) == HIGH) { digitalWrite (ledPin, LOW); delay(0); } else { digitalWrite (ledPin, HIGH); //Keyboard.print("password!"); //набирал фразу password, сейчас не актуально delay(140); //Keyboard.press(ctrlKey); Keyboard.press(123); // передаю код нажатия клавиши delay(100); //Keyboard.releaseAll(); // это сам до конца не понимаю зачем, что с ним что без него одинаково не работает :( } }Значит смысл такой, нажимаем кнопку, должно быть действие звука, включен или выключен, уменьшение или увеличение... при этом загорается светодиод, который просто говорит о том что кнопка нажата, отпускаем кнопку светодиод тухнет... кнопка и светодиод подключены через резисторы кнопка резистор - 1 кОМ, светодиод резистор - 110 Ом.
Готовлю планшет в интеграцию в машину, хочется иметь управление мультимедиа с ИК порта, по-этому сначала пытаюсь сделать это с кнопки...
Хорошо, а теперь еще опишите что этот код по-Вашему делает, что он должен делать по-задумке и в чём сосбствнно состоит Ваша проблема.
Upd: ага, Вы уже что-то дописали. Так, а проблема-то в чём? Что-то не так срабатывает?
Пока он должен добавить громкость и зажечь светодиод при нажатии кнопки, в виде индикации что кнопка нажата...
Как написал выше готовлю планшет к интеграции в машину, хочется иметь управление мультимедиа с ИК порта, по-этому сначала пытаюсь сделать это с кнопки...
Интересует управление громкостью, переключение треков, в общем использование мультимедиа клавиатуры, клавиш которых нету в стандартной библиотеке :(... В идиале хочется еще запускать софт, но это думаю реализовать через arduino понималки типа tasker
Проблема в том, что не работает управление мультимедиа :(
Т.е. Вы хотите, что ардуина прикинулась клавиатурой и гнало компьютеру нажатия.
Тогда Вам надо сделать следующее.
1. Подключите к компьютеру честную клавиатуру, которая умеет управлять ММ и считайте скан-коды соответствующих клавиш.
2. Добавьте считанные скан коды в библиотеку и пусть Ардуина их шлёт.
Считывать скан коды умеете?
ЕвгенийП, там же не только в кодах дело. Клава должна себя при инициализации зарегистрировать как мультимедийная. Что разумееется обычная библа не делает.
ЕвгенийП, там же не только в кодах дело. Клава должна себя при инициализации зарегистрировать как мультимедийная. Что разумееется обычная библа не делает.
И как добиться нужного результата? Я уже и нагуглил скан коды, и с помощью xev выдернул те что у меня, само собой они одинаковые... а вот куда дальше копать не понимаю%)
Находил в интернетах вот такую статью http://stefanjones.ca/blog/arduino-leonardo-remote-multimedia-keys/
Пробовал делать по ней, даже склонировал с гита полностью весь каталог ардуино, результат еще хуже , при компиляции сплошные ошибки...
Т.е. получается заменить vendor ID обычной клавы на мультимедийные?%) если да тогда два вопроса, могу ли я от своей клавиатуры мультимедийной их взять, и второй вопрос где это меняется?
shcoder, статью вы нашли правильную. На форуме есть тема, в которой всё по этой статье давно обсудили.
Это тоже находил, вот и говорю что при проделки этих трюков ошибка компиляции и все :( уперся в тупик... Там еще упоминается некий энкодер... у меня простая схема, планшет - ардуина через OTG-USB и все...прошу прощения если глупость написал, до этого никогда не сталкивался с электротехникой, только вот начинаю догонять :)
shcoder, никакого тупика тут быть не может. Вы просто невнимательно делаете, или невнимательно прочли ту тему и упустили что-то важное.
Странно, вроде на несколько раз переделывал :(... попробую еще раз :(...
енкодер в моем случае это что?)
скачал архив распаковал в каталог с arduino IDE, после чего программа вообще перестала запускаться :(
а и еще там смотрю в примерах крутилки используются, у меня просто кнопка...
shcoder, никакого тупика тут быть не может. Вы просто невнимательно делаете, или невнимательно прочли ту тему и упустили что-то важное.
С Вами как-то можно связаться, icq, jabber, соц сети?
енкодер в моем случае это что?)
......
а и еще там смотрю в примерах крутилки используются
Так ото ж.
скачал версию 1.0.5. добавил код как в конце статьи http://arduino.ru/forum/programmirovanie/usb-hid-multimedia-klaviatura-pod-android?page=1
Ошибка компиляции :(
в общем в том самом последнем коде закоментил строки касающиеся енкодера и пару скоб фигруных, вроде скомпилил, это мне сказало о том что файлик и библиотека подключились нормально... теперь перехреначить надо вместо реле на кнопки так ?%)
#include <Bounce.h> #define ENCODER_DO_NOT_USE_INTERRUPTS // без прерываний. #include <Encoder.h> int button1 = 16; int ledPin = 8; //Encoder Enc_1(9, 8);//Ноги энкодера //const int pin_mute = 7;//Кнопка mute //Bounce mute = Bounce(pin_mute,5); void setup() { //pinMode(pin_mute, INPUT_PULLUP); pinMode(button1, INPUT_PULLUP); pinMode(ledPin, OUTPUT); Remote.begin(); } long old_pos = 0; void loop() { long new_pos; //Увеличение громкости //new_pos = Enc_1.read()/4; if (new_pos > old_pos) { Remote.increase(); Remote.clear(); old_pos = new_pos; } //Уменьшение громкости if (new_pos < old_pos) { Remote.decrease(); Remote.clear(); old_pos = new_pos; } //Кнопка mute //if (mute.update()){ // if (mute.read()==0){ if (digitalRead(button1) == HIGH) { digitalWrite (ledPin, LOW); delay(200); } else { digitalWrite (ledPin, HIGH); Remote.mute(); Remote.clear(); delay(500); } }Переделал на кнопку, пока в тестовом режиме только клавиша MUTE. Вроде все работает :) А ну индикацию светодиода оставил )
Код поправил
А как теперь портировать все это хозяйство на новую версию 1.6.6 ?
#include <IRremote.h> int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; bool LampState = false; //#include <Bounce.h> //#define ENCODER_DO_NOT_USE_INTERRUPTS // без прерываний. //#include <Encoder.h> int button1 = 16; int ledPin = 8; //Encoder Enc_1(9, 8);//Ноги энкодера //const int pin_mute = 7;//Кнопка mute //Bounce mute = Bounce(pin_mute,5); #define P1 0xFF009867 // Play-pause #define P2 0xFF00906F // Freq- #define P3 0xFF0040BF // Prev #define P4 0xFF00609F // vol- #define P5 0xFF0038C7 // Freq+ #define P6 0xFF00C837 // Next #define P7 0xFF0020DF // Vol+ void setup() { //pinMode(pin_mute, INPUT_PULLUP); irrecv.enableIRIn(); pinMode(button1, INPUT_PULLUP); pinMode(ledPin, OUTPUT); Remote.begin(); } //long old_pos = 0; void loop() { if (irrecv.decode(&results)) { if (results.value == P5) //Код кнопки { LampState = !LampState; if (LampState) { Remote.mute(); Remote.clear(); } } //Увеличение громкости if (results.value == P7) //Код кнопки { LampState = !LampState; if (LampState) { Remote.increase(); Remote.clear(); } } //////////////////////////////////// //Уменьшение громкости if (results.value == P4) //Код кнопки { LampState = !LampState; if (LampState) { Remote.decrease(); Remote.clear(); } } //////////////////////////////////// //Play - pause if (results.value == P1) //Код кнопки { LampState = !LampState; if (LampState) { Remote.play(); Remote.clear(); } } //////////////////////////////////// irrecv.resume(); // Получаем следующее значение } //Next track if (results.value == P6) //Код кнопки { LampState = !LampState; if (LampState) { Remote.next(); // Remote.clear(); } } //////////////////////////////////// //Previous track if (results.value == P3) //Код кнопки { LampState = !LampState; if (LampState) { Remote.previous(); // Remote.clear(); } } //////////////////////////////////// }Вот поправил через ИК пульт на пульте у меня всего 6 кнопок ) по этому пока так
Доброго времени все!
не могу понять один момент в кодах. откуда берется переменная remote??
у меня всегда на нее ругается и ее помирить я понять не могу.
Уровень моих познаний очень слабый. Почти никакой. Решил собрать регулятор громкости по USB на базе atmega8a-ua(ибо есть у меня USB-фитюлька, которая спустя несколько секунд после подачи на нее питания, отправлят сигнал о нажатии кнопки "F1"
есть arduino pro-micro(на ней строю часы с цифрами на 2 строки) и nano, которая будет в качестве программатора для атмега8
"
...
Remote.mute();
^
exit status 1
'Remote' was not declared in this scope
"
Вот так и все.
Помогите, ткнув в косяки
crazzy.13, ответ в названии темы.
Помогите, пожалуйста, к готовому виду привести #23
Откуда действительно берется класс Remote, если он не объявлен? Я перечитал и паралелльные темы и нашел два файла HID.cpp и USBAPI.h , что с ними делать ? Да я вижу что внутри них есть упоминание об этом Remote. Но как подключить всё это я не понимаю. Если не сложно могли бы готовый архив собрать.
Хорошие такие! Cамое главное не пишут, откуда берется этот дураций Remote?
dimax в названии темы не написано откуда должна взятся билиотека Remoute или куда её необходимо интегрировать!