Jump to content
Sign in to follow this  
Дмитрий Кузьмичёв

Пульт Для Управления Музыкой На Планшете

Recommended Posts

Задумался над созданием пульта для планшета на android. Пульт подключается через USB-OTG. Распознается планшетом как HID. Хочу знать, какие коды мне необходимо отправлять, чтобы воспроизвести/пауза, переключить трэк...

P.S. обладатели планшетов на android, которые подключали к нему клавиатуру с горячими клавишами, отзовитесь, пожалуйста, как он реагирует.

Share this post


Link to post
Share on other sites

сделал схему, никак не могу разобраться с дескрипторами, и компьютер игнорирует клавиши

#define NUM_KEYS    5
/* The following function returns an index for the first key pressed. It
* returns 0 if no key is pressed.
*/
static uchar    keyPressed(void)
{
if (((PINB&(1<<PB7)) == 0)) return (1);
if (((PINB&(1<<PB6)) == 0)) return (2);
if (((PINB&(1<<PB5)) == 0)) return (3);
if (((PINB&(1<<PB4)) == 0)) return (4);
if (((PINB&(1<<PB3)) == 0)) return (5);
   return 0;
}
/* ------------------------------------------------------------------------- */
/* ----------------------------- USB interface ----------------------------- */
/* ------------------------------------------------------------------------- */
static uchar    reportBuffer[2];    /* buffer for HID reports */
static uchar    idleRate;		   /* in 4 ms units */
const PROGMEM char usbHidReportDescriptor[49] = {   /* USB report descriptor */
 0x05, 0x0C,			 // USAGE_PAGE (Consumer Devices)
 0x09, 0x36,			 // USAGE (Consumer Control)
 0xa1, 0x01,			 // COLLECTION (Application)
 0x09, 0xE9,			 //   USAGE (Volume Up)
 0x09, 0xEA,			 //   USAGE (Volume Down)
 0x15, 0x00,			 //   LOGICAL_MINIMUM (0)
 0x25, 0x01,			 //   LOGICAL_MAXIMUM (1)
 0x75, 0x01,			 //   REPORT_SIZE (1)
 0x95, 0x02,			 //   REPORT_COUNT (2)
 0x81, 0x02,			 //   INPUT (Data,Var,Abs)
 0x09, 0xCD,			 //   USAGE (Play/Pause)
 0x15, 0x00,    //   LOGICAL_MINIMUM (0)
 0x25, 0x01,    //  LOGICAL_MAXIMUM (1)
 0x75, 0x01,    //  REPORT_SIZE (1)
 0x95, 0x01,    //   REPORT_COUNT (1)
 0x81, 0x06,    //  INPUT (Data,Var,Rel)
 0x09, 0xB5,			 //  USAGE (swtrack)
 0x75, 0x01,    //  REPORT_SIZE (1)
 0x95, 0x01,    //   REPORT_COUNT (1)
 0x81, 0x06,    //  INPUT (Data,Var,Rel)
 0x09, 0xB6,    //  USAGE (swtrack)
 0x75, 0x01,    //  REPORT_SIZE (1)
 0x95, 0x01,    //   REPORT_COUNT (1)
 0x81, 0x06,    //  INPUT (Data,Var,Rel)
 0xc0,				   // END_COLLECTION
};

#define KEY_PP	   0xCD // Play/Pause key
#define KEY_PV	   0xB5 // Previous
#define KEY_NX	   0xB6 // Next
#define KEY_VUP	   0xE9 // Volume Up
#define KEY_VDN	   0xEA // Volume Down
static const uchar  keyReport[NUM_KEYS + 1][2] PROGMEM = {
/* none */  {0, 0},					 /* no key pressed */
/*  1 */    {0, KEY_PP},
/*  2 */    {0, KEY_PV},
/*  3 */    {0, KEY_NX},
/*  4 */    {0, KEY_VUP},
/*  5 */    {0, KEY_VDN},
};

remote-fw.rar

Share this post


Link to post
Share on other sites

Технология Maxim Integrated nanoPower: когда малый IQ имеет преимущества

При разработке устройств с батарейным питанием важно выбирать компоненты не просто с малым потреблением, но и с предельно малым током покоя. При этом следует обратить внимание на линейку nanoPower производства компании Maxim Integrated. В статье рассмотрено их применение на примере системы датчиков беспроводной оконной сигнализации.

Подробнее

                     

Платы Nucleo на базе STM32G0: чего можно добиться с помощью связки Nucleo и Arduino

Платы Nucleo и платы расширения X-NUCLEO от STMicroelectronics можно интегрировать в платформу Arduino с помощью библиотеки STM32duino. Связка плат Nucleo и платформы Arduino, и наличие готовых библиотек – представляет удобный инструмент для создания прототипов и конечных приложений в условиях ограниченного времени. Статья содержит пошаговые инструкции по установке библиотек и запуску примеров для Nucleo.

