Многовыходной переключатель пропускает первый светодиод

Ответить
Аватара пользователя
ertos84
Рядовой
Сообщения: 7
Зарегистрирован: 09.02.2023{, 04:25}
Репутация: 0
Откуда: Абакан
Имя: Олег

Многовыходной переключатель пропускает первый светодиод

#1

Сообщение ertos84 » 18.02.2023{, 17:35}

Приветствую уважаемые форумчане!
Решил по тихоньку осваивать Arduino, с FLProg это происходит на много приятнее и проще (но не всегда).
Решил сделать для примера бегущий огонь из пяти светодиодов:генератор, счетчик, переключатель. Вроде бы ничего сложного, но споткнулся на одном неприятном моменте: при запуске программы свечение начинается со второго светодиода. Следующие циклы-как положено, первый участвует.
Подскажите пожалуйста, что я не учел в столь простой схеме?
Вложения
Primer_forum.flp
(220.18 КБ) 24 скачивания

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Многовыходной переключатель пропускает первый светодиод

#2

Сообщение Ingwar » 18.02.2023{, 18:04}

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

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

Многовыходной переключатель пропускает первый светодиод

#3

Сообщение WildCat » 18.02.2023{, 21:06}

Можно либо считать от -1, либо сдвинуть выходы дешифратора, либо между счётчиком и дешифратором поставить блок вычитания единицы.

Аватара пользователя
ertos84
Рядовой
Сообщения: 7
Зарегистрирован: 09.02.2023{, 04:25}
Репутация: 0
Откуда: Абакан
Имя: Олег

Многовыходной переключатель пропускает первый светодиод

#4

Сообщение ertos84 » 19.02.2023{, 13:42}

По входу поставил предустановку константу -1 и теперь как положено!
Три дня сидел все ни как допереть не мог. :smile14: :smile14:
Спасибо за помощь! :smile152:

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

Многовыходной переключатель пропускает первый светодиод

#5

Сообщение rw6cm » 20.02.2023{, 09:26}

ertos84,
Как вариант поставить между генератором и счетчиком Ftrig
Win10-64, FLProg (portable)

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Многовыходной переключатель пропускает первый светодиод

#6

Сообщение AlexCrane » 20.02.2023{, 12:42}

ertos84, rw6cm, Или переменную между счетчиком и м.переключателем.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

Многовыходной переключатель пропускает первый светодиод

#7

Сообщение Dryundel » 20.02.2023{, 17:08}

ertos84 писал(а):
18.02.2023{, 17:35}
Решил по тихоньку осваивать Arduino, с FLProg это происходит на много приятнее и проще
Отличное начинание!
Вот вам еще два примера бегущего огня на дешифраторе и на битовых операциях.
Когда разберетесь как работают оба, можно будет зачесть подъем на целую ступеньку. :)
Примеры бегущего огняПоказать
Primer_forum_New.jpg
Primer_forum_New.flp
(426.9 КБ) 19 скачиваний

Аватара пользователя
ertos84
Рядовой
Сообщения: 7
Зарегистрирован: 09.02.2023{, 04:25}
Репутация: 0
Откуда: Абакан
Имя: Олег

Многовыходной переключатель пропускает первый светодиод

#8

Сообщение ertos84 » 21.02.2023{, 05:45}

Dryundel писал(а):
20.02.2023{, 17:08}
Отличное начинание!
Вот вам еще два примера бегущего огня на дешифраторе и на битовых операциях.
Когда разберетесь как работают оба, можно будет зачесть подъем на целую ступеньку.
Спасибо за такие примеры! Обязательно разберусь, но как только закончу начатое!
Мотивацией к изучение послужил сломанный детский аппарат "Хватайка". Приобрел в Детском Мире за символическую плату как "неисправный".
Хватайка.JPG
Так как с паяльником на "Ты", думал обойдусь малой кровью, в надежде на какой нибудь пустяк. Но не тут то было, на плате управления МК (капля) кипела как утюг. Вот тут и пришла в голову идея переделать под управлением Ардуино. В голове сложил картинку последовательности:
в режиме ожидания - бегущий огонек из светодиодов (на верхней части) и бегущие по кругу сегменты на двух разрядном индикаторе (с ОК).
кинул монетку - режим ожидания отключается отсчитывается таймер в 60 секунд, за которые нужно успеть достать игрушку по нажатию кнопки. Ну и в идеале чтобы музыка проигрывалась, когда идет обратный отсчет (на алиэкспресе присмотрел MP3 модуль).
Так как придется задействовать много портов ввода, вывода (кнопки джойстиков, выходы на моторы, концевики, светодиоды и двухразрядный семисегментный индикатор) решил разделить это на две платы Ардуино (Uno и Nano) соединенные по UART.
Задумку буду осуществлять до последнего, так как дочка уже давно мечтала об такой игрушке, да и для саморазвития только плюс (уже составил план дальнейших изобретений).
Но чем дальше в лес тем больше вопросов, на которые я думаю вы мне дадите правильное направление, по крайней мере надеюсь на это:)
С бегущим огнем разобрался благодаря вашим подсказкам. Также сделал бегущий огонь на индикаторе (по кругу) но ни как не могу заставить его работать в цикле (по аналогии со светодиодами).
Режим_ожидания.flp
(724.08 КБ) 16 скачиваний

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

Многовыходной переключатель пропускает первый светодиод

#9

Сообщение rw6cm » 21.02.2023{, 09:56}

ertos84 писал(а):
21.02.2023{, 05:45}
С бегущим огнем разобрался благодаря вашим подсказкам. Также сделал бегущий огонь на индикаторе (по кругу) но ни как не могу заставить его работать в цикле (по аналогии со светодиодами).
Посмотрел Видео про эту игрушку,
но что то там не увидел индикатор по кругу, да и сверху диоды не только в лево/право бегают.
Да и на индикатор по хорошему дешифратор бы поставить
Win10-64, FLProg (portable)

Аватара пользователя
ertos84
Рядовой
Сообщения: 7
Зарегистрирован: 09.02.2023{, 04:25}
Репутация: 0
Откуда: Абакан
Имя: Олег

Многовыходной переключатель пропускает первый светодиод

#10

Сообщение ertos84 » 21.02.2023{, 10:31}

rw6cm писал(а):
21.02.2023{, 09:56}
Посмотрел Видео про эту игрушку,
но что то там не увидел индикатор по кругу, да и сверху диоды не только в лево/право бегают.
У меня цели нет полностью сделать копию заводской модели. Решил что в режиме ожидания круговое свечение двухразрядного семисегментного индикатора будет смотреться интересно.
rw6cm писал(а):
21.02.2023{, 09:56}
Да и на индикатор по хорошему дешифратор бы поставить
А с дешифратором можно реализовать последовательное включение сегментов в нужные разряды?

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

Многовыходной переключатель пропускает первый светодиод

#11

Сообщение Dryundel » 21.02.2023{, 12:37}

ertos84 писал(а):
21.02.2023{, 05:45}
А с дешифратором можно реализовать последовательное включение сегментов в нужные разряды?
Последовательное можно, но по одному. Одновременно свечение двух, трех... нельзя. А вот с помощью битовых операций можно что угодно. Возможна любая последовательность и сочетание.
Изучайте примеры. :)

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

Многовыходной переключатель пропускает первый светодиод

#12

Сообщение WildCat » 21.02.2023{, 12:41}

Dryundel писал(а):
21.02.2023{, 12:37}
Одновременно свечение двух, трех... нельзя
Если поставить на выходах дешифратора блоки ИЛИ и последовательно входы завести, то можно включать светодиоды парами. Своего рода аналог диодной развязки.
1|2=d1&d2
2|3=d2&d3
3|4=d3&d4
etc


Ну или использовать командоаппарат и тогда можно вообще в произвольной последовательности диоды включать.

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

Многовыходной переключатель пропускает первый светодиод

#13

Сообщение Dryundel » 21.02.2023{, 15:49}

WildCat писал(а):
21.02.2023{, 12:41}
Ну или использовать командоаппарат и тогда можно вообще в произвольной последовательности диоды включать.
Тяжеловат он в понимании логики для новичка. Да и для моргания светодиодов избыточен.

Ок давайте знакомиться с битами. :)
Это совсем не низкоуровневое программирование, как считают некоторые. На самом деле все просто до банальности.
Сделаем пару-тройку примеров и все станет понятно.

Итак
Есть у нас переменная типа Byte. Это 8 бит. Вот ими то и будем оперировать.
Записав к примеру число 48 в бинарном виде получаем b00110000
Штатный блок Byte->Bits при подаче на вход 48 выдаст логическую единицу на выходах Bit-4 и Bit-5
(Биты считаются с нулевого и справа налево)
Вот и вся наука.

Подавая на вход блока Byte->Bits значения от 0 до 255, получаем разное сочетание единиц и нулей на выходах.
Вывод рандомного числа на светодиодыПоказать
Бинарные Операции Пример 1.jpg
Бинарные Операции Пример 1.flp
(227.27 КБ) 14 скачиваний
Вывод счета от 0 до 255 на диодыПоказать
Бинарные Операции Пример 2.jpg
Бинарные Операции Пример 2.flp
(208.42 КБ) 13 скачиваний
.
Есть некоторая сложность в переводе десятичного числа в бинарный формат. НО! FLProg легко работает и с бинарным форматом.
На входы блоков и в константы переменных можно вводить b00110000 и все будет точно так же работать.
А если выводить разные числа последовательно, то можно получить абсолютно любой эффект. При этом всё будет достаточно наглядно.

b00000000
b00000001
b00000010
b00000100
b00001000
b00010000
b00100000
b01000000
b10000000

Светящийся светодиод "побежит" именно так, как единица в этой последовательности.
Единственный момент, это то, что при вводе бинарного числа, нули слева удалятся. Точно так же как и в десятичном формате.
Эффект с последовательным вводомПоказать
Бинарные Операции Пример 3.jpg
Бинарные Операции Пример 3.flp
(324.87 КБ) 13 скачиваний
.
А огромный блок с большим количеством входов можно заменить на блок "Получение элемента массива", создав в нем всю последовательность.
Прячем программу эффектов в массивПоказать
Бинарные Операции Пример 4.jpg
Бинарные Операции Пример 4.flp
(231.28 КБ) 13 скачиваний
.
Конечно же будет лучше, если сохранить такой массив в EEPROM, но штатных средств для этого нет.
Однако можно воспользоваться штатной записью и чтением значений в EEPROM, выполнив запись один раз при старте контроллера.

Аватара пользователя
ertos84
Рядовой
Сообщения: 7
Зарегистрирован: 09.02.2023{, 04:25}
Репутация: 0
Откуда: Абакан
Имя: Олег

Многовыходной переключатель пропускает первый светодиод

#14

Сообщение ertos84 » 21.02.2023{, 17:29}

Dryundel писал(а):
21.02.2023{, 15:49}
Ок давайте знакомиться с битами.
Это совсем не низкоуровневое программирование, как считают некоторые. На самом деле все просто до банальности.
Сделаем пару-тройку примеров и все станет понятно.
На самом деле ничего сложного. Теория в полне понятна. Тем более с такими примерами. Спасибо громадное :smile152: !
Если взять семисегментный двухразрядный индикатор при зажигании сегментов вопросов вообще нет, тем более за сегодняшний день открыл для себя много методов, а вот с разрядами все ни как не могу вникнуть. Это будет являться по сути динамической индикацией.
И нужно подавать 0 на катод, либо первого или второго разряда, в определенный момент времени.

Отправлено спустя 9 минут 25 секунд:
Ааа, вроде понял. Все также игра с битами! Проведу эксперимент и обязательно отпишусь о результате. На самом деле с битами можно творить чудеса :yes:

Аватара пользователя
ertos84
Рядовой
Сообщения: 7
Зарегистрирован: 09.02.2023{, 04:25}
Репутация: 0
Откуда: Абакан
Имя: Олег

Многовыходной переключатель пропускает первый светодиод

#15

Сообщение ertos84 » 26.02.2023{, 15:18}

На данный момент перешел к следующему шагу, а именно иллюминация в режиме игры. Первая часть программы, иллюминация светодиодов, работает как положено. Нажал - горит, еще раз нажал - погасло. Вторая часть -нажал 60 секунд обратный отсчет. При повторном нажатии - дисплей должен отключиться. Так вот чтобы он отключался от повторного нажатия ни как не получается. Подскажите где я сделал не правильно или не доделал.
Mode_Game.flp
(397.1 КБ) 16 скачиваний

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

Многовыходной переключатель пропускает первый светодиод

#16

Сообщение Dryundel » 26.02.2023{, 16:02}

ertos84, у вас индикаторы с общим катодом. Для того, чтобы все погасло надо на катоды подать "плюс". Т.е. надо на выходы которые идут на катоды подать логическую единицу.
Достаточно подсказки?

Аватара пользователя
ertos84
Рядовой
Сообщения: 7
Зарегистрирован: 09.02.2023{, 04:25}
Репутация: 0
Откуда: Абакан
Имя: Олег

Многовыходной переключатель пропускает первый светодиод

#17

Сообщение ertos84 » 26.02.2023{, 16:59}

Я понимаю что надо повесить единицу на катоды, чтобы погасить индикаторы. Не могу допетрить какой блок использовать.

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

Многовыходной переключатель пропускает первый светодиод

#18

Сообщение Dryundel » 26.02.2023{, 17:10}

ertos84 писал(а):
26.02.2023{, 16:59}
Не могу допетрить какой блок использовать.
Типа так. И на второй аналогично.
4.jpg

Ответить

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