Свежие обсуждения
Микроконтроллеры

Алгоритм нажатие/отпускание клавиши

1 2

Можт у кого то есть умные идеи на тему как проверить отпущена ли уже клавиша которая была нажата ранее? опрос динамический ) спасибо заранее

 

Так устроит?
if (!PINB.0) //если нажала кнопка
{
delay_ms(20); //задержка для защиты от дребезга
while(!PINB.0) //пока кнопка все еще нажата
PORTB.1 = 1; //выплнить нужную операцию
}

 

спасиб конечно, но эт немного не то. у меня 176 контактов на клавиатуре, и мне надо знать точный момент нажатия и точный момент отпускания клавиши ) по этим событиям выполняются команды по мимо этого эти 176 контактов разбиты на 2 группы по 88. По парам они стоят. То есть одна клавиша замыкает 2 группы контактов по очерди. Так мне еще время межды этими замыканиями мерять надо чтобы знать скорость клавиши. ) вотЪ )

 

BCluster: и мне надо знать точный момент нажатия
С какой точностью ?

 

Как-то динамический опрос и определение точных моментов времени не очень согласуются, тут всё упирается в частоту опроса и требуемую точность определения времени. Точность не может быть выше чем период опроса.

 

BCluster: мне надо знать точный момент нажатия и точный момент отпускания клавиши
BCluster: одна клавиша замыкает 2 группы контактов по очерди
не перемудрили? Я первый раз встречаю такие требования к клавиатуре.

 

А эт, небось, МИДИ-клава

 

chav1961: А эт, небось, МИДИ-клава
BCluster: Так мне еще время межды этими замыканиями мерять надо чтобы знать скорость клавиши

Режим Velocity (чувствительность клавиши к скорости нажатия) скорее всего имеется ввиду.

 

именно так, велосити)
Точности хватает)

 

BCluster:
именно так
А что у Вас за механика? У меня была с двумя фиксированными контактами, между которыми третий, подвижный. Соответственно, когда клавиша отпущена, он замкнут с одним фиксированным контактом, когда нажата - с другим, пока клавиша "в полёте", ни с чем не замкнут. Был разработан алгоритм (могу поделиться), только потом "тема" заглохла.
Однако 88 клавиш, это - "круто".