![]() |
JoyCon Exr + ARDUINO
Задумал я соединить эти два девайса.
по моей задумке arduino обрабатывает все сигналы с резистивных кнопок, энкодера, возможно ИК пульта(этот пункт пока под сомнением), и имитирует нажатие кнопок на JoyConе. Нафига, почему не использовать просто JoyCon? 1. При нажатии на любую кнопку планшет будет просыпаться, меня это не устраивает. 2. Хочу отдельную обработку коротких и длинных нажатий. 3. Различная реакция на поворот энкодера в зависимости от того нажата КЭ(кнопка энкодера) или нет. 4. Пробуждение планшета только по нажатию КЭ На данный момент заказан JoyCon и имеется Arduino nano v5. Написан скетчик со следующим алгоритмом. - при включении зажигания включаем планшет (выводим из сна) - при выключении зажигания выключаем (отправляем в сон) через 3 секунды. Если в течении этих трех секунд опять включили зажигание или нажали КЭ то выключение отменяется. - при выключении зажигания плавно тухнет индикатор питания. - если планшет включен, не важно есть зажигание или нет длинное нажатие на КЭ выключает планшет. - если планшет выключен то короткое нажатие на КЭ включает планшет - отдельно обрабатываются вращения энкодера с нажатой и отжатой КЭ - нажатие КЭ при включенном планшете: короткое --> enter, длинное --> POWER OFF, при выключенном планшете --> POWER ON В общем если кому нибудь кроме меня интересна такая связка то выложу схему и исходники (как все допишу и отлажу). Ну и готов выслушать конструктивные замечания и предложения по реализации. p.s. была мысль на arduino реализовать hid клавиатуру, но на nano эта конструкция работала нестабильно, а покупать более мощную желания не было, поэтому решил отказаться в пользу более промышленного решения. |
конечно выкладывай, интересно как реализован енкодер
|
:yes4: выкладывай, очень интересно
|
В наличии есть 8-и позиционный джойстик с энкодером, 8 осей это много, планирую использовать четыре.
Алгоритм думаю такой. ________________________лево___|__право__|верх|_низ короткое нажатие_________←_________→______↑_____↓ длинное нажатие______PrewTrtack__NextTrack__Esk__Menu _____________________вращение влево__|__вращение вправо кн. энкодера отжата_________vol+________________vol- кн. энкодера нажата________HOME_____________Alt+Tab еще думаю, прикручивать туда ик пульт или нет. В предидущей магнитоле он 99 % времени валялся в бардачке. |
нажатие+поворот в движении оче неудобно
|
Цитата:
|
За пару вечеров наваял скетчик для ARDUINO
В качестве энкодера использовал 8- позиционный джойстик RKJXT1E12001, он хоть и 8-ми позиционный, но по нему можно отслеживать 16 положений, хотя это скорее не фича, а баг связанный с миниатюрными размерами, так же при каждом нажатии стика срабатывает еще и центральная кнопка энкодера, что тоже добавило проблем при написании алгоритма. Вот небольшое видео как это работает http://youtu.be/2x4QndwLlCE |
Автор начал очень полезное дело! Надеюсь в итоге в ветке появится схема и скетч.
|
Цитата:
P.s. если кому нибудь попадались нормальные джойстики с энкодерами кидайте сюда ссылки. т.к. у меня есть подозрение что мой 8-ми позиционный будет не очень удобен в управлении. |
от уравления зеркалами не пойдет? они обычно не вырвиглазны и удобны
|
Цитата:
|
кстати как реализован саспенд ардуины? или она не засыпает? сколько потребление вхолостую?
|
Цитата:
Ардуина будет работать всегда, потребление пока не мерил но думаю что для автомобильного аккума оно настолько мало что им можно пренебречь. Сигналка и видеорег думаю жрут в разы больше. Кстати по выключению. Я планирую уводить планшет в сон и таскером выключать все радиоинтерфейсы(основные потребители). Но если мне кто нибудь подскажет как можно выключить планшет с кнопки, минуя вызов диалогового окна, то можно реализовать следующую схему, при выключении зажигания планшет слипится, а через 1-2-3 часа выключается полностью, соответственно при коротких остановках планшет будет просыпаться мгновенно, + еще и все что было запущенно сразу начинает работать, а при длительных стоянках он не будет вхолостую сажать аккум(хотя при его потреблении меня этот вопрос не сильно волнует, но все равно не по фэншую). Сейчас подобный алгорит у меня на виндовом кар пс, при выключении зажигания сон, а через какое то время гибернация, разница лишь в том что у androida нет режима гибернации и при включении придется в ручную запускать все программы. P.s для очень длительных стоянок, например приехал на море и на 10 дней бросил машину можно предусмотреть хардварный выключатель со скрытой установкой, у меня машина так долго редко простаивает поэтому напрягать не будет. |
у меня нано в3, в холостом режиме жрет около 80ма, что много. вот по этому мануалу http://donalmorrissey.blogspot.ru/20...leep-part.html удолось снизить потребление в спячке до 14ма.
выключение на киндле я организовал подпаявшесь к кнопке питания. там при подаче низкого уровня 200-500мс хватает чтоб эмулировть короткое нажатие: https://github.com/tmpdo/tiggo_mmcu/...u/nano_mcu.ino там этот кусок закомменчен |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Но думаю что оптимизацией процесов я займусь после того как подружу ее с joycon-ом. Кстати если в теме есть владельцы Joycon-ов, посмотрите, как там сделана подтяжка на + 5в. каналов резистивных кнопок. Есть возможность выдрать этот резистор, или используется внутренний резистор контроллера? |
к вопросу об энергопотреблении, в понедельник возьму токовые клещи и посмотрю сколько а/м потребляет с выключенным зажиганием.
|
Цитата:
http://2.bp.blogspot.com/_9WOJMofzxU.../Picture+1.png , так что сначала надо ее пробудить(в нано как раз 2 ноги отвечают за нужные прерывания, так что без труда можно повесить и кнопку и асс) а потом уже крутить код. интеррупты так же удобны тем, что можно настроить их либо на изменение уровня в любую сторону, либо как триггер |
т.е не зря я прерывания до последнего не трогал, как чувствовал что пригодятся. Правда с пульта не удастся запустить, но я вообще пока не решил нужен ли он мне.
|
Есть у кого нибудь в arduino leonardo?
Пытаюсь сделать из него контроллер, надо кое что протестить, а у меня сейчас нексуса(подойдет в принципе любой девайс на андроиде) под рукой нет. |
В связи с тем что у меня теперь опять есть нексус решил довести проект до ума
От связки JoyCon Exr + ARDUINO решил отказаться в пользу Arduino Leonardo. На данный момент она умеет представляться HID клавиатурой. Работает следующий функционал. Джойстик ________________________лево___|__право__|верх|_низ короткое нажатие_________←_________→______↑_____↓ длинное нажатие______PrewTrtack__NextTrack__Esk__Menu Энкодер _____________________вращение влево__|__вращение вправо кн. энкодера отжата_________vol+________________vol- кн. энкодера нажата_____________________ чуть позже прикручу ИК пульт и продублирую все команды с него. На данный момент есть несколько вопросов 1. Как выключить планшет(совсем) минуя меню выключения. 2. в винде если нажать ALT+TAB появится список приложений, дальше удерживая ALT можно колесиком мыши листать как вперед по списку, так и назад, в андроиде эта фича не срабатывает, нужны идеи как можно повторить данный функционал. А то ALT+TAB можно листать приложения только вперед. На выходных постараюсь снять видюху как все это работает. |
Проект получил развитие немного в другом направлении, вместо Arduino Nano+ JoyCon используется Arduino Leonardo, но начальная идея (контроль питания и управление) полностью сохранена, подробности можно посмотреть в моем проекте
|
Где же обещанное видео?
|
Часовой пояс GMT +4, время: 06:31. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot