Страница 1 из 1

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

Добавлено: 04 дек 2021, 20:20
bykos
Всем доброго дня. С помощью примеров в данной теме собрал пользовательский блок мигания светодиодом на 1, 2 , 3 вспышки в секунду и каждые 0,5 секунды. В проекте есть необходимость в зависимости от режима работы, иметь три режима индикации светодиодом. По одному блоки работают нормально, а два, или три вместе не хотят. Разобраться в причине не в силах. Буду благодарен за помощь.
2 вспышки светодиода.flp
3 вспышки светодиода.flp

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

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

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

Добавлено: 04 дек 2021, 21:33
bykos
Спасибо за помощь. Все заработало.
Как все просто когда знаешь в чем дело.

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

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

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

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

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

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

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

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

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

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

Добавлено: 09 дек 2021, 12:17
bykos
Спасибо за ответ. Но к сожалению моих знаний не хватает чтобы понять что значит "сброс выходных переменных и переменных счетчиков" и как это выразить в коде

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

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

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

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

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

Добавлено: 09 дек 2021, 20:50
Dryundel
[ref]bykos[/ref],
Dryundel писал(а): 09 дек 2021, 14:26 попытайтесь создать алгоритм мигания светодиодом с помощью штатных средств FLProg.

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

Добавлено: 10 дек 2021, 16:32
bykos
Кроха сын к отцу пришел, но послали Кроху...

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

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

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

Добавлено: 10 дек 2021, 19:33
rw6cm
[ref]bykos[/ref],
Вы пришли к нам изучать визуальное программирование? Добро пожаловать!
Языку С++ не кто Вас здесь обучать не будет.
Ваш пример делается встроенными блоками FLProg.
семафор.flp

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

Добавлено: 11 дек 2021, 15:56
bykos
Спасибо за приглашение. Прислушался к вашему совету, и решил попробовать. Получилось как мне кажется довольно простая плата. Причем с массой вариантов от 1 вспышки до ...... меняя лишь время задержки в "GA-M" и "TOF" Осталось запихнуть это в ПБ. А до вашего примера мне пока еще далеко .

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

Добавлено: 11 дек 2021, 23:39
rw6cm
bykos писал(а): 11 дек 2021, 15:56 меняя лишь время задержки в "GA-M" и "TOF"
поставьте в "GA-M" импульс 1700, паузу 600 и "TOF" можно убрать.

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

Добавлено: 12 дек 2021, 12:35
bykos
Спасибо за подсказку. Чудесно работают три блока с разными значениями "импульс-пауза" на одной плате и не мешают друг другу