Ввод числа с клавиатуры

Пользовательские блоки для вывода информации на дисплеи и индикаторы, управления тачскрином, различными клавиатурами, добавления русских шрифтов для вывода на дисплеи типа HD44780
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2420
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 24 раза

Ввод числа с клавиатуры

Сообщение Dryundel »

KeyNumber
Ввод числа с матричной клавиатуры.jpg
.

Актуальная версия:
Ввод_числа_с_клавиатуры_V1.02_(Code_-_Professional).ubi
Пересмотрена Ктопка #
Для Int - короткое нажатие Backspace, длинное - Reset
Для Float - короткое нажатие Точка, длинное - Reset
Отдельного входа Reset теперь нет.
[spoiler=Вид нового блока]
1.jpg
[/spoiler]

.
История версий:
Ввод числа с матричной клавиатуры.flp
- Исправлен баг использования нескольких блоков в проекте 27.01.2022

Ввод числа с матричной клавиатуры.flp (удалено)
.
Блок KeyNumber это блок ввода числа с клавиатуры.
Создавался для работы с матричной клавиатурой.
Привязки блока к конкретной клавиатуре нет. Можно вообще использовать отдельные кнопки.
В примере используется штатный блок клавиатуры, который настраивается.


Входы:
1, 2, 3 ,,, 0 - ввод цифр.
" ± " - Смена знака числа
" • " - Точка (Доступен только для Float)
" < " - Backspace (Доступен только для Long)
Reset - сброс значения на выходах.

Выходы:
Press - На этом выходе формируется короткий импульс при вводе любой цифры.
Num - Хранит последнюю введенную цифру.
Long - Вводимое число в формате long integer
Float - Вводимое число в формате float

Внимание! (Во избежание глупых не очень умных вопросов)
Формат float в Arduino имеет точность 5-6 знаков в совокупности.
Т.е. доступно к примеру 44.4444 или 44444.4
а попытка работать с числом вида 44444444.44444444 ВСЕГДА приведет к ошибке точности.

Подобный алгоритм реализован (вшит) в штатном блоке меню, однако в отличии от него, данный блок не использует стринговые переменные, массивы и структуры. Вся логика основана на вычислениях.

В проекте - примере есть маленькая оплошность. Для того что бы увидеть на дисплее короткий импульс со выхода Press, необходимо добавить блок таймера на отключение на 200-500 мс. (Лень перезаливать)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Ввод числа с матричной клавиатуры

Сообщение Ingwar »

Вот где Вы были с этим блоком полгода назад...? :smile9:
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2420
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 24 раза

Ввод числа с матричной клавиатуры

Сообщение Dryundel »

Ingwar писал(а): 22 янв 2022, 16:41 Вот где Вы были с этим блоком полгода назад...?
Дык здесь и был. :) Тока сделал полчаса назад и то, потому, что один товарищ запутался с проектом и грех было не помочь.
Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03 ноя 2018, 19:38
Имя: Дмитрий

Ввод числа с клавиатуры

Сообщение Di123 »

при выборе флоат у меня пропадает вход удалить символ
можно его зафиксировать
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Ввод числа с клавиатуры

Сообщение Ingwar »

Dryundel писал(а): 22 янв 2022, 16:26 " < " - Backspace (Доступен только для Long)
Di123 писал(а): 22 янв 2022, 17:29 ри выборе флоат у меня пропадает вход удалить символ
Это жесть просто... КОГДА Вы научитесь сначала читать?
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03 ноя 2018, 19:38
Имя: Дмитрий

Ввод числа с клавиатуры

Сообщение Di123 »

ну блин важный параметр
когда в спешке набираеш то вроде нажал а мембранка не считала цыфру а потом тока заметил и в менюшке под удалил и норм

Отправлено спустя 1 минуту 28 секунд:
возможно не привык в меню небыло сброса да и не всегда удобно
Аватара пользователя
Dryundel
Полковник
Сообщения: 2420
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 24 раза

Ввод числа с клавиатуры

Сообщение Dryundel »

Di123 писал(а): 22 янв 2022, 17:36 ну блин важный параметр
Слишком сложно реализуется для float. Не стал загружать блок.
Блок очень легкий. Занимает мало места.
com
Капитан
Сообщения: 832
Зарегистрирован: 31 май 2018, 22:12
Откуда: Санкт-Петербург
Имя: Ринат

Ввод числа с клавиатуры

Сообщение com »

Я тоже что то делал, но как и куда дел незнаю :smile171: . Клавиатуры разные бывают, фоту бы, для которой вы делали
Аватара пользователя
Dryundel
Полковник
Сообщения: 2420
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 24 раза

Ввод числа с клавиатуры

Сообщение Dryundel »

com писал(а): 22 янв 2022, 17:55 Я тоже что то делал, но как и куда дел незнаю . Клавиатуры разные бывают, фоту бы, для которой вы делали
Это без разницы. Блок самой клавиатуры это отдельный, штатный блок в данном случае. Можете вообще просто кнопки подключить и свои цифири написать на них. Привязки к клавиатуре нет.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2420
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 24 раза

Ввод числа с клавиатуры

Сообщение Dryundel »

Блок обновлен.
- Исправлен баг использования нескольких блоков в проекте 27.01.2022

И хотя применение нескольких клавиатур в проекте, маловероятно.
Но все таки. :)
Аватара пользователя
vacz
Лейтенант
Сообщения: 485
Зарегистрирован: 17 окт 2016, 05:56
Имя: Владимир

Ввод числа с клавиатуры

Сообщение vacz »

Может кому пригодится. Лет 5-6 назад, Слимпер сделал блок для работы с клавиатурой ПК.
Блок служит для считывания кодов нажатых клавишь с клавиатуры ПК.
клавиатура ПК.PNG
Клавиатура_(Code_-_Basic).ubi
Подключение к разьему PS/2.
GND подключаем к GND Arduino UNO
Vcc подключим к 5V Arduino UNO
DATA подключим 2-pin Arduino UNO (номер пина менятеся через парметры)
CLK подключим к 3-pin Arduino UNO (В место номер апина задеется номер прерывания, подобнее чуть ниже)


Параметры:
interrupt- номер прерывания
В большинстве плат Ардуино существует два внешних прерывания: номер 0 (цифровой вывод 2) и 1 (цифровой вывод 3). Номера выводов для внешних прерываний, доступные в тех или иных платах Ардуино, приведены в таблице ниже:

Плата int.0 int.1 int.2 int.3 int.4 int.5
Uno, Ethernet 2 3
Mega2560 2 3 21 20 19 18
Leonardo 3 2 0 1 7

DataPin - номер пинна данные

Выходы
KeyCode - код нажатой клавиши, значение выводится только на один програмный цикл, а затем сбрасывается в ноль.
KeyCodeRelease - код отжатой (какую отпустили) клавиши, значение выводится только на один програмный цикл, а затем сбрасывается в ноль.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

Ввод числа с клавиатуры

Сообщение Rovki »

Респект автору блока. У меня клава 12 кнопок- 0....9, *,#.
Пожелания-
1.Сделать задание минуса при нажатии * (11) перед вводом чисел . Если нажимаем * после ввода любого числа(0-9), то это воспринимается как десятичная точка. Сейчас знак можно поменять только после ввода числа , при нуле (после сброса) поменять знак невозможно. То есть хотелось бы первоначальное нажатие * (перед вводам чисел и когда содержимое равно нулю) меняло бы знак с + на - , без счетного режима. Как в жизни- пишем сначала минус, а потом вводим цифры. Повторное нажатие * после введенного числа игнорируется (десятичная точка одна)
2.Добавить выход INT- для целых чисел. Нажатие вначале на * (как выше) приводит к смене знака с + на -. Если число введено (не равно нулю) ,то нажатие * игнорируется(нет десятичной точки).При сбросе на входе, значение (как раньше) устанавливается в ноль ,а знак +.
Буду признателен за новый блок. :smile427:
Р.С Если 2 сложно, то хотя бы 1 пункт
Аватара пользователя
Dryundel
Полковник
Сообщения: 2420
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 24 раза

Ввод числа с клавиатуры

Сообщение Dryundel »

Rovki писал(а): 15 июл 2022, 11:54 То есть хотелось бы первоначальное нажатие * (перед вводам чисел и когда содержимое равно нулю) меняло бы знак с + на -
Перед вводом чисел значение на выходе равно "0". Как Вы предполагаете поменять знак этому числу?
Rovki писал(а): 15 июл 2022, 11:54 Сейчас знак можно поменять только после ввода числа
Возьмите любой калькулятор, хоть приложение, хоть "железный" - это везде так.
Rovki писал(а): 15 июл 2022, 11:54 Как в жизни- пишем сначала минус, а потом вводим цифры.
Только на клочке бумаги карандашом так бывает.
Rovki писал(а): 15 июл 2022, 11:54 2.Добавить выход INT- для целых чисел. Нажатие вначале на * (как выше) приводит к смене знака с + на -. Если число введено (не равно нулю) ,то нажатие * игнорируется(нет десятичной точки).При сбросе на входе, значение (как раньше) устанавливается в ноль ,а знак +.
А вот это не смог осознать. Если не трудно, перефразируйте пожалуйста. До меня иногда туго доходит. :)
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

Ввод числа с клавиатуры

Сообщение Rovki »

