Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

В данный форум переносятся темы из форума "Новые" после рассмотрения принятые в очередь на реализацию.
Ответить
Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31 авг 2015, 15:06
Имя: Сергей
Контактная информация:

Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

Сообщение Сергей »

Вопрос снят. Блок прикрепил.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
kossn93
Сержант
Сообщения: 151
Зарегистрирован: 05 сен 2015, 14:41
Откуда: Харьков

Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

Сообщение kossn93 »

модеры, соберите по возможности самодельные блоки и перенесите их в раздел соответствующий( например ,загрузки-блоки пользователей, а тут только ссылки на них оставляйте)
Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31 авг 2015, 15:06
Имя: Сергей
Контактная информация:

Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

Сообщение Сергей »

kossn93, для того что бы их перенести, надо убедится в их работоспособности. А для этого нужно тестировать и голосовать за тему в которой описывается блок.
Я могу этот блок перенести в загрузки. Но вдруг он глючный. Вдруг я где то ошибся.
Поэтому кому надо, тестируйте, голосуйте и отписывайтесь что блок рабочий. Потом перенесем конечно.
Аватара пользователя
brig62
Лейтенант
Сообщения: 469
Зарегистрирован: 13 май 2016, 16:37
Откуда: Казань
Имя: Игорь

Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

Сообщение brig62 »

Столкнулся в проекте с необходимостью использования данного блока. Проверить пока не могу. Правильно я его подключил?


Добавлено (24.12.2017, 01:04)
---------------------------------------------
Вопрос снимаю. Буду использовать командоаппарат.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Oleg1345140
Лейтенант
Сообщения: 539
Зарегистрирован: 06 сен 2015, 07:09
Откуда: Курган

Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

Сообщение Oleg1345140 »

И все же лучше стандартный такой блок, тем более его реализация явно не будет сложной (код для него займет строчку где то :) ).
Naladchik
Капитан
Сообщения: 832
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел

Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

Сообщение Naladchik »

А смысл в таком блоке если все решается элементарной математикой?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64. FLProg Portable.
Изображение
Oleg1345140
Лейтенант
Сообщения: 539
Зарегистрирован: 06 сен 2015, 07:09
Откуда: Курган

Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

Сообщение Oleg1345140 »

Naladchik писал(а): 09 сен 2018, 20:07А смысл в таком блоке если все решается элементарной математикой?
Экономией памяти. все же i++ меньше отъесть нежели код описанный выше. хотя кто его знает.
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий

Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

Сообщение Labu559 »

Oleg1345140 писал(а): 09 сен 2018, 13:24код для него займет строчку где то
Naladchik писал(а): 09 сен 2018, 20:07А смысл в таком блоке если все решается элементарной математикой
Для нажатия кнопки 1 секунда- мало, а для выполнения кода несколько десятков/сотен циклов. Сколько насчитает математика? Тут нужен контроль предыдущего состояния, опрос по времени и иногда контроль времени пребывания в активном состоянии (устойчивом/устранение дребезга контактов). Получится довольно длинная строчка кода :).
Тогда на мой взгляд минимальная конфигурация из штатных блоков
принимает видSPOILER_SHOW
Value+-.png
Для кругового изменения переменной нужно вывести на счётчике достижение установленного значения и сброс, для управления кнопками добавить блок Bounce. Это теоретический пример, в железе не проверял и в какой последовательности расставит блоки FLProg тоже.
А готовые блоки уже давно есть и на FBD и Code, например здесь, или здесь или здесь. Хотелка древняя.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Naladchik
Капитан
Сообщения: 832
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел

Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

Сообщение Naladchik »

Oleg1345140 писал(а): 09 сен 2018, 23:01Экономией памяти. все же i++ меньше отъесть нежели код описанный выше
по поводу памяти, особенно в проектах FLProg - смешно. тут она и без этого используется, мягко говоря, не оптимально. Чего стоят задвоение переменных при использовании пользовательских блоков да и и использование int там где вполне хватает byte и Long там где хватило бы Uint. Да не будем о грустном.
Ну а что касается кода, то
_gtv1 = (_gtv1)+(1);
по сути тоже самое что и i++; т.е просто математика, это если убрать у переменной разрешение записи
SPOILERSPOILER_SHOW
Inc.png
Разница так уж принципиальна? По моему одно и тоже. Мне кажется, что компилятор со мной согласится.
"...большинство современных компиляторов языка Си уже без проблем сами заменяют арифметические выражения x = x + 1 или x += 1 на низкоуровневый инкремент (++x) на этапе оптимизации и компиляции." - Wiki

if (_gtv2) {_gtv1 = (_gtv1)+(1);}
а тут используется переменная с разрешением записи.
SPOILERSPOILER_SHOW
Inc_.png
Labu559 писал(а): 10 сен 2018, 00:42Сколько насчитает математика?
Пока будет разрешение записи - будет считать (один цикл программы - одна операция инкремента), нет разрешения - нет счета.
av писал(а): 10 сен 2018, 00:35Это столько же переменных для разрешения записи нужно добавить.
А тут уже по обстоятельствам, может несколько а может и ни одной.

Вот такой вариант. 452 и 11 байт.
Inc_Dec.png
Inc_Dec.flp
А использовать еще и счетчик для хранения значения, которое и так хранится в переменной это, на мой взгляд, избыточно.
Особенно в свете "...Экономии памяти..." :smile38:

P.S. Никто так и не сказал а для чего нужны такие навороты? Начали то с простейших инкремента и декремента.

