Arduino, ввод чисел
- Войдите на сайт для отправки комментариев
Втр, 20/12/2016 - 10:31
Как на Arduino вводить с клавиатуры 3-х значные числа, для дальнейшего их использования в вычислениях?
Как на Arduino вводить с клавиатуры 3-х значные числа, для дальнейшего их использования в вычислениях?
Я понимаю так:
Опрос клавиатуры - запоминание введенного числа в ячейку.
далее опрос и запоминание в другую ячейку, и так до клавиши "Ввод".
А как потом преобразовать все это в одно чило? Или это всё делается по другому?
nikvas, погуглите про функцию Serial.parseInt() откроете для себя мир новых возможностей :)
Спасибо!
Попробую с этим разобраться.
Всё ОК. Ещё раз СПАСИБО!!
Прошу прощение за назойливость.
Serial.parseInt() прикрасно работает при вводе с монитора порта (через компьютер), а мне надо вводить со своей клавиатуры без связи с компьютером.
Никак не могу этого добиться.
Какая клавиатура? Как подключена? Как проводите ее опрос? Лучше прям сразу текущий код выложить.
Клавиатура 4х4. Кода нет, по тому что не знаю как вводить с клавиатуры 3-х значные числа, для дальнейшего их использования в вычислениях? Вот моя программа ввода и отображения на ЖКИ, но это однозначное число, а мне надо вводить 3х значное.
При использование функции Serial.parseInt() все прекрасно работает, но только через компьютер на системный монитор.
Вот что я намудрил:
И всётаки, КАК ВВОДИТЬ с отдельной клавиатуры 3-х значные (и более) числа???
Использование системного монитора не нужно (я вообще не понимаю его назначение).
Arduino должен работать как самостоятельный узел.
Ну, например, как-то так (среды нет под рукой, в блокнотике ваш код поправил, так что могут быть косяки с синтаксисом). Да и с библиотекой клавы я не работал, судя по описанию, там можно более красиво нажатие кнопок отслеживать.
Большое спасибо за участие!
Представленные мною коды все рабочие. В первом скетче можно ввести только ОДНОзначное число,
а во втором все прекрасно работает но ТОЛЬКО с клавиатуры компьютера и через системный монитор, а мне надо ввод со своей клавиатуры и без участия компьютера.
Мне не понятно как вводдить трех значное число со своей клавиатуры, что бы потом его использовать.
И что, тот код, что я дал, не заработал?
Это не то. Это ввод знаков (просто со сдвигом) но не одного числа. при вводе переменная равна поледнему введеному знаку. Мне надо ввести 532 (сохраненное в одной переменной), а не 5, 3 и 2.
В вашем скетче вводятся цифры со сдвигом и в переменной сохраняется только последнее введенное число. И нет команды конца ввода.
Нда... Кто вам это сказал? Плюньте ему в глаз. В переменной data хранится введенное число, хоть одно, хоть дву, хоть трехзначное, хоть... на сколько типа integer хватит. Понадобится больше - переделаете переменную в long.
Конец ввода не стал писать специально, но место под обработку обозначил. Его надо писать в строке 44, назначив в качестве ввода одну из нецифровых клавиш. Либо, если число всегда трехзначное, завести счетчик и, после ввода третьей цифры, делать автоматический ввод/обработку числа.
Уважаемый "okta" скажите что в вашем коде делают строки:
if(first){
if(isDigit(key)){
не могу найти их описание, а использовать в слепую не очень хочется. Ваш код наверно то что надо.
first - переменная, которую я ввел для проверки, что кнопка была нажата, но еще не отпущена (что бы пока клавишу не отпустят одну и туже цифру несколько раз не записывать). В принципе, этот функционал должен быть в библиотеке, но лезть разбираться не хочется.
isDigit(key)
Да, дребезг в библиотеке обрабатывается. Спасибо за ссылку, буду разбираться.
Дребезг как раз таки я отдал на откуп библиотеке. Я имел в виду, что если кнопку нажали и держат, то цифра будет введена один раз, а не сколько раз сработает функция чтения кнопки.
Дребезг как раз таки я отдал на откуп библиотеке. Я имел в виду, что если кнопку нажали и держат, то цифра будет введена один раз, а не сколько раз сработает функция чтения кнопки.
Не понимаете вы главного. Это раньше были программы. Введите 1 число, ввели, введите 2 число ввели, посчитали и вывели результат. Если хотите посчитать снова введите 1. Ну и дальше по кругу. Тогда ввод числа имеет смысл. Тем более в таком режиме можно написать функции INKEY() и INPUT(). Но сейчас в моде структуры в виде меню. А значит не удобны такие функции.
ПС: У вас есть кнопки "А","B","C","D". Та вот их можно использовать так "А" - это HOME. Переход в начало меню, "B" - очистка полностью число , то есть =0, "C" это DELETE удаление последнего знака, "D" 'это ENTER-ввод числа который на экране.
Большое спасибо!! Все решено. Мне нехватало только одной строчки (сам не смог додуматься)
data=data*10+key-48
Вопрос решен! Всем большое спасибо!!!
подскажите, а как же сделать из дополнительных клавиш A B -
1) удаление последнего символа
2) полное удаление введенных данных