Страница 3 из 3
Задачи в очередь
Добавлено: 04 ноя 2019, 10:26
Phazz
[ref]KeyArduino[/ref], Мой вариант, кнопки 3 (лень было добавлять больше) добавить можно сколько угодно. Запоминает 100 нажатий, это тоже можно увеличить.
viewtopic.php?p=78977#p78977
Задачи в очередь
Добавлено: 04 ноя 2019, 21:27
KeyArduino
Rovki писал(а): 03 ноя 2019, 19:42
Удивил меня КлючкАрдуино ,что не смог сформулировать четко задачу ,как в своих видео уроках...
1000 извинений Анатолий, не хочу озвучивать идею, если всё получится, то видос отсниму, а пока привёл приблизительно нужную логику, извиняюсь что так расплывчато получилось, я сам это почувствовал.
Отправлено спустя 12 минут 43 секунды:
Phazz писал(а): 04 ноя 2019, 10:26
KeyArduino, Мой вариант, кнопки 3 (лень было добавлять больше) добавить можно сколько угодно. Запоминает 100 нажатий, это тоже можно увеличить.
Спасибо конечно, но что то у меня ничего не работает, подключил кнопки и светодиоды, и тишина, на нажатие кнопок нет реакции на светодиодах. Но всё равно спасибо за старание и потерянное время!

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

. В личку бы написали ,давно бы уже сделали

Задачи в очередь
Добавлено: 04 ноя 2019, 21:48
KeyArduino
Rovki писал(а): 04 ноя 2019, 21:30
Без проблем . В личку бы написали ,давно бы уже сделали
Вот в это посте подскажите по возможности
viewtopic.php?f=18&t=5815&p=78857#p78857
Вроде что то элементарное, а что то догнать не могу
Задачи в очередь
Добавлено: 05 ноя 2019, 11:23
Dryundel
[ref]KeyArduino[/ref], Вот Вам блок FIFO
.
FIFO.jpg
FIFO_(CODE).ubi
.
В железе не тестировал, но в протеусе работает. Описания внутри пока нет. Доделаю - выложу.
Логика такая:
1. В настройках выставляем размер буфера (массива) - в вашем случае очереди.
2. Подачей единицы на вход Insert записываем очередную переменную со входа In в буфер (в конец очереди)
3. Подачей единицы на вход Extract извлекаем первую по очереди переменную из буфера (очереди) на выход Out
4. Если в буфере пусто, то на выходе Void - единица и больше ничего из очереди не извлекается.
5. Если буфер полон (см. размер массива) то на выходе Full - единица и ничего в очередь больше не ставится.
Ну а нажатия с со счетчиками (таймерами) надеюсь сообразишь как сделать.
Ждем обещанный видос!!!
Отправлено спустя 9 часов 2 минуты 42 секунды:
Вот есть один маленький нюанс в этом блоке FIFO
Когда извлекаем из буфера последнюю переменную и буфер опустошается, то на выходе Out повисает эта последняя переменная. Больше ведь ничего не извлекается т.к. буфер пуст.
Вопрос в том, надо ли сделать так, что бы при пустом буфере и при очередном сигнале на входе Extract переменная на выходе Out обнулялась?
Не знаю будет ли это правильно. Ведь если в буфер записывается следующая переменная, то получится что на выходе между этими двумя переменными окажется "0", а это ведь тоже значение.
Вопрос ко всем не равнодушным.

