-
- Посмотрите пожалуйста, подкорректированный вариант... Dany(2160 знак., 27.07.2007 09:48, )
- Не-а. Не будет работать. rezident(517 знак., 27.07.2007 16:16, )
- Спасибо, за замечания. Будет по простому... Dany(2007 знак., 27.07.2007 16:23, )
- А как же дребезг? Ведь всего несколько строк добавить нужно в обработчик прерывания. rezident(264 знак., 27.07.2007 16:43, )
- ИМХО rezident, а зачем так устранять дребезг? Ведь я опрашиваю клаву раз в 30 мс, дребезг примерно 5-20мс. За промежутки между опросами он устаканится. Поправьте, если я что то не учел. - Dany(27.07.2007 16:58, )
- Хозяин-барин. rezident(330 знак., 27.07.2007 17:05, )
- Спасибо за терпение rezident. Устранение дребезга вставлю, а иначе зачем спрашивать совета, а потом его игнорироавть:) - Dany(27.07.2007 17:55, )
- Выкладываю конечный код, дабы начинающие такие как я не задавали глупые вопросы :). Считаю данный код прост для понимания, и удовлетворит начальный интерес к работе с кнопками. Dany(4021 знак., 28.07.2007 10:46, )
- ИМХО, inkey() можно покрасивше написать ReAl(639 знак., 28.07.2007 15:32)
- Да это покрасивее будет:) Я вот думаю, а почему все делают if(old^New) code=New? Ведь код можно вычислить проще code=old&(~New).
А unsigned не пишу, так как у меня char по умолчанию unsigned. - Dany(28.07.2007 15:55, )
- ИМХО наиболее удачная функция inkey(). Коротко и лаконично, как следствие -красиво. Принята за конечную:) Dany(327 знак., 30.07.2007 09:59, )
- Да это покрасивее будет:) Я вот думаю, а почему все делают if(old^New) code=New? Ведь код можно вычислить проще code=old&(~New).
А unsigned не пишу, так как у меня char по умолчанию unsigned. - Dany(28.07.2007 15:55, )
- ИМХО, inkey() можно покрасивше написать ReAl(639 знак., 28.07.2007 15:32)
- Выкладываю конечный код, дабы начинающие такие как я не задавали глупые вопросы :). Считаю данный код прост для понимания, и удовлетворит начальный интерес к работе с кнопками. Dany(4021 знак., 28.07.2007 10:46, )
- Спасибо за терпение rezident. Устранение дребезга вставлю, а иначе зачем спрашивать совета, а потом его игнорироавть:) - Dany(27.07.2007 17:55, )
- Хозяин-барин. rezident(330 знак., 27.07.2007 17:05, )
- ИМХО rezident, а зачем так устранять дребезг? Ведь я опрашиваю клаву раз в 30 мс, дребезг примерно 5-20мс. За промежутки между опросами он устаканится. Поправьте, если я что то не учел. - Dany(27.07.2007 16:58, )
- А как же дребезг? Ведь всего несколько строк добавить нужно в обработчик прерывания. rezident(264 знак., 27.07.2007 16:43, )
- Спасибо, за замечания. Будет по простому... Dany(2007 знак., 27.07.2007 16:23, )
- Не-а. Не будет работать. rezident(517 знак., 27.07.2007 16:16, )
- Хорошая книжка для начала Алексей Мусин(204 знак., 25.07.2007 11:03, , ссылка)
- у меня скачалась, в обменнике - VAI(25.07.2007 16:18, , ссылка)
- 1) Опрос чаще 20ms не имеет смысла. 2) Фиксировать нажатие нужно не при 1 на входе, а при переходе 0->1. 3) Возможно ещё дребезг придётся давить. - =AlexD=(22.07.2007 10:23, )
- а вдруг он рояль с динамической клавиатурой изобретает? тогда почаще надо, почаще... - Aдикм(25.07.2007 19:45, )
- Рояль из кнопок не получится. Для реализации какой-нибудь midi-клавиатуры, кроме собственно нажатия нужно скорость и силу нажатия определять. - rezident(25.07.2007 20:59, )
- Тензодатчик? Жесть. - ИАС(26.07.2007 11:38, )
- :))) угу... 108 штук. 9 октав по 12 клавиш. - -=Max=-(26.07.2007 11:43, )
- ИМХО Субконтр и пятая октавы не полные так шта клавиш меньше ;) - -=MIV=-(26.07.2007 13:34, )
- согласен, на разных инструментах по разному, округлим субконтр и 5-ю в одну. итого 8 октав :). 96 клавиш. :) - -=Max=-(26.07.2007 14:03, )
- Respect =)) - -=MIV=-(26.07.2007 14:08, )
- согласен, на разных инструментах по разному, округлим субконтр и 5-ю в одну. итого 8 октав :). 96 клавиш. :) - -=Max=-(26.07.2007 14:03, )
- И я о тм же. - ИАС(26.07.2007 11:58, )
- ИМХО Субконтр и пятая октавы не полные так шта клавиш меньше ;) - -=MIV=-(26.07.2007 13:34, )
- :))) угу... 108 штук. 9 октав по 12 клавиш. - -=Max=-(26.07.2007 11:43, )
- ИМХО, сила нажатия из скорости нажатия получается: один контакт размыкающий(начало удара) и один замыкающий (конец удара). По времени между этими событиями определяют силу удара и, соотв. громкость. - бомж(26.07.2007 11:28, )
- Скорость по паре контактов можно получить, а как силу, если один разомкнулся, а второй вообще не замкнулся? Долбить по клаве со всей дури прикажете? Но это уже не музыкальный инструмент будет :) - rezident(26.07.2007 20:45, )
- Чем быстрее нажата клавиша, тем с большей силой её нажали. Если второй вообще не замкнулся, звука не будет. (Я попробовал Technics моей дочьки) Когда клавиша уже нажата, изменение силы НЕ влияет на бомж(30 знак., 27.07.2007 08:37, )
- По-немецки это называется Anschlagdynamik - ударная динамика, т.е. чувствительная к скорости удара. - бомж(27.07.2007 08:43, )
- Когда-то-где-то-толи-в-"Радио"-толи-ещё-где за каждой клавишей был сектор, перекрывающий "щелевое" поле зрения фотодиода вдоль щели ReAl(129 знак., 26.07.2007 21:41, )
- Конечно измеряют. Отсутсвие сопротивления это тоже сопротивление... разрыв цепи тоже является сопротивлением... xanoy(728 знак., 27.07.2007 10:31, )
- Было и на индуктивных датчиках... Враги в массовых инструментах сейчас лепят из проводящей резины. Видимо измеряют сопротивление в процессе сканирования... - Гудвин(26.07.2007 22:31, )
- Чем быстрее нажата клавиша, тем с большей силой её нажали. Если второй вообще не замкнулся, звука не будет. (Я попробовал Technics моей дочьки) Когда клавиша уже нажата, изменение силы НЕ влияет на бомж(30 знак., 27.07.2007 08:37, )
- Скорость по паре контактов можно получить, а как силу, если один разомкнулся, а второй вообще не замкнулся? Долбить по клаве со всей дури прикажете? Но это уже не музыкальный инструмент будет :) - rezident(26.07.2007 20:45, )
- прально, а для этого надо очень быстро-быстро сканировать... - Aдикм(25.07.2007 23:48, )
- Быстро-быстро может и не получиться. Например, у многих тактовых кнопок период дребезга нормируется не более 10мс. - rezident(25.07.2007 23:58, )
- Тензодатчик? Жесть. - ИАС(26.07.2007 11:38, )
- Рояль из кнопок не получится. Для реализации какой-нибудь midi-клавиатуры, кроме собственно нажатия нужно скорость и силу нажатия определять. - rezident(25.07.2007 20:59, )
- Все получилось. Добавил ожидание отпускания клавиши, и изменил частоту опроса. опрос раз в 30 мс. - Dany(24.07.2007 20:51, )
- Не нужно ждать отпускания, нужно просто XORить два соседних скана. Типа такого rezident(588 знак., 25.07.2007 03:42, )
- Аналогично поступаю. С мелким отличием в записи (явно выделяю сущность) ReAl(709 знак., 25.07.2007 17:58, )
- Дык в примере ниже у меня так и сделано. tmp1-текущий скан, tmp2-аналог вашего changed_mask. - rezident(25.07.2007 18:13, , ссылка)
- Кстати, я использую кольцевой буфер для кодов клавиш, а мой коллега линейный. Разница по сути только в доп. переменной индекса чтения. rezident(497 знак., 25.07.2007 18:22, )
- Дык в примере ниже у меня так и сделано. tmp1-текущий скан, tmp2-аналог вашего changed_mask. - rezident(25.07.2007 18:13, , ссылка)
- Не вижу принципиальной разницы... Dany(171 знак., 25.07.2007 08:32, )
- Принципиальная разница в том, что сканирование происходит за известное конечное время, которое гораздо меньше периода сканирования. rezident(8500 знак., 25.07.2007 14:47, )
- while у меня ждал прерывания от таймера, раз в 30 мс. Dany(2982 знак., 25.07.2007 17:29, )
- Функция inkey не должна ждать чего-либо. Считала текущее состояние и передала его выше, той функции которая устраняет дребезг, формирует коды клавиш и складывает их в буфер клавиатуры. rezident(193 знак., 25.07.2007 17:56, )
- Решил функцию оставить в следуюшем виде... Dany(335 знак., 25.07.2007 21:30, )
- ИМХО это вариант ничуть не лучше. К тому же программа возвращает не собственно код нажатой клавиши, а битовое состояние матрицы кнопок. rezident(1019 знак., 25.07.2007 23:21, )
- rezident пытаюсь разобрать вашу функцию, объясните на примере первого обращения (matrix=0)... Dany(293 знак., 26.07.2007 08:49, )
- Все разобрался, извините за неаккуратность 10010^0=10010 - Dany(26.07.2007 09:00, )
- rezident пытаюсь разобрать вашу функцию, объясните на примере первого обращения (matrix=0)... Dany(293 знак., 26.07.2007 08:49, )
- ИМХО это вариант ничуть не лучше. К тому же программа возвращает не собственно код нажатой клавиши, а битовое состояние матрицы кнопок. rezident(1019 знак., 25.07.2007 23:21, )
- Понял, учту. - Dany(25.07.2007 18:19, )
- Решил функцию оставить в следуюшем виде... Dany(335 знак., 25.07.2007 21:30, )
- Функция inkey не должна ждать чего-либо. Считала текущее состояние и передала его выше, той функции которая устраняет дребезг, формирует коды клавиш и складывает их в буфер клавиатуры. rezident(193 знак., 25.07.2007 17:56, )
- while у меня ждал прерывания от таймера, раз в 30 мс. Dany(2982 знак., 25.07.2007 17:29, )
- Какой кошмар, и чё , проц тупо ждёт когда отпустят??? А если никогда не отпустят? Подумай ещё немного. - =AlexD=(25.07.2007 10:23, )
- Спасибо, учту. - Dany(25.07.2007 12:52, )
- Принципиальная разница в том, что сканирование происходит за известное конечное время, которое гораздо меньше периода сканирования. rezident(8500 знак., 25.07.2007 14:47, )
- Аналогично поступаю. С мелким отличием в записи (явно выделяю сущность) ReAl(709 знак., 25.07.2007 17:58, )
- Не нужно ждать отпускания, нужно просто XORить два соседних скана. Типа такого rezident(588 знак., 25.07.2007 03:42, )
- Спасибо за рекомендации. Буду пробовать. - Dany(22.07.2007 14:44, )
- а вдруг он рояль с динамической клавиатурой изобретает? тогда почаще надо, почаще... - Aдикм(25.07.2007 19:45, )
- Посмотрите пожалуйста, подкорректированный вариант... Dany(2160 знак., 27.07.2007 09:48, )