Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

ARDUINO вопрос по вводу данных с клавиатуры

Dominator Знаток (472), закрыт 7 лет назад
Я чайник, только начинаю изучать ARDUINO, обычные видеоуроки уже не интересны и они не все раскрывают. Начал лепить уже свое и не могу разобраться в таком вопросе:
Подключены кнопки 4х4, в примере присвоены им символы
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
И выводятся они в примере только на монитор порта:
char key = keypad.getKey();
if (key){
Serial.println(key); // Передаем название нажатой клавиши в сериал порт
int menu = key;
}
Я хочу присвоить численной переменной к примеру int цифру с клавиатуры, какой командой это можно сделать? И как потом вводить с клавиатуры числа с двумя и более разрядами?
Лучший ответ
Ev Высший разум (118679) 7 лет назад
Для ввода с клавиатуры числа с двумя и более разрядами
создайте переменную типа String и на каждое нажатие клавиши
добавляйте к переменной полученный символ.
Потом строку можно преобразовать в число (такая функция есть во всех языках).
Для работы с Ардуино не использую Wiring,
поэтому приведу пример на BASCOM-AVR

'переменные
Dim Key_char As Byte 'номер нажатой клавиши
Dim Key_str As String * 1 'символ нажатой клавиши на клавиатуре
Dim Result As String * 20 'результат нажатий на клавиатуру

Result = ""

'Главный цикл программы
Do

If Key_char <> 16 Then 'если переменная не равна 16, значит была нажата кнопка
Key_str = Lookupstr(key_char, Keyboard_data) 'вытаскиваем символ нажатой клавиши
Result = Result + Key_str 'формируем строку из символов
End If

Lcd Result 'выводим на дисплей результат нажатий

Loop

Keyboard_data:
Data "1" , "4" , "7" , "*" , "2" , "5" , "8" , "0"
Data "3" , "6" , "9" , "#" , "A" , "B" , "C" , "D"
Остальные ответы
Sagittarius Искусственный Интеллект (138353) 7 лет назад
Можно переписать например так
int keys[ROWS][COLS] = {
{1,2,3,4},
{5,6,7,8'},
{9,10,11,12},
{13,14,15,0};
При помощи такой клавиатуры вы может ввести любую 16-ричную цифру без преобразования char в int.
Раскладку выбирайте по своему вкусу. Я ноль поставил в нижнем правом углу.

};
Похожие вопросы