Ввод числа с клавиатуры
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
- Dryundel
- Полковник
- Сообщения: 2420
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 24 раза
Ввод числа с клавиатуры
KeyNumber
.
Актуальная версия: Пересмотрена Ктопка #
Для Int - короткое нажатие Backspace, длинное - Reset
Для Float - короткое нажатие Точка, длинное - Reset
Отдельного входа Reset теперь нет.
[spoiler=Вид нового блока] [/spoiler]
.
История версий: - Исправлен баг использования нескольких блоков в проекте 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 мс. (Лень перезаливать)
Актуальная версия: Пересмотрена Ктопка #
Для Int - короткое нажатие Backspace, длинное - Reset
Для Float - короткое нажатие Точка, длинное - Reset
Отдельного входа Reset теперь нет.
[spoiler=Вид нового блока] [/spoiler]
.
История версий: - Исправлен баг использования нескольких блоков в проекте 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 мс. (Лень перезаливать)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Ввод числа с матричной клавиатуры
Вот где Вы были с этим блоком полгода назад...? 

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

Ввод числа с клавиатуры
при выборе флоат у меня пропадает вход удалить символ
можно его зафиксировать
можно его зафиксировать
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Ввод числа с клавиатуры
Это жесть просто... КОГДА Вы научитесь сначала читать?
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Ввод числа с клавиатуры
ну блин важный параметр
когда в спешке набираеш то вроде нажал а мембранка не считала цыфру а потом тока заметил и в менюшке под удалил и норм
Отправлено спустя 1 минуту 28 секунд:
возможно не привык в меню небыло сброса да и не всегда удобно
когда в спешке набираеш то вроде нажал а мембранка не считала цыфру а потом тока заметил и в менюшке под удалил и норм
Отправлено спустя 1 минуту 28 секунд:
возможно не привык в меню небыло сброса да и не всегда удобно
- Dryundel
- Полковник
- Сообщения: 2420
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 24 раза
Ввод числа с клавиатуры
Слишком сложно реализуется для float. Не стал загружать блок.
Блок очень легкий. Занимает мало места.
Ввод числа с клавиатуры
Я тоже что то делал, но как и куда дел незнаю
. Клавиатуры разные бывают, фоту бы, для которой вы делали

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

Ввод числа с клавиатуры
Может кому пригодится. Лет 5-6 назад, Слимпер сделал блок для работы с клавиатурой ПК.
Блок служит для считывания кодов нажатых клавишь с клавиатуры ПК. Подключение к разьему 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 - код отжатой (какую отпустили) клавиши, значение выводится только на один програмный цикл, а затем сбрасывается в ноль.
Блок служит для считывания кодов нажатых клавишь с клавиатуры ПК. Подключение к разьему 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 раз
- Контактная информация:
Ввод числа с клавиатуры
Респект автору блока. У меня клава 12 кнопок- 0....9, *,#.
Пожелания-
1.Сделать задание минуса при нажатии * (11) перед вводом чисел . Если нажимаем * после ввода любого числа(0-9), то это воспринимается как десятичная точка. Сейчас знак можно поменять только после ввода числа , при нуле (после сброса) поменять знак невозможно. То есть хотелось бы первоначальное нажатие * (перед вводам чисел и когда содержимое равно нулю) меняло бы знак с + на - , без счетного режима. Как в жизни- пишем сначала минус, а потом вводим цифры. Повторное нажатие * после введенного числа игнорируется (десятичная точка одна)
2.Добавить выход INT- для целых чисел. Нажатие вначале на * (как выше) приводит к смене знака с + на -. Если число введено (не равно нулю) ,то нажатие * игнорируется(нет десятичной точки).При сбросе на входе, значение (как раньше) устанавливается в ноль ,а знак +.
Буду признателен за новый блок.
Р.С Если 2 сложно, то хотя бы 1 пункт
Пожелания-
1.Сделать задание минуса при нажатии * (11) перед вводом чисел . Если нажимаем * после ввода любого числа(0-9), то это воспринимается как десятичная точка. Сейчас знак можно поменять только после ввода числа , при нуле (после сброса) поменять знак невозможно. То есть хотелось бы первоначальное нажатие * (перед вводам чисел и когда содержимое равно нулю) меняло бы знак с + на - , без счетного режима. Как в жизни- пишем сначала минус, а потом вводим цифры. Повторное нажатие * после введенного числа игнорируется (десятичная точка одна)
2.Добавить выход INT- для целых чисел. Нажатие вначале на * (как выше) приводит к смене знака с + на -. Если число введено (не равно нулю) ,то нажатие * игнорируется(нет десятичной точки).При сбросе на входе, значение (как раньше) устанавливается в ноль ,а знак +.
Буду признателен за новый блок.

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

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

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

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

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

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

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

Отправлено спустя 13 минут 50 секунд:
Как вариант - Отправлено спустя 13 минут 42 секунды:
Работает- Отправлено спустя 1 минуту 12 секунд:
Вопрос- как изменить частоту импульсов на строках штатного блока ?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Электронщик до мозга костей и не только
- Dryundel
- Полковник
- Сообщения: 2420
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 24 раза
Ввод числа с клавиатуры
Сделал. Тестируйте.Rovki писал(а): 15 июл 2022, 16:02 Спасибо , но у меня нет свободных входов на есп и нет возможности ставить отдельную кнопку
Ктопка #
Для Int - короткое нажатие Backspace, длинное - Reset
Для Float - короткое нажатие Точка, длинное - Reset
Отдельного входа Reset теперь нет. .
А никак. Частота зависит от частоты основного цикла.Rovki писал(а): 15 июл 2022, 16:02 Вопрос- как изменить частоту импульсов на строках штатного блока ?
Блок работает без прерываний. Импульсы и считывание идут в каждом цикле.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Rovki
- Полковник
- Сообщения: 5722
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 217 раз
- Контактная информация:
Ввод числа с клавиатуры
Работает, спасибо
Отправлено спустя 1 минуту 53 секунды:
Штатный блок клавы конфликтует с модбас (срабатывают тайменги). Приходится реже опрашивать регистр
Отправлено спустя 1 минуту 53 секунды:
Штатный блок клавы конфликтует с модбас (срабатывают тайменги). Приходится реже опрашивать регистр
Электронщик до мозга костей и не только
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя