Выполнение цикла до наступления новых условий на входах.

Acris

✩✩✩✩✩✩✩
20 Апр 2025
12
0
@BOT_Zilla, Опять спасибо огромное. Очень удобный скетч. Уже воткнул в while условие о времени максимальном через или millis. Отрабатывает и выключается если не произошло переключение. Добавил опрос состояния входов, чтобы при включении сразу видеть режим, который включен, а не после переключения. Например выключил зажигание на пониженной. Появилась мысль о аварийном режиме, когда застряла шестерня не в новом положении и уже не в старом, комбинация сигналов от ркпп не попадает ни в одну известную. Длительное зажатие кнопки двигает моторчик 0.5 сек.
Когда заработала схема, азарт появляется, чуть не забыл домой ехать с работы :)
Продолжу завтра.
По окончанию работ отчитаюсь.
Ещё раз всех благодарю!!!
 
Изменено:

Мишутк

✩✩✩✩✩✩✩
29 Мар 2025
35
6
@BOT_Zilla, Опять спасибо огромное. Очень удобный скетч.
Это как раз наглядный пример подхода к реализации машины состояний. Когда проникнетесь идеей (как раз очень хороший пример для ознакомления вам дали), подобные алгоритмы будут реализовываться "на раз".
 
  • Лойс +1
Реакции: Acris

Acris

✩✩✩✩✩✩✩
20 Апр 2025
12
0
@Николай Ск, Спасибо большое. Неудобно как-то вышло, Ваш вариант не получилось проверить. Он почему-то не вталкивается в мою плату.компелируется, грузит и под конец 90% выдает кучу красного текста. Не разбирался, чего хочет.
Код интересный , поизучал флаги и логику исполнения. Спасибо
 

Николай Ск

✩✩✩✩✩✩✩
28 Мар 2023
6
2
@BOT_Zilla, добавлюсь к поблпгодарившим за скетч, это прекрасный наглядный пример подхода к реализации машины состояний, а также хороший пример (для меня открытие) использования enum. В примере хорошо видно что это ТИП ДАННЫХ, а не просто перечесление (в 39 сточке функция а 89 добавленая переменная). Поэтому большое СПАСИБО @BOT_Zilla , за то что запарился и написал скетч а не просто посоветовал читать литературу.

@Николай Ск, Спасибо большое. Неудобно как-то вышло,
непарься у BOT_Zilla, однозначно скетч лучше, просто я не люблю использовать циклы, и посоветовал обратить внимание на void yield().
А по поводу аварийного выхода из цыкла может добавишь в циклы опрос обратной кнопки и break;
от ркпп не попадает ни в одну известную.
BOT_Zilla предусматрел нужно добавить в switch (state) еще условие case UNKNOWN {код дествий} break;
“Длительное зажатие кнопки” Я может буду кеп очевидность, но изучи <EncButton.h> (GyverButton)там (как описано) предусмотрены дребезги, а в примере есть описание режимов нажатия кнопки
 
Изменено:
  • Лойс +1
Реакции: Acris