Вот схема части клавиатуры:
Показать
На схеме три блока клавиш, с 1 по 24. Всего таких блоков 11 (88 клавиш). Изначально на контактах справа (B1, B2 и т.д.) установлена логическая "1" и с анодов диодов, соответственно, считывается логическая "1" (там есть подтяжка к VDD, не обозначенная на схеме). При опросе клавиши на контактах справа устанавливается логический "0" и, если клавиша нажата, с анодов будет считываться логический "0".
Клавиатура разделена на две части. Первая часть состоит из 5 блоков (40 клавиш), вторая - из 6 (48 клавиш). Контакты, на которые при опросе подаётся логический "0", у них общие (обозначены, как B1 - B12). Выходы состояния клавиш (обозначены как A1 - A8) - раздельны, у каждой половины - свои (8 + 8 = 16).
Собственно, я сегодня уже начал разработку контроллера клавиатуры:
Показать
Использовал подвернувшийся под руку контроллер серии PIC32. Понимаю, что это немного жирновато для таких задач, но он хорошо подошёл по количеству портов и встроенному USB. А оставшийся запас производительности при работе клавиатуры будет крутить эмулятор "Спектрума" (шутка
)
Уже опрашиваются все 88 клавиш и передаются по USB команды включения и выключения нот, пока что с фиксированной скоростью. Осталось сделать измерение скорости нажатия клавиш, добавить два колеса и функцию сдвига строя выше-ниже на октаву.
Открытым остаётся вопрос, как измерять скорость и как опрашивать клавиатуру - можно по таймерным прерываниям, можно в суперцикле. Ещё не решил, использую второе. Как измерять скорость нажатия - по таймеру (в этом случае можно замеры делать от опроса до опроса клавиши) или с софтовым счётчиком, инкрементируя (декрементируя) его от замыкания первого контакта до второго. В этом случае опрос клавиш не будет продолжен, пока не будет до конца нажата текущая клавиша или счётчик не достигнет установленного предельного значения. В общем, ещё есть над чем подумать. И вот в этом случае мне пригодился бы уже готовый проект с отлаженными алгоритмами. Собственно, с этой целью я сюда изначально и написал.
Тестером я становиться не хочу, у меня своих четыре проекта, из которых три - хобби. Мне нужно просто выполнить ремонт клавиатуры. Это работа единовременная, клавиатура лично моя, т.е. проект не с целью заработка. Чем может быть полезна для ресурса "Пир ПК" помощь такому человеку, как я? Собственно, ничем, кроме того, что у этого ресурса будет галочка типа: "Есть схема восстановления работоспособности клавиатуры Alesis Q-88" и, если у кого-нибудь вдруг возникнет проблема, аналогичная моей, то останется только собрать схему и прошить контроллер.
На сегодня хватит и разработок и писательства - пойду отдыхать, чего и всем желаю...