Как я могу читать клавиатуру с помощью контроллера C + AVR - PullRequest
0 голосов
/ 27 февраля 2010

Мне нравится знать, как считать полученные значения. Я использую клавиатуру 4x4 и AVR studio в качестве компилятора

например, если я нажимаю кнопку «1», я получаю «1», но если я нажимаю кнопку «1» снова, это должно быть «11», а не «2»,

int inputcounter;
если (кнопка = 00x1) {// что я должен сделать вместо inputcounter ++, чтобы получить «11», а не «2» }

Спасибо.

Ответы [ 2 ]

1 голос
/ 27 февраля 2010

Я предполагаю, что вы пытаетесь прочитать последовательность клавиш и сравнить ее с последовательностью, хранящейся в памяти микроконтроллера (например, секретный код). У вас есть два простых способа сделать это.

  1. Использовать массив. Каждый раз, когда поступает новый вход, помещайте его в следующий слот массива, пока не прочитаете максимальное количество нажатий кнопок ввода.

  2. Упакуйте нажатия клавиш в одно число. Предполагая, что ваша клавиатура возвращает 1 при нажатии 1, 2 при нажатии 2 и т. Д., Вы можете использовать целое число для отслеживания ввода. Инициализируйте переменную в ноль. Всякий раз, когда ввод поступает, умножьте текущее значение переменной на 16 и добавьте входящую цифру. Поскольку у вас есть клавиатура 4x4, вам придется обрабатывать входящие нажатия клавиш как шестнадцатеричные цифры, , а не десятичные цифры (другие предложения, умноженные на 10, ограничат вас использованием только 10 из 16 доступных кнопок).

Количество ключей, которые вы можете отслеживать за один раз, будет зависеть от того, сколько времени вы объявляете свой массив (для опции # 1) или какую переменную размера вы используете (для опции # 2).

1 голос
/ 27 февраля 2010

Судя по комментарию instead of inputcounter++, похоже, что вы пытаетесь использовать числовое значение.

Так что вам нужно сделать:

inputcounter = (inputcounter * 10) + newvalue;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...