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

В данный форум переносятся темы из форума "Новые" после рассмотрения принятые в очередь на реализацию.
Ответить

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

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

#2

Сообщение Сергей » 18.09.2015{, 02:32}

Вопрос снят. Блок прикрепил.
Вложения
6698864.ubi
(516.69 КБ) 131 скачивание

kossn93
Сержант
Сообщения: 151
Зарегистрирован: 05.09.2015{, 14:41}
Репутация: 0
Откуда: Харьков

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

#3

Сообщение kossn93 » 18.09.2015{, 07:33}

модеры, соберите по возможности самодельные блоки и перенесите их в раздел соответствующий( например ,загрузки-блоки пользователей, а тут только ссылки на них оставляйте)

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

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

#4

Сообщение Сергей » 18.09.2015{, 12:04}

kossn93, для того что бы их перенести, надо убедится в их работоспособности. А для этого нужно тестировать и голосовать за тему в которой описывается блок.
Я могу этот блок перенести в загрузки. Но вдруг он глючный. Вдруг я где то ошибся.
Поэтому кому надо, тестируйте, голосуйте и отписывайтесь что блок рабочий. Потом перенесем конечно.

Аватара пользователя
brig62
Лейтенант
Сообщения: 469
Зарегистрирован: 13.05.2016{, 16:37}
Репутация: 13
Откуда: Казань
Имя: Игорь

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

#5

Сообщение brig62 » 24.12.2017{, 01:04}

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


Добавлено (24.12.2017, 01:04)
---------------------------------------------
Вопрос снимаю. Буду использовать командоаппарат.
Вложения
7165146.png

Oleg1345140
Лейтенант
Сообщения: 539
Зарегистрирован: 06.09.2015{, 07:09}
Репутация: 1
Откуда: Курган

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

#6

Сообщение Oleg1345140 » 09.09.2018{, 13:24}

И все же лучше стандартный такой блок, тем более его реализация явно не будет сложной (код для него займет строчку где то :) ).

Naladchik
Капитан
Сообщения: 823
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 153
Откуда: Новосибирск
Имя: Павел

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

#7

Сообщение Naladchik » 09.09.2018{, 20:07}

А смысл в таком блоке если все решается элементарной математикой?
Вложения
Inc_Dec.png
Inc_Dec.png (5.22 КБ) 2077 просмотров
Win10-64. FLProg Portable.
Изображение

Oleg1345140
Лейтенант
Сообщения: 539
Зарегистрирован: 06.09.2015{, 07:09}
Репутация: 1
Откуда: Курган

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

#8

Сообщение Oleg1345140 » 09.09.2018{, 23:01}

Naladchik писал(а):
09.09.2018{, 20:07}
А смысл в таком блоке если все решается элементарной математикой?
Экономией памяти. все же i++ меньше отъесть нежели код описанный выше. хотя кто его знает.

Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

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

#9

Сообщение Labu559 » 10.09.2018{, 00:42}

Oleg1345140 писал(а):
09.09.2018{, 13:24}
код для него займет строчку где то
Naladchik писал(а):
09.09.2018{, 20:07}
А смысл в таком блоке если все решается элементарной математикой
Для нажатия кнопки 1 секунда- мало, а для выполнения кода несколько десятков/сотен циклов. Сколько насчитает математика? Тут нужен контроль предыдущего состояния, опрос по времени и иногда контроль времени пребывания в активном состоянии (устойчивом/устранение дребезга контактов). Получится довольно длинная строчка кода :).
Тогда на мой взгляд минимальная конфигурация из штатных блоков
принимает видПоказать
Value+-.png
Value+-.png (9.58 КБ) 2040 просмотров
Для кругового изменения переменной нужно вывести на счётчике достижение установленного значения и сброс, для управления кнопками добавить блок Bounce. Это теоретический пример, в железе не проверял и в какой последовательности расставит блоки FLProg тоже.
А готовые блоки уже давно есть и на FBD и Code, например здесь, или здесь или здесь. Хотелка древняя.

Naladchik
Капитан
Сообщения: 823
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 153
Откуда: Новосибирск
Имя: Павел

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

#10

Сообщение Naladchik » 10.09.2018{, 10:02}

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

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

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

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

Отправлено спустя 13 минут 39 секунд:
Сброс при достижении значения делать не стал, если кому нужно то компаратор прилепить секундное дело.
Последний раз редактировалось Naladchik 10.09.2018{, 11:01}, всего редактировалось 8 раз.
Win10-64. FLProg Portable.
Изображение

Naladchik
Капитан
Сообщения: 823
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 153
Откуда: Новосибирск
Имя: Павел

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

#11

Сообщение Naladchik » 10.09.2018{, 10:38}

Labu559 писал(а):
10.09.2018{, 00:42}
Для кругового изменения переменной нужно вывести на счётчике достижение установленного значения и сброс
Или так. Круговой счетчик.
СпойлерПоказать
Inc_Dec_Ring.png
Вложения
Inc_Dec_Ring.flp
(164.24 КБ) 64 скачивания
Win10-64. FLProg Portable.
Изображение

Naladchik
Капитан
Сообщения: 823
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 153
Откуда: Новосибирск
Имя: Павел

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

#12

Сообщение Naladchik » 10.09.2018{, 11:06}

А вообще я уже давно предлагал Сергею модернизировать стандартный счетчик и добавить все эти навороты (хотя бы что бы было два выхода "достижение установленного значения") да видать все руки у него не дойдут до этой мелочи.
Win10-64. FLProg Portable.
Изображение

Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

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

#13

Сообщение Labu559 » 10.09.2018{, 16:08}

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

Naladchik
Капитан
Сообщения: 823
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 153
Откуда: Новосибирск
Имя: Павел

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

#14

Сообщение Naladchik » 10.09.2018{, 17:26}

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

Хотя общую идею я понял.
Но вот сам факт присваивания переменной Value значения счетчика и получение двух глобальных переменных с одним и тем же значением крайне не приветствую.
Последний раз редактировалось Naladchik 10.09.2018{, 17:40}, всего редактировалось 4 раза.
Win10-64. FLProg Portable.
Изображение

Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

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

#15

Сообщение Labu559 » 11.09.2018{, 10:40}

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

Naladchik
Капитан
Сообщения: 823
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 153
Откуда: Новосибирск
Имя: Павел

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

#16

Сообщение Naladchik » 11.09.2018{, 10:49}

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

Ответить

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