Три сигнала семафора

В зависимости от режима работы, иметь три режима индикации светодиодом

Ответить
bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27.11.2021{, 13:47}
Репутация: 0
Имя: Константин

Три сигнала семафора

#1

Сообщение bykos » 04.12.2021{, 20:20}

Всем доброго дня. С помощью примеров в данной теме собрал пользовательский блок мигания светодиодом на 1, 2 , 3 вспышки в секунду и каждые 0,5 секунды. В проекте есть необходимость в зависимости от режима работы, иметь три режима индикации светодиодом. По одному блоки работают нормально, а два, или три вместе не хотят. Разобраться в причине не в силах. Буду благодарен за помощь.
2 вспышки светодиода.flp
(52.78 КБ) 25 скачиваний
3 вспышки светодиода.flp
(53.41 КБ) 19 скачиваний

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Создание пользовательского блока из скетча(примера)

#2

Сообщение Dryundel » 04.12.2021{, 20:52}

bykos писал(а):
04.12.2021{, 20:20}
По одному блоки работают нормально, а два, или три вместе не хотят. Разобраться в причине не в силах. Буду благодарен за помощь.
Объявляйте переменные по одной, а не через запятую. Есть такой нюанс (недочет) в FLProg. Базовый редактор забывает присваивать идентификаторы к переменным, объявленным через запятую.
Типа так:
uint32_t ms;
uint32_t ms1= 0;
uint32_t ms2 = 0;

bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27.11.2021{, 13:47}
Репутация: 0
Имя: Константин

Создание пользовательского блока из скетча(примера)

#3

Сообщение bykos » 04.12.2021{, 21:33}

Спасибо за помощь. Все заработало.
Как все просто когда знаешь в чем дело.

bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27.11.2021{, 13:47}
Репутация: 0
Имя: Константин

Создание пользовательского блока из скетча(примера)

#4

Сообщение bykos » 07.12.2021{, 15:06}

К сожалению счастье было не долгим. Во время работы блока, при подаче 0 на вход блока одновременно с наличием 0 на выходе блока, светодиод тухнет. А при наличии 1 на выходе нет. В какой-то теме была написана команда на принудительное гашение, помню видел. Перелопатил все, два дня искал, не нашел. Кто на память помнит, подскажите.

bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27.11.2021{, 13:47}
Репутация: 0
Имя: Константин

"Первые шаги"

#5

Сообщение bykos » 08.12.2021{, 20:11}

Всем доброго дня. Собрал ПБ на 3 вспышки светодиода. В процессе работы проекта возникла "неприятность". При появлении 0 на входе En в момент когда светодиод не горит, блок отключается и при следующей подачи 1 на вход работает сначала цикла, то есть дает 3 вспышки. При 0 на входе в момент вспышки блок зависает и светодиод горит. При подаче 1 на вход продолжает цикл с момента "зависания" и может дать одну или две вспышки в зависимости от момента когда завис. Не могу понять как его заставить сбросить цикл на начало при 0 на входе.
Помогите кто может
3 вспышки светодиода (1).flp
(141.51 КБ) 23 скачивания

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

"Первые шаги"

#6

Сообщение Dryundel » 09.12.2021{, 08:40}

bykos писал(а):
08.12.2021{, 20:11}
При 0 на входе в момент вспышки блок зависает и светодиод горит.
Это вполне закономерно. Условие по переменной En обуславливает выполнение кода внутри данного условия. Когда En=0, весь этот код пропускается и все обрабатываемые в нем переменные, перестают изменяться.
Необходимо добавить к условию "Иначе", где и прописать что станет с переменными если En=0.

Код: Выделить всё

if (En)
{
//Ваш код.
}
else
{
//Сброс выходных переменных и переменных счетчиков.
}
И еще совет, не пренебрегайте фигурными скобками, даже если можно обойтись без них. Во первых это упрощает чтение кода, а во вторых есть вероятность, что отсутствие фигурных скобок сыграет злую шутку и ошибку будет сложно найти.

Отправлено спустя 4 минуты 9 секунд:
bykos, пожалуйста, не дублируйте свои вопросы в разных темах. Это запрещено правилами форума.

bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27.11.2021{, 13:47}
Репутация: 0
Имя: Константин

Создание пользовательского блока из скетча(примера)

#7

Сообщение bykos » 09.12.2021{, 12:17}

Спасибо за ответ. Но к сожалению моих знаний не хватает чтобы понять что значит "сброс выходных переменных и переменных счетчиков" и как это выразить в коде

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Создание пользовательского блока из скетча(примера)

#8

Сообщение Dryundel » 09.12.2021{, 14:26}

bykos писал(а):
09.12.2021{, 12:17}
Спасибо за ответ. Но к сожалению моих знаний не хватает чтобы понять что значит "сброс выходных переменных и переменных счетчиков" и как это выразить в коде
Упс...
Вероятно объяснить Вам все это будет совсем не просто. Вы взяли достаточно сложный пример для весьма простой задачи. Вероятно фразы: операции с битами и битовая маска для Вас китайская грамота, а код вашего блока основан именно на этом. Попробуйте начать с чего то попроще или попытайтесь создать алгоритм мигания светодиодом с помощью штатных средств FLProg.
В первых строчках данной темы я писал:
Dryundel писал(а):
23.09.2021{, 12:13}
Прежде всего хочу сказать, что для грамотного переноса скетча (кода, примера) в блок необходимо обладать базовыми знаниями языка С++.
Для начала почитайте темы:
Редактирование пользовательского блока.
Создание пользовательского блока (Code-Basic) простым языком.

bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27.11.2021{, 13:47}
Репутация: 0
Имя: Константин

Создание пользовательского блока из скетча(примера)

#9

Сообщение bykos » 09.12.2021{, 19:33}

Согласен, что "взял достаточно сложный пример для весьма простой задачи". Но других примеров с таким результатом к сожалению не нашел. Да, может плохо искал, но что есть то есть. Прочитал обе темы, но сопоставить с моим вопросом так и не смог, к сожалению.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Создание пользовательского блока из скетча(примера)

#10

Сообщение Dryundel » 09.12.2021{, 20:50}

bykos,
Dryundel писал(а):
09.12.2021{, 14:26}
попытайтесь создать алгоритм мигания светодиодом с помощью штатных средств FLProg.

bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27.11.2021{, 13:47}
Репутация: 0
Имя: Константин

Создание пользовательского блока из скетча(примера)

#11

Сообщение bykos » 10.12.2021{, 16:32}

Кроха сын к отцу пришел, но послали Кроху...

aidar_i
Полковник
Сообщения: 3126
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 676
Откуда: Уфа
Имя: Айдар
Контактная информация:

Создание пользовательского блока из скетча(примера)

#12

Сообщение aidar_i » 10.12.2021{, 17:00}

bykos писал(а):
10.12.2021{, 16:32}
Кроха сын к отцу пришел, но послали Кроху.
Никто не посылал... Коды не формат нашего форума, нужно обращаться в Ардуино.ру.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

Три сигнала семафора

#13

Сообщение rw6cm » 10.12.2021{, 19:33}

bykos,
Вы пришли к нам изучать визуальное программирование? Добро пожаловать!
Языку С++ не кто Вас здесь обучать не будет.
Ваш пример делается встроенными блоками FLProg.
семафор.flp
(148.95 КБ) 24 скачивания
Win10-64, FLProg (portable)

bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27.11.2021{, 13:47}
Репутация: 0
Имя: Константин

Три сигнала семафора

#14

Сообщение bykos » 11.12.2021{, 15:56}

Спасибо за приглашение. Прислушался к вашему совету, и решил попробовать. Получилось как мне кажется довольно простая плата. Причем с массой вариантов от 1 вспышки до ...... меняя лишь время задержки в "GA-M" и "TOF" Осталось запихнуть это в ПБ. А до вашего примера мне пока еще далеко .
Вложения
3 Blink.flp
(80.74 КБ) 22 скачивания

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

Три сигнала семафора

#15

Сообщение rw6cm » 11.12.2021{, 23:39}

bykos писал(а):
11.12.2021{, 15:56}
меняя лишь время задержки в "GA-M" и "TOF"
поставьте в "GA-M" импульс 1700, паузу 600 и "TOF" можно убрать.
Win10-64, FLProg (portable)

bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27.11.2021{, 13:47}
Репутация: 0
Имя: Константин

Три сигнала семафора

#16

Сообщение bykos » 12.12.2021{, 12:35}

Спасибо за подсказку. Чудесно работают три блока с разными значениями "импульс-пауза" на одной плате и не мешают друг другу

Ответить

Вернуться в «Помогите, а то я "нимагу"»