Так вроде цель приблизить блоки не к старым калькуляторам, а к "человеческому языку" :smile37: , так как делает человек на бумаге и говорит так ,и это естественно .
минус.png
это калькулятор в винде(стандартный)- нажимаем "-" потом число , минус появляется после нажатия интер. Наверное можно запомнить(флаг) ,что первым (после сброса) символом был нажат *(-) и отобразить его после ввода числа???
Нужно не нулю менять знак на минус, а после ввода первого числа .
Так бывает(пишут) не только на клочке бумаге , но и научных книгах :)
На выходе INT целое со знаком число - можно взять из лонг интеджер старший регистр . Установка знака при любом типе данных аналогична - при начальном нажатии * делает число отрицательным . Для дробных чисел" *" имеет два назначения - знак и десятичная точка, Для целых только знак.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Электронщик до мозга костей и не только
Аватара пользователя
Dryundel
Полковник
Сообщения: 2420
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 24 раза

Ввод числа с клавиатуры

Сообщение Dryundel »

Rovki писал(а): 15 июл 2022, 14:04 это калькулятор в винде(стандартный)- нажимаем "-" потом число , минус появляется после нажатия интер.
Так это Вы от 0 отняли число. Нажали равно и получили результат.
В левом нижнем углу калькулятора, есть клавиша "Смена знака", вот с ней и пробуйте.
Rovki писал(а): 15 июл 2022, 14:04 На выходе INT целое со знаком число - можно взять из лонг интеджер старший регистр . Установка знака при любом типе данных аналогична - при начальном нажатии * делает число отрицательным . Для дробных чисел" *" имеет два назначения - знак и десятичная точка, Для целых только знак.
Ааааааааааааааааааа... нефига не понял.
.
Ща сделаю специально для Вас.
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

Ввод числа с клавиатуры

Сообщение Rovki »

Дело в том ,что на клаве всего два служебных символа - *.# . А хочется и целые и дробные уставки задавать и отрицательные значения ...
Электронщик до мозга костей и не только
Аватара пользователя
Dryundel
Полковник
Сообщения: 2420
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 24 раза

Ввод числа с клавиатуры

Сообщение Dryundel »

Вот, держи. Хоть перед смену знака нажимай, хоть после.
Ввод числа с матричной клавиатуры for Rovki.flp
Rovki писал(а): 15 июл 2022, 14:27 Дело в том ,что на клаве всего два служебных символа - *.# . А хочется и целые и дробные уставки задавать и отрицательные значения
Так поставь доп кнопку на Reset например.
Ну или надо LongPress к блоку прикручивать.
Подумаю...
Возможно..
:)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

Ввод числа с клавиатуры

Сообщение Rovki »

Dryundel писал(а): 15 июл 2022, 14:40 Вот, держи. Хоть перед смену знака нажимай, хоть после.
Ввод числа с матричной клавиатуры for Rovki.flp
Rovki писал(а): 15 июл 2022, 14:27 Дело в том ,что на клаве всего два служебных символа - *.# . А хочется и целые и дробные уставки задавать и отрицательные значения
Так поставь доп кнопку на Reset например.
Ну или надо LongPress к блоку прикручивать.
Подумаю...
Возможно..
:)
Спасибо , но у меня нет свободных входов на есп и нет возможности ставить отдельную кнопку :smile469:

Отправлено спустя 17 минут 55 секунд:
Придется делать внешней логикой :smile44:

Отправлено спустя 13 минут 50 секунд:
Как вариант -
минус.png
Отправлено спустя 13 минут 42 секунды:
Работает-
Screenshot_2022-07-15-15-57-13-911_ru.kablov.kascada_full.modbus.jpg
Отправлено спустя 1 минуту 12 секунд:
Вопрос- как изменить частоту импульсов на строках штатного блока ?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Электронщик до мозга костей и не только
Аватара пользователя
Dryundel
Полковник
Сообщения: 2420
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 24 раза

Ввод числа с клавиатуры

Сообщение Dryundel »

Rovki писал(а): 15 июл 2022, 16:02 Спасибо , но у меня нет свободных входов на есп и нет возможности ставить отдельную кнопку
Сделал. Тестируйте.
Ктопка #
Для Int - короткое нажатие Backspace, длинное - Reset
Для Float - короткое нажатие Точка, длинное - Reset
Отдельного входа Reset теперь нет.
Ввод числа с матричной клавиатуры V1.02.flp
.
Rovki писал(а): 15 июл 2022, 16:02 Вопрос- как изменить частоту импульсов на строках штатного блока ?
А никак. Частота зависит от частоты основного цикла.
Блок работает без прерываний. Импульсы и считывание идут в каждом цикле.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

Ввод числа с клавиатуры

Сообщение Rovki »

Работает, спасибо

Отправлено спустя 1 минуту 53 секунды:
Штатный блок клавы конфликтует с модбас (срабатывают тайменги). Приходится реже опрашивать регистр
Электронщик до мозга костей и не только
Ответить

Вернуться в «Дисплеи, индикаторы и клавиатуры»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя