Задачи в очередь

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Аватара пользователя
Phazz
Полковник
Сообщения: 3147
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 236 раз
Поблагодарили: 117 раз

Задачи в очередь

Сообщение Phazz »

[ref]KeyArduino[/ref], Мой вариант, кнопки 3 (лень было добавлять больше) добавить можно сколько угодно. Запоминает 100 нажатий, это тоже можно увеличить.
viewtopic.php?p=78977#p78977
Последний раз редактировалось Phazz 05 ноя 2019, 21:28, всего редактировалось 1 раз.
Аватара пользователя
KeyArduino
Сержант
Сообщения: 130
Зарегистрирован: 21 июл 2019, 19:16
Имя: Дмитрий
Контактная информация:

Задачи в очередь

Сообщение KeyArduino »

Rovki писал(а): 03 ноя 2019, 19:42 Удивил меня КлючкАрдуино ,что не смог сформулировать четко задачу ,как в своих видео уроках...
1000 извинений Анатолий, не хочу озвучивать идею, если всё получится, то видос отсниму, а пока привёл приблизительно нужную логику, извиняюсь что так расплывчато получилось, я сам это почувствовал.

Отправлено спустя 12 минут 43 секунды:
Phazz писал(а): 04 ноя 2019, 10:26 KeyArduino, Мой вариант, кнопки 3 (лень было добавлять больше) добавить можно сколько угодно. Запоминает 100 нажатий, это тоже можно увеличить.
Спасибо конечно, но что то у меня ничего не работает, подключил кнопки и светодиоды, и тишина, на нажатие кнопок нет реакции на светодиодах. Но всё равно спасибо за старание и потерянное время! :smile9:
Аватара пользователя
Rovki
Полковник
Сообщения: 5735
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 222 раза
Контактная информация:

Задачи в очередь

Сообщение Rovki »

KeyArduino писал(а): 04 ноя 2019, 21:14
Rovki писал(а): 03 ноя 2019, 19:42 Удивил меня КлючкАрдуино ,что не смог сформулировать четко задачу ,как в своих видео уроках...
1000 извинений Анатолий, не хочу озвучивать идею, если всё получится, то видос отсниму, а пока привёл приблизительно нужную логику, извиняюсь что так расплывчато получилось, я сам это почувствовал.
Без проблем :) . В личку бы написали ,давно бы уже сделали :smile469:
Электронщик до мозга костей и не только
Аватара пользователя
KeyArduino
Сержант
Сообщения: 130
Зарегистрирован: 21 июл 2019, 19:16
Имя: Дмитрий
Контактная информация:

Задачи в очередь

Сообщение KeyArduino »

Rovki писал(а): 04 ноя 2019, 21:30 Без проблем . В личку бы написали ,давно бы уже сделали
Вот в это посте подскажите по возможности viewtopic.php?f=18&t=5815&p=78857#p78857
Вроде что то элементарное, а что то догнать не могу
Аватара пользователя
Dryundel
Полковник
Сообщения: 2457
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

Задачи в очередь

Сообщение Dryundel »

[ref]KeyArduino[/ref], Вот Вам блок FIFO
.
FIFO.jpg
FIFO_(CODE).ubi
.
В железе не тестировал, но в протеусе работает. Описания внутри пока нет. Доделаю - выложу.
Логика такая:
1. В настройках выставляем размер буфера (массива) - в вашем случае очереди.
2. Подачей единицы на вход Insert записываем очередную переменную со входа In в буфер (в конец очереди)
3. Подачей единицы на вход Extract извлекаем первую по очереди переменную из буфера (очереди) на выход Out
4. Если в буфере пусто, то на выходе Void - единица и больше ничего из очереди не извлекается.
5. Если буфер полон (см. размер массива) то на выходе Full - единица и ничего в очередь больше не ставится.

Ну а нажатия с со счетчиками (таймерами) надеюсь сообразишь как сделать. :)

Ждем обещанный видос!!! :smile9:

Отправлено спустя 9 часов 2 минуты 42 секунды:
Вот есть один маленький нюанс в этом блоке FIFO
Когда извлекаем из буфера последнюю переменную и буфер опустошается, то на выходе Out повисает эта последняя переменная. Больше ведь ничего не извлекается т.к. буфер пуст.
Вопрос в том, надо ли сделать так, что бы при пустом буфере и при очередном сигнале на входе Extract переменная на выходе Out обнулялась?
Не знаю будет ли это правильно. Ведь если в буфер записывается следующая переменная, то получится что на выходе между этими двумя переменными окажется "0", а это ведь тоже значение.

Вопрос ко всем не равнодушным. :) Как сделать? С обнулением или без?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Gordon0007
Сержант
Сообщения: 138
Зарегистрирован: 19 апр 2018, 13:37
Имя: Павел

Задачи в очередь

Сообщение Gordon0007 »

Добрый день, хотел узнать не поможете ли вы мне с задачей.
Я делаю прошивку для дозатора жидкостей, логику работы одного насоса по таймеру я отработал, меню час дописываю, но в скором времени я дойду до пункта когда потребуется ставить их в очередь на выполнение.
По сути для запуска нужно всего лишь номер насоса и время в миллисекундах сколько подавать и команда на запуск (Ртриг), проблема в том что на одно время может быть задано не одно а несколько задач и они должны отработать и стереться и списка задач.
Всего 6 насосов, одновременно может работать только один насос, включатся на определенное время.
Может быть кто подскажет как это реализовать?
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Задачи в очередь

Сообщение edyapd »

Dryundel писал(а): 05 ноя 2019, 11:23 Как сделать? С обнулением или без?
Как по мне, так стоит ориентироваться на два верхних выхода, прежде чем что-то записывать или считывать. Поэтому без разницы, что будет на выходе "Out". Если блок будет быстрее работать без обнуления, то так и оставить.
Офтопик
[spoiler]Не сочтите за придирку, но мне кажется empty будет более правильно, чем void, в данном значении. an empty array, an empty line.[/spoiler]
Аватара пользователя
Dryundel
Полковник
Сообщения: 2457
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

Задачи в очередь

Сообщение Dryundel »

edyapd писал(а): 05 ноя 2019, 13:24 Не сочтите за придирку, но мне кажется empty будет более правильно, чем void, в данном значении. an empty array, an empty line.
Возможно Вы и правы. Пожалуй так и сделаю когда блок оформлю.
И незачем так стесняться своего мнения. :)
Здоровая критика всегда приветствуется.
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

Задачи в очередь

Сообщение AlexCrane »

[ref]Dryundel[/ref], Текущее количество переменных в буфере можно вывести?
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Аватара пользователя
Dryundel
Полковник
Сообщения: 2457
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

Задачи в очередь

Сообщение Dryundel »

AlexCrane писал(а): 05 ноя 2019, 14:54 Dryundel, Текущее количество переменных в буфере можно вывести?
Не помню. Сейчас копну библиотеку. Если есть такая функция, добавлю.

Отправлено спустя 4 минуты 52 секунды:
Хотя можно ведь и ...
Ща попробуем.
:)
Аватара пользователя
Phazz
Полковник
Сообщения: 3147
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 236 раз
Поблагодарили: 117 раз

Задачи в очередь

Сообщение Phazz »

KeyArduino писал(а): 04 ноя 2019, 21:27 Спасибо конечно, но что то у меня ничего не работает
Немного забыл логику работы Стэка ))). Оказалось он совсем не подходит.
Исправил, проверил - все работает.
очередь_2.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
KulibinOrsk
Лейтенант
Сообщения: 516
Зарегистрирован: 25 фев 2018, 08:48
Откуда: Оренбург
Имя: Александр

Задачи в очередь

Сообщение KulibinOrsk »

[ref=#404040]Phazz[/ref], а если бы еще на стабильной версии сделать (интересно взглянуть на ход мыслей) то совсем было бы хорошо. А делать и показывать на бета версиях ...
Аватара пользователя
Phazz
Полковник
Сообщения: 3147
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 236 раз
Поблагодарили: 117 раз

Задачи в очередь

Сообщение Phazz »

[ref]KulibinOrsk[/ref], ну нужно на чем-то обкатывать ). Позже сделаю.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2457
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

Задачи в очередь

Сообщение Dryundel »

AlexCrane писал(а): 05 ноя 2019, 14:54 [ref]Dryundel[/ref], Текущее количество переменных в буфере можно вывести?
Пользуйтесь. :)
.
FIFO V1.0.jpg
Буфер_FIFO_v1.0_(CODE).ubi

[spoiler=Описание]Буфер FIFO подобен СТЕК. Основное отличие в очереди извлечения данных. Если СТЕК работает по принципу "первый пришел - последний ушел", то у FIFO принцип работы - "первый пришел - первый ушел"

С помощью данного блока FIFO v1.0 осуществляется запись целочисленных переменных в массив и извлечения этих переменных в порядке очереди.

Принцип и логика работы:
1. В настройках выставляем размер буфера (массива) - параметр size_fifo. Он определяет сколько переменных сможет вместить блок.
2. Подачей единицы на вход Insert записываем очередную переменную со входа In в буфер (в конец очереди)
3. Подачей единицы на вход Extract извлекаем первую по очереди переменную из буфера (очереди) на выход Out.
4. Если в буфере пусто, то на выходе Empty - единица и больше ничего из очереди не извлекается.
5. Если буфер полон то на выходе Full - единица и ничего в очередь больше не ставится.
6. На выход Volum выводится текущее количество переменных хранящихся в буфере. С помощью этого выхода удобно следить за заполненностью буфера.[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Phazz
Полковник
Сообщения: 3147
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 236 раз
Поблагодарили: 117 раз

Задачи в очередь

Сообщение Phazz »

KulibinOrsk писал(а): 05 ноя 2019, 18:41 [ref=#404040]Phazz[/ref], а если бы еще на стабильной версии сделать (интересно взглянуть на ход мыслей) то совсем было бы хорошо. А делать и показывать на бета версиях ...
Для 5.3.0
очередь(5.3).flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Gordon0007
Сержант
Сообщения: 138
Зарегистрирован: 19 апр 2018, 13:37
Имя: Павел

Задачи в очередь

Сообщение Gordon0007 »

Дозатор для дозирования жидкостей, задаешь номер насоса от 1 до 6, количество в миллилитрах (миллисекунды*коэфф), время и дни недели показания сравниваются с часами, все сохраняется в ЕЕПРОМ. Если время совпадает, то включается № насос на заданное время.
Всего можно сохранить 100 таймеров, и время может совпадать (допустим на насос 2 и 4 нужно подать в одно и тоже время 100мл (1мл примерно 1 секунда, тем самым 100х2=200сек) и сравнение проходить только для насос №2 срабатывает, а насос №6 не срабатывает так как во время сравнение времени работал насос №2 и время в часах уже поменялось. А может и больше насосов сработать одновременно, требуется создать определенную очередь срабатывания (определенный буфер).
Я это вижу так, идет постоянное сравнение и если происходит совпадений сохраненного времени то записывается некий список в конец очереди и после исполнения этой задачи удалялся из списка.
Если это можно сделать стандартными блоками было бы еще лучше

Отправлено спустя 39 секунд:
Может кто помощь с этой задачей?
Ответить

Вернуться в «Спросить у знатоков»

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

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