PDA

Просмотр полной версии : Еще одна HID-клавиатура (combo)


CheGuevara
22.01.2013, 23:01
Всем привет!

Для своего проекта pccar на андроиде слепил такую клавиатуру.
Возможности -- регулировка громкости с помощью энкодера, и 4 (пока четыре) кнопки: home, menu, back, off.

Исходные коды и прошивка в архиве.

Значения входных напряжений с резистивной клавиатуры и генерируемые коды клавиш зашиты сразу в прошивку: смотрим файл "varForKeys.c"
Массив adcValues -- значения, выдаваемые АЦП, массив keyMsg -- соответствующие коды клавиш.

Как посчитать значения adcValues:
1. измеряем напряжение питание контроллера -- Ucc
2. измеряем напряжение на выводе 2 при нажатой кнопке -- Ukey
3. вычисляем значение АЦП -- округл(Ukey * 1024 / Ucc; 0)

M@troskin
30.03.2013, 18:10
А такого плана вещь можно замутить на Тини13? или не хватит памяти?

awtoap
30.03.2013, 21:39
Не хватит памяти.

gilroy
26.06.2013, 15:48
Разработанное программное обеспечение позволяет распознавать нажатия кнопок на ИК пульте и сопоставлять их с нажатием практически любой комбинации клавиш на клавиатуре.

Винни_Пух
29.08.2013, 11:31
Подскажите, в винде эта клавиатура будет работать? Правильно понимаю что количество кнопок можно легко увеличить так как дискретность измерения АЦП 1024.

Винни_Пух
06.09.2013, 12:43
Ну где все программисты? Никто подсказать не может?

CheGuevara
19.09.2013, 07:36
Подскажите, в винде эта клавиатура будет работать? Правильно понимаю что количество кнопок можно легко увеличить так как дискретность измерения АЦП 1024.

Конечно будет -- это же обычная HID-клавиатура...
Более того скажу -- разработка и тестирование велось под виндой...
Количество кнопок можно увеличить (не 1024, конешно)

З.Ы. если кнопки подключить к резистивной матрице R-2R (http://en.wikipedia.org/wiki/Resistor_ladder), то и одновременные нажатия можно организовать... (алгоритм распознавания нажатия кнопкок, конечно, другой надо)

сорри, что не отвечал -- редко здесь бываю...

Винни_Пух
19.09.2013, 11:34
Большое спасибо!

Alekssandr
14.12.2013, 11:15
Ребята на сколько я понял правильно;
собираем как показано на схеме, подбираем нужные сопротивление, вычисляем значение АЦП,

потом полученные данные вводим в файл varForKeys.c

в строку

static int adcValues[KEY_COUNT] = { 770, 680, 510, 0 };
static char keyMsg[KEY_COUNT] = { 0x4a, 0x3a, 0x29, 0x3d }; // "Home", "Menu", "Back", "Off"

вопрос, можно ли добавить в этот файл новые значения и новые кнопки с кодами клавиш?

например так
static int adcValues[KEY_COUNT] = {900, 800, 770, 680, 510, 0 };
static char keyMsg[KEY_COUNT] = {0x12, 0x81, 0x4a, 0x3a, 0x29, 0x3d }; // "Alt", "F12", "Home", "Menu", "Back", "Off"

и как сделать так чтобы зажать одновременно 2 кнопки при помощи одного значения? Допустим на значении ацп 900 нам нужно зажать Alt+F12.

Винни_Пух
14.12.2013, 13:42
У меня не получилось. Прошивка заливается в процессор, считывается, проходит сравнение. При подключении к usb пишет что устройство не опознано.

CheGuevara
14.12.2013, 15:28
Alekssandr, да, ты правильно понял...
кнопки добавить можно, добавив в цепочку резисторы, и прописав соответствующие значения в два массива...
...одновременные нажатия не отрабатываются -- я писал выше как можно сделать

Винни_Пух, питание на контроллере 3,3 вольт?? подключаете к компу напрямую или через хаб... провод усб пробовали другой? fuse может не те??

Alekssandr
14.12.2013, 16:22
А это полезно выложи пожалуйста какие fuse необходимо выставить.

m50b20
14.12.2013, 23:05
А чем она лучше переделаной обычной мультимедиа клавы ? С которой намного меньше работ (для меня, во всяком случае) ?

Alekssandr
15.12.2013, 07:34
Меньше места занимает)) да и на будущее для всяких необычных вещей пригодиться. Накладно будет все время клаву покупать и курочить клаву.

Винни_Пух
15.12.2013, 19:44
В обычной мультимедийной клавиатуре кнопки кажется по матрице подключаются к контроллеру, а здесь резисторная цепочка на двух проводах.

CheGuevara, питание 3,3В, провод рабочий, а вот с fuse хз. Обзаведусь нормальным программатором ещё раз попробую :-)

CheGuevara
16.12.2013, 08:56
А чем она лучше переделаной обычной мультимедиа клавы ? С которой намного меньше работ (для меня, во всяком случае) ?
у меня, сначала, тоже такая мысль была... но
1 - разные клавы имеют разный набор мм-клавиш,
2 - цена,
3 - Винни_Пух правильно говорит:
В обычной мультимедийной клавиатуре кнопки кажется по матрице подключаются к контроллеру, а здесь резисторная цепочка на двух проводах.
можно подключить к резисторным подрулевым кнопкам (которых, впрочем, у меня нет... пока нет)
==

А это полезно выложи пожалуйста какие fuse необходимо выставить.
..а вот с fuse хз...

в файле burn.cmd написано:

-U lfuse:w:0xd1:m -U hfuse:w:0xdd:m -U efuse:w:0xff:m

Alex_St
16.12.2013, 11:48
Самое главное - если надо поменять раскладку - то не надо долго высчитывать матрицу и перепаивать, а достаточно перепрограммировать процессор. Т.е. главное достоинство - это гибкость!

ZyaK
22.12.2014, 09:49
Вопрос такой, чем компилировать прошивку после изменений кодов кнопок?
Можно это чудо как то подружить с IcarDS? там вроде есть что-то типа carduino вроде...

CheGuevara
22.12.2014, 12:16
Вопрос такой, чем компилировать прошивку после изменений кодов кнопок?
архив скачайте - там есть "make.cmd"
компилятор gcc из пакета Arduino IDE

Можно это чудо как то подружить с IcarDS? там вроде есть что-то типа carduino вроде...

IcarDS - это же виндовая оболочка.
Разработанное устройство - обычная мультимедийная клавиатура: если IcarDS работает с клавиатурой то и с этим ус-вом будет. И carduino здесь вообще не причем.
(что-то все в кучу смешали :dntknw:)

ZyaK
22.12.2014, 15:25
да что-то все в кучу в голове смешалось :) еще и поиски руля с кнопками и шлейфом...

ZyaK
22.12.2014, 18:02
А что там с фьюзами? какие чего ставить в авердудке или в авр студио

ZyaK
23.12.2014, 09:21
Вопрос такой, почему устройство питается от 3.3 воль? почему не от 5? и можно ли его запустить от 5?

Можно ли из прошивки убрать энкодер?
и кнопки громкости добавить к остальным кнопкам, сделать их скажем штук 8 ?
И может возможно изменить устройство с клавиатуры на джойстик?