Режим приветствия поворотника с функцией дхо,аварийка на адресной ленте Ws2812
- Войдите на сайт для отправки комментариев
Пт, 10/12/2021 - 19:04
Всем благ народ
Может кто помочь в исправлении кода скетча . Есть немного ошибок решить неполучается
1 не одновременно включаются ленты, запуск поочередно происходит
2 Режим поворотника отрабатывает через дхо,а должно дхо вкл после как поворотник отработает
3 Нет запуска второй ленты поворотов
4 Прописать кнопку аварийки
Это в раздел "Ищу исполнителя"
Это сам код
Не судите строго я в этом новичек Учусь в програмировании
этот код невозможно исправить, его надо полностью переписывать. Главная проблема - использование оператора delay() Все делеи нужно удалить
этот код невозможно исправить, его надо полностью переписывать. Главная проблема - использование оператора delay() Все делеи нужно удалить
при удалении delay() логически не выдет т.к паузы не будет
Файл исходник написан в Ардблок на сайте ардуиноблок и любезно предоставлен ими
С чего вдруг паузы не будет? А как же здесь получается - http://arduino.ru/tutorials/BlinkWithoutDelay ?
С чего вдруг паузы не будет? А как же здесь получается - http://arduino.ru/tutorials/BlinkWithoutDelay ?
возможно ни так выразился он что
delay()менять на millis()
Brat4791, у вас русский не родной?
возможно ни так выразился он что делей менять на милес
Исходя из мнения, что каждый должен иметь шанс, я попробую объяснить ровно один раз.
1. Используй заглавные буквы и знаки препинания. Не для уроков русского, а для того, чтобы тебя можно было понимать. Случайные ошибки и опечатки никого не волнуют. Но цитированное выше - просто неуважение к собеседникам.
2. По сути кода. Код бывает блокирующим и неблокирующим. delay() делает код блокирующим, то есть во время выполнения алгоритма ничего другого не может происходить., в том числе и реакции на кнопки.
3. Программы для микроконтроллеров (МК) в парадигме "бесконечный цикл", которая принята в Ардуино следует писать в виде комбинации неблокирующих шагов. Следует сделать проход loop() максимально коротким - единицы миллисекунд. Тогда, при каждом проходе контроллер смотрит текущее время (функция millis()) и, сверяя время с заданным программистом планом, совершает те или иные действия - установить выходной пин, прочитать входной или еще что-то. Для понимания процесса следует читать код для "блинк без делей" до наступления просветления в мозгу.
В случае ленты, вызов метода show() можно считать одним действием, он требует более 1 мс, но все равно не очень много в таймлайне твоей задачи.
4. Концептуально код должен выглядеть так:
В перовой части loop() следует проверить органы управления (кнопки, энкодеры и пр.) и датчики, если они есть в схеме. Если полученные данные или команды требуют какого-то действия, то установить флаг (простая булева переменная) требования действия.
Во второй части loop() следует по очереди проверить флаги, и выполнить требуемые действия, одновременно сбросив флаг. Это делается для исключения повторного совершения действий.
в третьей части loop() следует совершить вывод данных на все подключенные индикаторы - экраны, светодиоды, внешние линии.
--------------
Это базовый вид автоматного программирования. На начальном этапе освоения МК следует писать только так. Другие способы придут со временем. При этом значительную часть задач МК можно реализовать таким образом. В соответствии с поговоркой: "Делай хорошо, плохо - само получится" - следует сразу писать правильно. Даже если появятся "лишние" на взгляд дилетанта действия.
Это базовый вид автоматного программирования. На начальном этапе освоения МК следует писать только так. Другие способы придут со временем. При этом значительную часть задач МК можно реализовать таким образом. В соответствии с поговоркой: "Делай хорошо, плохо - само получится" - следует сразу писать правильно. Даже если появятся "лишние" на взгляд дилетанта действия.
Это надо перенести в раздел для новичков - учимся писать программы правильно
Если удалить delay() или заменить его на millis(), то один хер толку не будет никакого, там циклы прописаны через for.
Переписывать полностью.
Это надо перенести в раздел для новичков - учимся писать программы правильно
Вот 2**10 раз туды!
Код успешно исправил и теперь есть синхронность 2 лент и раздельность поворотов. Единственное, что пока не разобрался так это после режима поворотников включить ДХО Так же разобраться режим аварийка
Спасибо за информацию, следим за новостями поворотникостроения )
https://youtube.com/shorts/PkZJ0dKUyHg?feature=share
Выдалось свободное время разобратся с кодом приветствия
И теперь работает как хотелось,
Исправленный код эффект приветствия ,поворотник с режимом ДХО
https://cdn.hackaday.io/files/1860527960048768/sinxron_privetstvie_2.ino