Подробнее...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Similar Content

    • By Angrfist08
      Здравствуйте Ребят Сразу скажу что я не шарю в Звуковых системах точнее в платах и т.д я только по ПК .  Я столкнулся с такой проблемой приобрёл Звуковую систему 5.1 лет 12 назад Creative gigaworks pro gamer g500 и у меня сломался пульт проводной , и теперь естественно я не могу включить громкость без пульта вообще ничего сделать нельзя . Можете помочь может какой аналог можно подобрать лазил в инете так и не нашёл ничего ибо тока в США с рук или в Швеции продают за 2000 тысячи и выше , с производства их убрали давно ещё. Может подскажите какой пульт подойдёт к этой системе или как можно включить звук без пульта? Спасибо огромное за внимание фотки все приложил , Схему найти не смог всё перерыл(( но нашёл на другом форуме фотку платы может поможет )





    • By Tishka
      В ремонт поступил планшет с диагнозом "Не работает матрица". Хозяин планшета сообщил мне, что ранее он ремонтировал его в сервисном центре, меняли разбитый тач. Попав внутрь планшета обнаружил, что не до конца засунут шлейф в разъем матрицы, попытался его правильно поставить, ничего у меня не вышло, он упорно правильно по полоске не вставал. Вскоре я обнаружил погнутые контакты в разъеме матрицы, куда вставляется шлейф. Заказал аналогичную матрицу на али, получив её я сразу решил вставить. Но ничего хорошего у меня не вышло, шлейф на сей раз встал ровно, но изображения на экране нету, горит только одна подсветка. Немного подумав, решил, что проблема может крыться в шлейфе, который подключается одним концом в саму матрицу а второй в материнку, прозвонил его мультиметром, на шлейфе не прозваниваются первый и последний контакт. Это нормально? Или все таки шлейф неисправен? или искать надо какую то другую причину?
      Марка планшета: Acer Iconia Tab A1-810 

    • By VeryMuch
      Продам планшет. Технически исправен. Внешне отлично, использовался в чехле.
      Характеристики на фото. Чехла, зарядки и кабеля нет.
      Цена 1000 руб, почтовые расходы включены. Оплата на курту Сбера.
       


    • By reno
      Продам неработающий планшет Onda V813.
      причина поломки: 
       
    • By voldaj1
      Блок управления светодиодной люстрой 3 режима, перестал работать от пульта. Сначала начал нестабильно работать с пульта то работал то нет, решил заменить батерейку в пульте пока ее искал пультом не пользовался включал от выключателя, поменял батарейку где то через 30 дней и люстра совсем не реагирует на переключение с пульта. Вообщем через выключатель если его щелкать то поочередно включаются все три режима, с пульта вообще молчит, на пульте светодиод при нажатии моргает. разобрал замерил кандер красный он в норме где то 1,35 мкф, так же проверил электролит после диодов он 470 мкф 25 в, исправный и еср в норме, а вот электролит в фильтре стабилизатора на 5 вольт оказался не рабочий заменил на такой же 220 мкф на 16 в, на стабилизаторе 78L05 на входе 13,3 в на выходе 4,8 в. Что можно посмотреть осцилографа нету, только мультиметр. на выходе с радиомодуля 1,6 в при нажатии на пульт прыгает кратковременно до 3 в



  • Сообщения

    • Если буфер ДМА для АЦП пару КБ пишет и потом шлет за раз то это один момент, а вот если у вас буфер для UART формирутеся где то в другом месте, и туда помещаются  всего 12 байт, то или на момент помещения выключайте ДМА АЦП или просто делайте по прерыванию ДМА АЦП когда буфер заполнен просто копирование ваших 12 байт в другой массив временный и все. Но опять же, если формировать буфер для UART процем а в это время ДМА сработает прерывание, у вас опять данные могут быть битые  
    • А как данные перекладываются из одного буфера в другой?
    • Буфер adc и буфер для usart не пересекаются. Просто из отрывков кода это не видно. Я искал зацепку в даташите, но ничего вразумительного не нашел. Вероятно это глюк самого контроллера, а точнее его периферии. Поэкспериментирую еще сегодня. Результат отпишу.
    • а лучше если кто умеет гитару взять.
    • Не прошло и 10 лет, расширил я немного свои знания в электронике, нашлось времени и решил вернуться к данному усилителю. С трудом, но отклеил прижимные пластины транзисторов. А там, полевые транзисторы SMW45N10 и SMW20P10. Подгорающие резисторы соединяют истоки полевиков с выходными фильтрующими конденсаторами блока питания. А сток идёт прямо на выходные клеммы к АС. И теперь опять тупик. Что можно ещё измерить кроме напряжение на затворе, чтобы попробовать найти причину? Или направьте что почитать можно ещё? Лично для меня логично выглядит, что не подходящая нагрузка была подключена, но проблема наверное не в этом. К слову, сам усилитель предохранителя не имеет.  Спасибо.
    • Оооооооо! Китайские квази-ничикончики. ))
    • Логика работы сильно хромает. Контроль за разрядкой (загоранием светодиода) все равно осуществляется визуально. Человек смотрит на светодиод и при зажигании светодиода ручками меняет акки. Так зачем тогда все эти сложности с контроллером и пр? Просто  TL431 и светодиод на каждый акк, который показывает когда напряжение падает ниже уровня. Так-же точно загорится светодиод при снижении и так-же точно ручками человек меняет севший акк на заряженый.  А это вообще шедевр инженерной мысли! Сам вытащил акк, если не слепой и даже если склеротик и забыл, что вытащил, то видно-же что акка нет. Зачем городить систему со светодиодом и контроллером, что бы напомнить, что сам 5 минут назад вытащил акк и его нет. Предлагаю более простую систему без светодиода и контроллера: Открываешь глаза и смотришь. Не на светодиод, а на акки. Если так как в левом отсеке - значит акк есть. Если так как в правом - значит акка нет. Думаю это и надежней и проще, чем сигнализация светодиодами о наличии акка в отсеке..
×
×
  • Create New...