Отправлено спустя 13 минут 39 секунд:
Сброс при достижении значения делать не стал, если кому нужно то компаратор прилепить секундное дело.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Naladchik 10 сен 2018, 11:01, всего редактировалось 8 раз.
Win10-64. FLProg Portable.
Изображение
Naladchik
Капитан
Сообщения: 832
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел

Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

Сообщение Naladchik »

Labu559 писал(а): 10 сен 2018, 00:42Для кругового изменения переменной нужно вывести на счётчике достижение установленного значения и сброс
Или так. Круговой счетчик.
SPOILERSPOILER_SHOW
Inc_Dec_Ring.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64. FLProg Portable.
Изображение
Naladchik
Капитан
Сообщения: 832
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел

Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

Сообщение Naladchik »

А вообще я уже давно предлагал Сергею модернизировать стандартный счетчик и добавить все эти навороты (хотя бы что бы было два выхода "достижение установленного значения") да видать все руки у него не дойдут до этой мелочи.
Win10-64. FLProg Portable.
Изображение
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий

Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

Сообщение Labu559 »

Naladchik писал(а): 10 сен 2018, 10:16Пока будет разрешение записи - будет считать (один цикл программы - одна операция инкремента), нет разрешения - нет счета.
Да, и я о том же. Исходя из этого нам нужно считать/инкреминировать/декреминировать не циклы программы, пока одна из переменных increment или decrement пребывает в HIGH, а отсчитывать / инкреминировать/декреминировать колличество этих команд или нажатий кнопок от переменной Value.
Naladchik писал(а): 10 сен 2018, 10:16А использовать еще и счетчик для хранения значения, которое и так хранится в переменной это, на мой взгляд, избыточно.
Особенно в свете "...Экономии памяти...
Применение счётчика напрямую связано с
Labu559 писал(а): 10 сен 2018, 00:42контроль предыдущего состояния
который в нём уже присутствует- смотрим код счётчика. Если будет удержание указанных выше переменных/кнопок в HIGH, независимо от колличества циклов Loop, будет инкремент/декремент на 1.
К сожалению в отчётах Arduino IDE от нас ускользает колличество инструкций процессора, что не менее важно чем объёмы используемых типов памяти, но это уже дебри. :(
Naladchik писал(а): 10 сен 2018, 11:06предлагал Сергею модернизировать стандартный счетчик и добавить все эти навороты (хотя бы что бы было два выхода "достижение установленного значения")
Базовый счётчик, на мой взгляд (хотя я тоже предлагал ув. Автору его модернизировать в ином, правда, плане) вполне самодостаточен. А то что предлагаете Вы,
легко реализуется с помощью внешних елементов (обведено рамкой).SPOILER_SHOW
Inc_Dec_R2.png
Спасибо за интересный диалог!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Naladchik
Капитан
Сообщения: 832
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел

Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

Сообщение Naladchik »

Labu559 писал(а): 10 сен 2018, 16:08легко реализуется с помощью внешних елементов (обведено рамкой).
SPOILERSPOILER_SHOW
123.png
А вы его в работе проверяли? по моему тут с логикой у Вас явный непорядок. При каждой команде increment/decrement Вы предустанавливаете значение счетчика max/min.
Далее, на вход счетчика "пороговое значение" Вы подаете через промежуточную переменную значение его (счетчика) выхода? :smile37:

Хотя общую идею я понял.
Но вот сам факт присваивания переменной Value значения счетчика и получение двух глобальных переменных с одним и тем же значением крайне не приветствую.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Naladchik 10 сен 2018, 17:40, всего редактировалось 4 раза.
Win10-64. FLProg Portable.
Изображение
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий

Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

Сообщение Labu559 »

Naladchik писал(а): 10 сен 2018, 17:26А вы его в работе проверяли?
если можно так сказать, да. Просто применял описаный алгоритм без кольцевого счёта в своём проекте, НО!!!
Naladchik писал(а): 10 сен 2018, 17:26по моему тут с логикой у Вас явный непорядок
Вы совершенно правы на счёт кольцевого счёта, вход SP должен остаться не подключённым. С кольцевым счётчиком я поспешил, с наскока и без утяжеления , и короче чем у ув. Boroda в 6-м сообщении пока не получилось. Попробовал симулировать в Протеусе. Без кольца проект успешный, в кольцевом засада в плане отрицательных чисел, но я кажется понял что Вы имели ввиду под
Naladchik писал(а): 10 сен 2018, 11:06два выхода "достижение установленного значения"
И вспомнил что где-то проходило сообщение ув. Sancho об разных условиях сравнения в счётчике < и >= при счёте отрицательных чисел и положительных. Спасибо Вам за тренировку мозга.
P.S. Если это Вы на форуме Казуса о Протеусе, то именно с Вашей публичной рекоммендации я начал знакомство с FLProg. :smile9:
(Поставил себе задачу в плане обучения- использовать только свои ПБлоки, счётчики тоже использую свои с моими собственными недостатками :), а чужие изучаю если свои очень не нравятся.)
Последний раз редактировалось Labu559 11 сен 2018, 10:49, всего редактировалось 1 раз.
Naladchik
Капитан
Сообщения: 832
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел

Добавить блок увеличения/уменьшения переменной на 1 (+1, -1)

Сообщение Naladchik »

Labu559 писал(а): 11 сен 2018, 10:40P.S. Если это Вы на форуме Казуса о Протеусе
Нет, не я.
Win10-64. FLProg Portable.
Изображение
Ответить

Вернуться в «Принято»

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

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