Как сделать? С обнулением или без?
Задачи в очередь
Добавлено: 05 ноя 2019, 11:50
Gordon0007
Добрый день, хотел узнать не поможете ли вы мне с задачей.
Я делаю прошивку для дозатора жидкостей, логику работы одного насоса по таймеру я отработал, меню час дописываю, но в скором времени я дойду до пункта когда потребуется ставить их в очередь на выполнение.
По сути для запуска нужно всего лишь номер насоса и время в миллисекундах сколько подавать и команда на запуск (Ртриг), проблема в том что на одно время может быть задано не одно а несколько задач и они должны отработать и стереться и списка задач.
Всего 6 насосов, одновременно может работать только один насос, включатся на определенное время.
Может быть кто подскажет как это реализовать?
Задачи в очередь
Добавлено: 05 ноя 2019, 13:24
edyapd
Dryundel писал(а): 05 ноя 2019, 11:23
Как сделать? С обнулением или без?
Как по мне, так стоит ориентироваться на два верхних выхода, прежде чем что-то записывать или считывать. Поэтому без разницы, что будет на выходе "Out". Если блок будет быстрее работать без обнуления, то так и оставить.
Офтопик
[spoiler]Не сочтите за придирку, но мне кажется empty будет более правильно, чем void, в данном значении. an empty array, an empty line.[/spoiler]
Задачи в очередь
Добавлено: 05 ноя 2019, 14:08
Dryundel
edyapd писал(а): 05 ноя 2019, 13:24
Не сочтите за придирку, но мне кажется empty будет более правильно, чем void, в данном значении. an empty array, an empty line.
Возможно Вы и правы. Пожалуй так и сделаю когда блок оформлю.
И незачем так стесняться своего мнения.

Здоровая критика всегда приветствуется.
Задачи в очередь
Добавлено: 05 ноя 2019, 14:54
AlexCrane
[ref]Dryundel[/ref], Текущее количество переменных в буфере можно вывести?
Задачи в очередь
Добавлено: 05 ноя 2019, 15:12
Dryundel
AlexCrane писал(а): 05 ноя 2019, 14:54
Dryundel, Текущее количество переменных в буфере можно вывести?
Не помню. Сейчас копну библиотеку. Если есть такая функция, добавлю.
Отправлено спустя 4 минуты 52 секунды:
Хотя можно ведь и ...
Ща попробуем.

Задачи в очередь
Добавлено: 05 ноя 2019, 18:35
Phazz
KeyArduino писал(а): 04 ноя 2019, 21:27
Спасибо конечно, но что то у меня ничего не работает
Немного забыл логику работы Стэка ))). Оказалось он совсем не подходит.
Исправил, проверил - все работает.
очередь_2.flp
Задачи в очередь
Добавлено: 05 ноя 2019, 18:41
KulibinOrsk
[ref=#404040]Phazz[/ref], а если бы еще на стабильной версии сделать (интересно взглянуть на ход мыслей) то совсем было бы хорошо. А делать и показывать на бета версиях ...
Задачи в очередь
Добавлено: 05 ноя 2019, 18:47
Phazz
[ref]KulibinOrsk[/ref], ну нужно на чем-то обкатывать ). Позже сделаю.
Задачи в очередь
Добавлено: 05 ноя 2019, 20:23
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]
Задачи в очередь
Добавлено: 05 ноя 2019, 20:54
Phazz
KulibinOrsk писал(а): 05 ноя 2019, 18:41
[ref=#404040]Phazz[/ref], а если бы еще на стабильной версии сделать (интересно взглянуть на ход мыслей) то совсем было бы хорошо. А делать и показывать на бета версиях ...
Для 5.3.0
очередь(5.3).flp
Задачи в очередь
Добавлено: 07 ноя 2019, 12:00
Gordon0007
Дозатор для дозирования жидкостей, задаешь номер насоса от 1 до 6, количество в миллилитрах (миллисекунды*коэфф), время и дни недели показания сравниваются с часами, все сохраняется в ЕЕПРОМ. Если время совпадает, то включается № насос на заданное время.
Всего можно сохранить 100 таймеров, и время может совпадать (допустим на насос 2 и 4 нужно подать в одно и тоже время 100мл (1мл примерно 1 секунда, тем самым 100х2=200сек) и сравнение проходить только для насос №2 срабатывает, а насос №6 не срабатывает так как во время сравнение времени работал насос №2 и время в часах уже поменялось. А может и больше насосов сработать одновременно, требуется создать определенную очередь срабатывания (определенный буфер).
Я это вижу так, идет постоянное сравнение и если происходит совпадений сохраненного времени то записывается некий список в конец очереди и после исполнения этой задачи удалялся из списка.
Если это можно сделать стандартными блоками было бы еще лучше
Отправлено спустя 39 секунд:
Может кто помощь с этой задачей?