Бегущие поворотники

Создаем свой блок. Вопросы, помощь знатоков.
Selya
Рядовой
Сообщения: 3
Зарегистрирован: 26.08.2018{, 00:33}
Репутация: 0
Имя: Сергей

Бегущие поворотники

#1

Сообщение Selya » 26.08.2018{, 12:49}

Этот блок встречается у Грачика ( Arduino Prom https://www.youtube.com/channel/UCZ2a-G ... 34vq5ob7Kw ) в проекте "Бегущие поворотники на WS2812 и не только". Он с этим блоком плотно поработал в этом проекте, возможно он тоже подскажет.

kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22.10.2016{, 14:22}
Репутация: 28

Бегущие повороники

#2

Сообщение kalobyte » 27.08.2018{, 19:49}

spektr107,
посмотрел, на чем сделан блок - Adafruit_NeoPixel
там используется манипуляция пинами при помощи ассемблерной вставки + время между посылкой данных в диоды, которое состоит из кучи неоптимального кода, который нагенерила флпрог

эти светодиоды очень требовательны к таймингам и казалось бы сраных 800 или даже 400кгц при 16мгц контроллера, но...
поэтому есть другая библиотека fast led, которая использует спи для передачи нужных таймингов и модуль надо под нее переделывать

Аватара пользователя
ViktorPetrov
Лейтенант
Сообщения: 676
Зарегистрирован: 09.04.2018{, 23:56}
Репутация: 49
Имя: Виктор

Бегущие повороники

#3

Сообщение ViktorPetrov » 27.08.2018{, 22:02}


kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22.10.2016{, 14:22}
Репутация: 28

Бегущие повороники

#4

Сообщение kalobyte » 28.08.2018{, 00:03}

нужно понимать, что флпрог это не универсальный заменитель кода и многие вещи проще сделать в коде, потому что в флпроге ты затратиш куда больше времени

Аватара пользователя
Cancertanly
Сержант
Сообщения: 214
Зарегистрирован: 06.04.2016{, 19:59}
Репутация: 20
Откуда: bish
Имя: Антон

Бегущие повороники

#5

Сообщение Cancertanly » 28.08.2018{, 05:23}

скиньте проект, пожалуйста, посмотрим
FLProg_ru
https://t.me/flrog_ru ...................................................FLProg_v7.3.4
https://t.me/soft_duino

Vit114
Рядовой
Сообщения: 4
Зарегистрирован: 18.08.2018{, 06:48}
Репутация: 0
Имя: Виталий

Бегущие повороники

#6

Сообщение Vit114 » 28.08.2018{, 07:23}

Вот здесь что-то есть по теме

kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22.10.2016{, 14:22}
Репутация: 28

Бегущие повороники

#7

Сообщение kalobyte » 28.08.2018{, 11:48}

spektr107 писал(а):
28.08.2018{, 11:31}
Так я стараюсь обучать пользователей работе с Flprog
так я и говорю, что флпрог это не универсальное решение всех вопросов
есть вещи, которые флпрог не в состоянии сделать и я с этим столкнулся и пишу код руками

с твоими светодиодами тоже самое, когда эффект реализуется какой-то функцией, которая в реальном времени генерит нужные данные и ее проще руками написать, чем из блоков составлять
к тому же у тебя библиотека тормозная и ее надо заменить, а это значит на 95% переписать код блока, а переписать код - это убить 1-2 дня

программирование это нихера не просто, как любят заявлять разные школьники на хабре и ютубе

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

Бегущие повороники

#8

Сообщение AVGN » 28.08.2018{, 11:53}

Cancertanly писал(а):
28.08.2018{, 05:23}
скиньте проект, пожалуйста, посмотрим
Уже давно пора привыкнуть и не реагировать на темы где задают вопросы по своему коряво работающему проекту не предоставляя его.
Автор пришел пообщаться.
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Evgesha
Лейтенант
Сообщения: 525
Зарегистрирован: 29.10.2015{, 09:57}
Репутация: 20
Откуда: Kazakhstan
Имя: Evgesha

Бегущие повороники

#9

Сообщение Evgesha » 28.08.2018{, 13:50}

AVGN,
Так вот же выше указана ссылка на проект

Может кто нибудь помочь с этим вопросом господа генералы?
Вот сам проект:https://yadi.sk/d/YlTyP6kl3acq8i
ПОМОЩЬ ПРОЕКТУ FLPROG:
http://flprog.ru/pomoshh-proektu/

kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22.10.2016{, 14:22}
Репутация: 28

Бегущие повороники

#10

Сообщение kalobyte » 29.08.2018{, 20:31}

а разве тут кто-то кому-то должен что-то?

Аватара пользователя
Cancertanly
Сержант
Сообщения: 214
Зарегистрирован: 06.04.2016{, 19:59}
Репутация: 20
Откуда: bish
Имя: Антон

Бегущие повороники

#11

Сообщение Cancertanly » 29.08.2018{, 20:37}

Прошу прощения, что не хватает на ваш проект времени. Но обещаю, что как только появится хоть немного свободного, сразу же помогу чем смогу. Да и многие на форуме всегда по возможности помогают....
FLProg_ru
https://t.me/flrog_ru ...................................................FLProg_v7.3.4
https://t.me/soft_duino

kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22.10.2016{, 14:22}
Репутация: 28

Бегущие повороники

#12

Сообщение kalobyte » 29.08.2018{, 21:28}

дык пусть донатят тогда, за бабло всяко кто-то напишет

Отправлено спустя 32 минуты 42 секунды:
посмотрел твой ролик - хороший, годный пример того, как не надо делать

Аватара пользователя
Cancertanly
Сержант
Сообщения: 214
Зарегистрирован: 06.04.2016{, 19:59}
Репутация: 20
Откуда: bish
Имя: Антон

Бегущие повороники

#13

Сообщение Cancertanly » 30.08.2018{, 07:24}

сразу же вопрос? зачем нужен этот момент?
СпойлерПоказать
2018-08-30_LI.jpg
почему сразу ТРУ не поставить?

кстати, этот блок мне знаком. В нем такая фича есть, что если включить светодиод и на входе поменять номер пикселя, то он останется гореть.
можно было и не извращаться с каждым в отдельности, а просто менять номер светодиода с любой периодичностью. и также выключать на вход енабле подавать 0 и переключать номер светодиода. получится еще более интересный эффект
FLProg_ru
https://t.me/flrog_ru ...................................................FLProg_v7.3.4
https://t.me/soft_duino

Аватара пользователя
Cancertanly
Сержант
Сообщения: 214
Зарегистрирован: 06.04.2016{, 19:59}
Репутация: 20
Откуда: bish
Имя: Антон

Бегущие повороники

#14

Сообщение Cancertanly » 30.08.2018{, 09:56}

Для решения вашей задачи может подойти немного другой ПБ. Он в принципе такой же и на той же библиотеке но собран для 10ти светодиодов в ленте. если у вас не критично с пинами на уне то каждый отрезок посадить на отдельный пин, так будет проще.
WS2812_Stick_10_blocks_(CODE).ubi
(350.52 КБ) 137 скачиваний
FLProg_ru
https://t.me/flrog_ru ...................................................FLProg_v7.3.4
https://t.me/soft_duino

kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22.10.2016{, 14:22}
Репутация: 28

Бегущие повороники

#15

Сообщение kalobyte » 30.08.2018{, 10:33}

тут 2 часть - электрическая и программная
ходовые огни - их назначение - тупо светиться днем, они не должны переливаться, они не должны мигать, поэтому с электрической точки зрения это просто 1 светодиод

задний сигнал тоже белый, он тоже должен гореть, когда включена задняя скорость и это тоже один светодиод по сути
то же самое с габаритными и стопами
поэтому для этих фар не нужен никакой контроллер и ими управляет эбу

максимум ты можеш запихать в поворотники линейки из светодиодов обычных, прилепить полевики к общему проводу или улн2003
вот как тут http://www.twovolt.com/tag/large-led-di ... t-and-pcb/

взять библиотеку програмного шима https://github.com/bhagman/SoftPWM
написать код для мигания светодиодами
причем левые и правые поворотники подключены параллельно, а общий провод через пару транзисторов, которые будут включать нужный поворотник

Аватара пользователя
KaScada
Лейтенант
Сообщения: 388
Зарегистрирован: 23.04.2016{, 12:33}
Репутация: 13
Контактная информация:

Бегущие повороники

#16

Сообщение KaScada » 12.10.2018{, 08:22}

Если актуально для кого-то, то мы сделали свой блок для управления WS2812, для поворотников должен подойти удачно.
Тут блок и видео как работать.
ПО КаСкада на базе смартфона/планшета с ОС Андроид

Подробнее здесь: http://www.hmi-kascada.ru/

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

Бегущие повороники

#17

Сообщение Сергей » 21.06.2019{, 09:22}

spektr107 писал(а):
29.08.2018{, 20:49}
Нет конечно. Это не для меня нужно было, публика просила, вопрос был довольно глобальный, не узко направленный на одного человека, у меня вообще авто нет
spektr107, привет. Смотрю твой канал регулярно, ну и естественно подписан.
Сейчас занимаюсь детским автомобилем. А в этот момент поворотниками. Вижу что тормозят эти все самоделки.
Делаю блок для поворотников, основанный на работе с таймером. Думаю тормозить будет меньше. Только разбираюсь что к чему, но подвижки есть. Скоро скину.

Отправлено спустя 1 час 9 минут 7 секунд:
Сергей писал(а):
21.06.2019{, 09:22}
таймером
Там принцип такой. Прерывание по таймеру считают две переменные.
В основном цикле программы по условиям "если" выполняется проход программы по соответствующим веткам этого блока. Первый проход по одному пути - настраивает переменные для поворота, второй по другому - с заданной на входе блока длительностью, последовательно включает заданное любое количество и в любом направлении, светодиодов.
После зажигания последнего диода, программа идёт по третьему пути, где гасит все диоды сразу и выжидает заданную паузу.
Потом цикл повторяется, при условии, что на входе блока все ещё присутствует единица включения.

Быстрота реализации должна быть высокая, потому что запись в ленту проходит только в моменты изменения переменных счётчиков. Путь прохода программы зависит от значений переменных. Основной цикл программы выполняется быстро и не стабильно во времени. Соответственно точность работы зависит от прерываний аппаратного таймера.
Подтормаживания не должно быть, потому что запись в диодную ленту ведётся в одном месте и один раз за проход основного цикла. Перед записью блок настраивает, по вышеописанному принцип, какие именно и сколько диодов нужно включить/отключить.

Забыл написать. Блок работает с библиотекой fastLed.h

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

Бегущие повороники

#18

Сообщение Сергей » 23.06.2019{, 00:57}

Вот, что получилось:

Из недостатков:
- занят один таймер. Кажется Т2.
- этот таймер срабатывает минимум раз на 40 мс. Реже можно установить, но тогда повороты будут медленно работать.
- т. к. в подпрограмме обработки прерываний по таймеру находится почти весь код, (+частый вызов прерывания), на функцию Loop() остается мало процессорного времени во время работы поворотов. Из-а этого практически останавливается работа модбаса и других процессов в функции Loop(). Надо оптимизировать код. Если перенести основную часть кода из таймера в функцию Loop(), то будет подтормаживать работа поворотов. От чего мы пытаемся уйти.

com
Капитан
Сообщения: 831
Зарегистрирован: 31.05.2018{, 22:12}
Репутация: 83
Откуда: Санкт-Петербург
Имя: Ринат

Бегущие повороники

#19

Сообщение com » 23.06.2019{, 12:41}

А что такое повороники?

liamhoulet
Рядовой
Сообщения: 14
Зарегистрирован: 08.03.2017{, 22:15}
Репутация: 0
Откуда: Ростовская обл. г. Зерноград

Бегущие повороники

#20

Сообщение liamhoulet » 23.06.2019{, 14:30}

Сергей а можно попросить ПБ. Говорили что выложите?
liam

Ответить

Вернуться в «Разработка пользовательских блоков»