Бегущие поворотники
Бегущие поворотники
Этот блок встречается у Грачика ( Arduino Prom https://www.youtube.com/channel/UCZ2a-G ... 34vq5ob7Kw ) в проекте "Бегущие поворотники на WS2812 и не только". Он с этим блоком плотно поработал в этом проекте, возможно он тоже подскажет.
Бегущие повороники
[ref]spektr107[/ref],
посмотрел, на чем сделан блок - Adafruit_NeoPixel
там используется манипуляция пинами при помощи ассемблерной вставки + время между посылкой данных в диоды, которое состоит из кучи неоптимального кода, который нагенерила флпрог
эти светодиоды очень требовательны к таймингам и казалось бы сраных 800 или даже 400кгц при 16мгц контроллера, но...
поэтому есть другая библиотека fast led, которая использует спи для передачи нужных таймингов и модуль надо под нее переделывать
посмотрел, на чем сделан блок - Adafruit_NeoPixel
там используется манипуляция пинами при помощи ассемблерной вставки + время между посылкой данных в диоды, которое состоит из кучи неоптимального кода, который нагенерила флпрог
эти светодиоды очень требовательны к таймингам и казалось бы сраных 800 или даже 400кгц при 16мгц контроллера, но...
поэтому есть другая библиотека fast led, которая использует спи для передачи нужных таймингов и модуль надо под нее переделывать
- ViktorPetrov
- Капитан
- Сообщения: 807
- Зарегистрирован: 09 апр 2018, 23:56
- Имя: Виктор
- Благодарил (а): 4 раза
- Поблагодарили: 1 раз
Бегущие повороники
нужно понимать, что флпрог это не универсальный заменитель кода и многие вещи проще сделать в коде, потому что в флпроге ты затратиш куда больше времени
- Cancertanly
- Сержант
- Сообщения: 214
- Зарегистрирован: 06 апр 2016, 19:59
- Откуда: bish
- Имя: Антон
- Поблагодарили: 1 раз
Бегущие повороники
скиньте проект, пожалуйста, посмотрим
FLProg_ru
https://t.me/flrog_ru ...................................................FLProg_v7.3.4
https://t.me/soft_duino
https://t.me/flrog_ru ...................................................FLProg_v7.3.4
https://t.me/soft_duino
Бегущие повороники
так я и говорю, что флпрог это не универсальное решение всех вопросов
есть вещи, которые флпрог не в состоянии сделать и я с этим столкнулся и пишу код руками
с твоими светодиодами тоже самое, когда эффект реализуется какой-то функцией, которая в реальном времени генерит нужные данные и ее проще руками написать, чем из блоков составлять
к тому же у тебя библиотека тормозная и ее надо заменить, а это значит на 95% переписать код блока, а переписать код - это убить 1-2 дня
программирование это нихера не просто, как любят заявлять разные школьники на хабре и ютубе
Бегущие повороники
Уже давно пора привыкнуть и не реагировать на темы где задают вопросы по своему коряво работающему проекту не предоставляя его.
Автор пришел пообщаться.
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн
☆Альберт Эйнштейн
-
- Лейтенант
- Сообщения: 537
- Зарегистрирован: 29 окт 2015, 09:57
- Откуда: Kazakhstan
- Имя: Evgesha
Бегущие повороники
[ref]AVGN[/ref],
Так вот же выше указана ссылка на проект
Может кто нибудь помочь с этим вопросом господа генералы?
Вот сам проект:https://yadi.sk/d/YlTyP6kl3acq8i
Так вот же выше указана ссылка на проект
Может кто нибудь помочь с этим вопросом господа генералы?
Вот сам проект:https://yadi.sk/d/YlTyP6kl3acq8i
- Cancertanly
- Сержант
- Сообщения: 214
- Зарегистрирован: 06 апр 2016, 19:59
- Откуда: bish
- Имя: Антон
- Поблагодарили: 1 раз
Бегущие повороники
Прошу прощения, что не хватает на ваш проект времени. Но обещаю, что как только появится хоть немного свободного, сразу же помогу чем смогу. Да и многие на форуме всегда по возможности помогают....
FLProg_ru
https://t.me/flrog_ru ...................................................FLProg_v7.3.4
https://t.me/soft_duino
https://t.me/flrog_ru ...................................................FLProg_v7.3.4
https://t.me/soft_duino
Бегущие повороники
дык пусть донатят тогда, за бабло всяко кто-то напишет
Отправлено спустя 32 минуты 42 секунды:
посмотрел твой ролик - хороший, годный пример того, как не надо делать
Отправлено спустя 32 минуты 42 секунды:
посмотрел твой ролик - хороший, годный пример того, как не надо делать
- Cancertanly
- Сержант
- Сообщения: 214
- Зарегистрирован: 06 апр 2016, 19:59
- Откуда: bish
- Имя: Антон
- Поблагодарили: 1 раз
Бегущие повороники
сразу же вопрос? зачем нужен этот момент?
[spoiler] [/spoiler]
почему сразу ТРУ не поставить?
кстати, этот блок мне знаком. В нем такая фича есть, что если включить светодиод и на входе поменять номер пикселя, то он останется гореть.
можно было и не извращаться с каждым в отдельности, а просто менять номер светодиода с любой периодичностью. и также выключать на вход енабле подавать 0 и переключать номер светодиода. получится еще более интересный эффект
[spoiler] [/spoiler]
почему сразу ТРУ не поставить?
кстати, этот блок мне знаком. В нем такая фича есть, что если включить светодиод и на входе поменять номер пикселя, то он останется гореть.
можно было и не извращаться с каждым в отдельности, а просто менять номер светодиода с любой периодичностью. и также выключать на вход енабле подавать 0 и переключать номер светодиода. получится еще более интересный эффект
У вас нет необходимых прав для просмотра вложений в этом сообщении.
FLProg_ru
https://t.me/flrog_ru ...................................................FLProg_v7.3.4
https://t.me/soft_duino
https://t.me/flrog_ru ...................................................FLProg_v7.3.4
https://t.me/soft_duino
- Cancertanly
- Сержант
- Сообщения: 214
- Зарегистрирован: 06 апр 2016, 19:59
- Откуда: bish
- Имя: Антон
- Поблагодарили: 1 раз
Бегущие повороники
Для решения вашей задачи может подойти немного другой ПБ. Он в принципе такой же и на той же библиотеке но собран для 10ти светодиодов в ленте. если у вас не критично с пинами на уне то каждый отрезок посадить на отдельный пин, так будет проще.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
FLProg_ru
https://t.me/flrog_ru ...................................................FLProg_v7.3.4
https://t.me/soft_duino
https://t.me/flrog_ru ...................................................FLProg_v7.3.4
https://t.me/soft_duino
Бегущие повороники
тут 2 часть - электрическая и программная
ходовые огни - их назначение - тупо светиться днем, они не должны переливаться, они не должны мигать, поэтому с электрической точки зрения это просто 1 светодиод
задний сигнал тоже белый, он тоже должен гореть, когда включена задняя скорость и это тоже один светодиод по сути
то же самое с габаритными и стопами
поэтому для этих фар не нужен никакой контроллер и ими управляет эбу
максимум ты можеш запихать в поворотники линейки из светодиодов обычных, прилепить полевики к общему проводу или улн2003
вот как тут http://www.twovolt.com/tag/large-led-di ... t-and-pcb/
взять библиотеку програмного шима https://github.com/bhagman/SoftPWM
написать код для мигания светодиодами
причем левые и правые поворотники подключены параллельно, а общий провод через пару транзисторов, которые будут включать нужный поворотник
ходовые огни - их назначение - тупо светиться днем, они не должны переливаться, они не должны мигать, поэтому с электрической точки зрения это просто 1 светодиод
задний сигнал тоже белый, он тоже должен гореть, когда включена задняя скорость и это тоже один светодиод по сути
то же самое с габаритными и стопами
поэтому для этих фар не нужен никакой контроллер и ими управляет эбу
максимум ты можеш запихать в поворотники линейки из светодиодов обычных, прилепить полевики к общему проводу или улн2003
вот как тут http://www.twovolt.com/tag/large-led-di ... t-and-pcb/
взять библиотеку програмного шима https://github.com/bhagman/SoftPWM
написать код для мигания светодиодами
причем левые и правые поворотники подключены параллельно, а общий провод через пару транзисторов, которые будут включать нужный поворотник
Бегущие повороники
Если актуально для кого-то, то мы сделали свой блок для управления WS2812, для поворотников должен подойти удачно.
Тут блок и видео как работать.
Тут блок и видео как работать.
- Сергей
- Лейтенант
- Сообщения: 578
- Зарегистрирован: 31 авг 2015, 15:06
- Имя: Сергей
- Контактная информация:
Бегущие повороники
[ref]spektr107[/ref], привет. Смотрю твой канал регулярно, ну и естественно подписан.spektr107 писал(а): 29 авг 2018, 20:49 Нет конечно. Это не для меня нужно было, публика просила, вопрос был довольно глобальный, не узко направленный на одного человека, у меня вообще авто нет
Сейчас занимаюсь детским автомобилем. А в этот момент поворотниками. Вижу что тормозят эти все самоделки.
Делаю блок для поворотников, основанный на работе с таймером. Думаю тормозить будет меньше. Только разбираюсь что к чему, но подвижки есть. Скоро скину.
Отправлено спустя 1 час 9 минут 7 секунд:
Там принцип такой. Прерывание по таймеру считают две переменные.
В основном цикле программы по условиям "если" выполняется проход программы по соответствующим веткам этого блока. Первый проход по одному пути - настраивает переменные для поворота, второй по другому - с заданной на входе блока длительностью, последовательно включает заданное любое количество и в любом направлении, светодиодов.
После зажигания последнего диода, программа идёт по третьему пути, где гасит все диоды сразу и выжидает заданную паузу.
Потом цикл повторяется, при условии, что на входе блока все ещё присутствует единица включения.
Быстрота реализации должна быть высокая, потому что запись в ленту проходит только в моменты изменения переменных счётчиков. Путь прохода программы зависит от значений переменных. Основной цикл программы выполняется быстро и не стабильно во времени. Соответственно точность работы зависит от прерываний аппаратного таймера.
Подтормаживания не должно быть, потому что запись в диодную ленту ведётся в одном месте и один раз за проход основного цикла. Перед записью блок настраивает, по вышеописанному принцип, какие именно и сколько диодов нужно включить/отключить.
Забыл написать. Блок работает с библиотекой fastLed.h
- Сергей
- Лейтенант
- Сообщения: 578
- Зарегистрирован: 31 авг 2015, 15:06
- Имя: Сергей
- Контактная информация:
Бегущие повороники
Вот, что получилось:
[bbvideo]https://www.youtube.com/watch?v=cDAxvRt ... e=youtu.be[/bbvideo]
Из недостатков:
- занят один таймер. Кажется Т2.
- этот таймер срабатывает минимум раз на 40 мс. Реже можно установить, но тогда повороты будут медленно работать.
- т. к. в подпрограмме обработки прерываний по таймеру находится почти весь код, (+частый вызов прерывания), на функцию Loop() остается мало процессорного времени во время работы поворотов. Из-а этого практически останавливается работа модбаса и других процессов в функции Loop(). Надо оптимизировать код. Если перенести основную часть кода из таймера в функцию Loop(), то будет подтормаживать работа поворотов. От чего мы пытаемся уйти.
[bbvideo]https://www.youtube.com/watch?v=cDAxvRt ... e=youtu.be[/bbvideo]
Из недостатков:
- занят один таймер. Кажется Т2.
- этот таймер срабатывает минимум раз на 40 мс. Реже можно установить, но тогда повороты будут медленно работать.
- т. к. в подпрограмме обработки прерываний по таймеру находится почти весь код, (+частый вызов прерывания), на функцию Loop() остается мало процессорного времени во время работы поворотов. Из-а этого практически останавливается работа модбаса и других процессов в функции Loop(). Надо оптимизировать код. Если перенести основную часть кода из таймера в функцию Loop(), то будет подтормаживать работа поворотов. От чего мы пытаемся уйти.
-
- Рядовой
- Сообщения: 14
- Зарегистрирован: 08 мар 2017, 22:15
- Откуда: Ростовская обл. г. Зерноград
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость