-
- Посмотрите пожалуйста, подкорректированный вариант... 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,
)
- ИМХО наиболее удачная функция 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,
, ссылка)
- у меня скачалась, в обменнике - 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,
)
- 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,
)
- По-немецки это называется 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,
)
- Конечно измеряют. Отсутсвие сопротивления это тоже сопротивление... разрыв цепи тоже является сопротивлением... xanoy(728 знак., 27.07.2007 10: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,
)
- Быстро-быстро может и не получиться. Например, у многих тактовых кнопок период дребезга нормируется не более 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,
)
- Кстати, я использую кольцевой буфер для кодов клавиш, а мой коллега линейный. Разница по сути только в доп. переменной индекса чтения. 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,
)
- Все разобрался, извините за неаккуратность 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,
)
- Спасибо, учту. - 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,