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

Ответить
bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27 ноя 2021, 13:47
Имя: Константин

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

Сообщение bykos »

Всем доброго дня. С помощью примеров в данной теме собрал пользовательский блок мигания светодиодом на 1, 2 , 3 вспышки в секунду и каждые 0,5 секунды. В проекте есть необходимость в зависимости от режима работы, иметь три режима индикации светодиодом. По одному блоки работают нормально, а два, или три вместе не хотят. Разобраться в причине не в силах. Буду благодарен за помощь.
2 вспышки светодиода.flp
3 вспышки светодиода.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2451
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

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

Сообщение Dryundel »

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

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

Сообщение bykos »

Спасибо за помощь. Все заработало.
Как все просто когда знаешь в чем дело.
bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27 ноя 2021, 13:47
Имя: Константин

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

Сообщение bykos »

К сожалению счастье было не долгим. Во время работы блока, при подаче 0 на вход блока одновременно с наличием 0 на выходе блока, светодиод тухнет. А при наличии 1 на выходе нет. В какой-то теме была написана команда на принудительное гашение, помню видел. Перелопатил все, два дня искал, не нашел. Кто на память помнит, подскажите.
bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27 ноя 2021, 13:47
Имя: Константин

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

Сообщение bykos »

Всем доброго дня. Собрал ПБ на 3 вспышки светодиода. В процессе работы проекта возникла "неприятность". При появлении 0 на входе En в момент когда светодиод не горит, блок отключается и при следующей подачи 1 на вход работает сначала цикла, то есть дает 3 вспышки. При 0 на входе в момент вспышки блок зависает и светодиод горит. При подаче 1 на вход продолжает цикл с момента "зависания" и может дать одну или две вспышки в зависимости от момента когда завис. Не могу понять как его заставить сбросить цикл на начало при 0 на входе.
Помогите кто может
3 вспышки светодиода (1).flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2451
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

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

Сообщение Dryundel »

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

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

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

Отправлено спустя 4 минуты 9 секунд:
[ref]bykos[/ref], пожалуйста, не дублируйте свои вопросы в разных темах. Это запрещено правилами форума.
bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27 ноя 2021, 13:47
Имя: Константин

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

Сообщение bykos »

Спасибо за ответ. Но к сожалению моих знаний не хватает чтобы понять что значит "сброс выходных переменных и переменных счетчиков" и как это выразить в коде
Аватара пользователя
Dryundel
Полковник
Сообщения: 2451
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

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

Сообщение Dryundel »

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

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

Сообщение bykos »

Согласен, что "взял достаточно сложный пример для весьма простой задачи". Но других примеров с таким результатом к сожалению не нашел. Да, может плохо искал, но что есть то есть. Прочитал обе темы, но сопоставить с моим вопросом так и не смог, к сожалению.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2451
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

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

Сообщение Dryundel »

[ref]bykos[/ref],
Dryundel писал(а): 09 дек 2021, 14:26 попытайтесь создать алгоритм мигания светодиодом с помощью штатных средств FLProg.
bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27 ноя 2021, 13:47
Имя: Константин

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

Сообщение bykos »

Кроха сын к отцу пришел, но послали Кроху...
aidar_i
Полковник
Сообщения: 3360
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 14 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

bykos писал(а): 10 дек 2021, 16:32 Кроха сын к отцу пришел, но послали Кроху.
Никто не посылал... Коды не формат нашего форума, нужно обращаться в Ардуино.ру.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

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

Сообщение rw6cm »

[ref]bykos[/ref],
Вы пришли к нам изучать визуальное программирование? Добро пожаловать!
Языку С++ не кто Вас здесь обучать не будет.
Ваш пример делается встроенными блоками FLProg.
семафор.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27 ноя 2021, 13:47
Имя: Константин

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

Сообщение bykos »

Спасибо за приглашение. Прислушался к вашему совету, и решил попробовать. Получилось как мне кажется довольно простая плата. Причем с массой вариантов от 1 вспышки до ...... меняя лишь время задержки в "GA-M" и "TOF" Осталось запихнуть это в ПБ. А до вашего примера мне пока еще далеко .
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

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

Сообщение rw6cm »

bykos писал(а): 11 дек 2021, 15:56 меняя лишь время задержки в "GA-M" и "TOF"
поставьте в "GA-M" импульс 1700, паузу 600 и "TOF" можно убрать.
Win10-64, FLProg (portable)
bykos
Рядовой
Сообщения: 18
Зарегистрирован: 27 ноя 2021, 13:47
Имя: Константин

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

Сообщение bykos »

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

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

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

Сейчас этот форум просматривают: SergeyShikal и 8 гостей