Ввод чисел с точкой с помощью матичной клавиатуры 4x4
- Войдите на сайт для отправки комментариев
Чт, 27/08/2020 - 16:00
Доброго времени суток! Подскажите пожалуйста как организовать ввод чисел с точкой с помощью матичной клавиатуры 4x4, чтобы числа отображались на жк-дисплее и хранились в переменной, уже ломаю голову не первый день, и нигде не нахожу нужной информации. Вот код выполняющий действия считывания с клавиатуры:
void loop() {
while (true) {
char customKey = customKeypad.getKey();
if (customKey >= '0' && customKey <= '9') {
keyWholeNum = keyWholeNum * 10 + customKey - '0';
LCD.setCursor(0, 0);
LCD.print(keyWholeNum);
Serial.println(keyWholeNum);
}
if (customKey == 'C') {
// Serial.println(digitalNumber);
keyWholeNum = 0;
LCD.clear();
}
}
}
Сначала набираете строку. По вводу символа окончание ввода преобразуете строку в число.
См. atof().
Привет всем, все тот же вопрос.
У меня проблема с вводом строки, на дисплей выводятся дубли, и как мне организовать алгоритм, чтобы по вводу символа окончание ввода преобразовать строку в число и при этом перевести курсор на след. строчку и вводить след значение, может кто-то сталкивался с этим и может есть пример кода, помогите пожалуйста.
У меня проблема с вводом строки, на дисплей выводятся дубли, и как мне организовать алгоритм, чтобы по вводу символа окончание ввода преобразовать строку в число и при этом перевести курсор на след. строчку и вводить след значение, может кто-то сталкивался с этим и может есть пример кода, помогите пожалуйста.
Тут помогают только тем, у кого есть свой код (пусть даже неправильный). Покажите, как Вы пытались решить проблему, приведите код.
А если никак не пытались - начинать разговор не имеет смысла.
Массив символов создан для дальнейшего превращения во float, и я не могу понять как сделать так, чтобы при нажатии кнопки окончания строки происходила конвертация string -> float и результат сохранялся в переменную.
Надеюсь то, что при чтении каждого нового символа вы создаете новый массив- это не более чем тестовый код, чтобы показать приращение строки? - вы понимаете, что в окончательном коде так делать нельзя? - будем считать, что понимаете.
Тогда все просто. Делаете еще одно условие (по аналогии со строкой 3) на то, что новый принятый символ - конец строки (я не знаю, какой у вас символ на клавиатуре для этого используется). Когда приняли этот символ - вышли из цикла, только после этого создали массив char, преобразовали str в массив - и можете использовать его для конвертации строчки во float функцией atof()
Надеюсь то, что при чтении каждого нового символа вы создаете новый массив- это не более чем тестовый код, чтобы показать приращение строки? - вы понимаете, что в окончательном коде так делать нельзя? - будем считать, что понимаете.
Тогда все просто. Делаете еще одно условие (по аналогии со строкой 3) на то, что новый принятый символ - конец строки (я не знаю, какой у вас символ на клавиатуре для этого используется). Когда приняли этот символ - вышли из цикла, только после этого создали массив char, преобразовали str в массив - и можете использовать его для конвертации строчки во float функцией atof()
Я только начинающий программист, и мне была поставлена задача разработать один проект, и вот я решил взяться за ардуино.
Я принял во внимание Ваши замечания, и вот такой код у меня вышел, только проблема в том что при переводе массива во float, теряется точность. Ввожу 5.5 а после конвертации получаю 5.00.
И подскажите еще такое, мне нужно вводить два параметра, чтобы они отображались на дисплее и при нажатии на символ окончания ввода по очереди конвертировались в другие типы, как организовать такой алгоритм?
я только начинающий программист, и мне была поставлена задача разработать проект, и вот я
1)не вижу, как описана переменная L
2) не знаю точно, но возможно. что функция atof() в ардуино не работает. В ардуино очень сильно урезана поддержка типа float.
Старайтесь обходится целыми. Например вместо 5.5 на клавиатукре можно вводить 55, а потом преобразовывать во float уже в программе делением на 10
Неделю назад atof() работала. Что, правительство и до нее дотянулась?
ну я просто предположил. printf с float в ардуине не работает, думал может и atof() тоже :)