Ввод переменной с матричной клавиатуры
- Войдите на сайт для отправки комментариев
Пнд, 19/11/2018 - 13:24
Приветствую!
Встала задача вводить данные с матричной клавиатуры 4х4 и выводить на LCD 1602. Клавиатуру я прицепил взаимодействие наладил, при нажатии на кнопку на дисплее выводиться значение, НО значение одноразарядное 0...9, а мне нужно -100...100 как это реализовать не могу додуматься. Может кто уже делал подобный алгоритм поделитесь наработками!
n = n*10 + k,
где n - искомое число, а k - очередная введенная цифра.
Необходимо реализовать последовательный ввод значений. Например нужно ввести -100. Вводим 1, далее 0 (еденицу двигаем на разряд вперед) получаем 10 далее таким же образом вводим еще 0 получаем 100, нажимаем кнопку +- выводим окончательно значение -100
как делал, что не получается?
n = n*10 + k,
где n - искомое число, а k - очередная введенная цифра.
как делал, что не получается?
Пока свой код не выкладешь, никто шипко и не поможет
Читай всё, а особенна п.5 и далее
http://arduino.ru/forum/obshchii/pesochnitsa-dlya-vsekh-novichkov#commen...
как делал, что не получается?
1. Смена знава - умножение на минус единицу.
2. По поводу предложенноо алгоритма - он идейно неправильный. Надо разделить задачк на две:
- ввод числа с клавиатуры,
- вывод числа на экран.
Первое реализуется, как написал я, второе - как Дед.
И массивы для этого не нужны.
Немного описания для понимания: В бесконечный цикл я попадаю из пункта меню где собственно и хочу вводить значение переменной с клавиатуры. out_symbol - это символьное значение нажатой кнопки. Клавиатура работает таким образом что при нажатии записывается символ нажатой кнопки например '9' в out_symbol после отжатия out_symbol обнуляется. alp - это массив куда хочу писать введенные значения. row_counter - переменная указывающая номер ячейки массива. NUMBER_SIZE - кол-во ячеек массива, разрядность числа. Pos_LCD - функция указателя позиции на дисплее куда выводить символ string_LCD - вывод значения на дисплей
При нажатии на кнопки Вы можете вводить только одну цифру от 0 до 9, для того что бы вводить 2,3 ,4. и т.д. значные чисела Вам нужно делать математическое действие, я делал так.
-48? Это значит что у вас диапазон от -50? А если необходимо 10 записать нужно вводить 58?
И вводите любое многозначное число
"-48" - это преобразовангие введенного байта из символа от '0' до '9' в число от 0 до 9.
-48? Это значит что у вас диапазон от -50? А если необходимо 10 записать нужно вводить 58?
Буду пробовать писать "идейно правильно". Спасибо за напутствия! Далее отпишу получилось или нет.
И вводите любое многозначное число
Писец простыня сравнений, видимо, простое сравнение уже не котируется:
Боюсь представить, какая простыня будет для латинского алфавита, при таком подходе-то :)
Оплата - построчно.
Как у Маяковского
В общем запилил ввод данных, отредактировал значения кнопок перешел на числовой тип вместо символьного, сделал перевод числа в строку для индикации на дисплее, установил границы вводимого значения. При установке "-" пришлось переписывать все строки выводимые на дисплей. Самым большим гемором оказалось подобрать задержки на нажатия т.к. у всех кнопок время дребезга контактов разное.
Самое удивительно не это. Надо организовывать прием с клавиатуры, так прием с Serial. А этот подход уже ведет в никуда. Организовывается буфер. И нажатие с клавиатуры кидается в этот буфер. Потом уже кому надо извлекает.
Пух, тебе нада преподавать ораторское искусство. А мне - громматегу.
Так я и тренирую. Вот сейчас прохожу фразу
Уже неделю.
Самое удивительно не это. Надо организовывать прием с клавиатуры, так прием с Serial. А этот подход уже ведет в никуда. Организовывается буфер. И нажатие с клавиатуры кидается в этот буфер. Потом уже кому надо извлекает.
Объясните, зачем нужен лишний буфер?