Помогите заменить все задержки с delay() на millis()

Тема в разделе "Arduino & Shields", создана пользователем Bornigan, 26 апр 2019.

Метки:
  1. Bornigan

    Bornigan Нерд

    Но управлять адресными светодиодами без контроллера нельзя, тумблер не выход.
     
  2. Bornigan

    Bornigan Нерд

    Не сумел я прикрутить Ваше предложение. Примерно понимаю почему, но не объясню, и что-то подобное я уже рассматривал.
     
  3. Bornigan

    Bornigan Нерд

    И да, мне не жалко денег, у меня есть примерно неделя на реализацию, и я понимаю, что специалисту это на пару минут. Хочу сам, прошу лишь подсказок, куда копать.
     
  4. DetSimen

    DetSimen Спамовредитель Модератор

    Хочешь сам, держи. Вдруг, поймешь чо
    https://github.com/DetSimen/Arduino_TimerList
    Я подсказать теперь только в понедельнег смогу. Дача, сам понимаешь, мальчик, чай, башой
     
    Bornigan нравится это.
  5. DetSimen

    DetSimen Спамовредитель Модератор

    А ты пока изучи "конечные автоматы"
     
  6. Bornigan

    Bornigan Нерд

    Спасибо, у меня огород еще под метровым снегом, так что самое время посидеть над твоим чтивом )
     
  7. KindMan

    KindMan Гик

    Ничего не понял… я не говорю, что поменять контроллер на тумблеры. Тумблером менять режим работы, и в зависимости от положения запускать автомат или ручной.
     
  8. AlexU

    AlexU Гуру

    Не надо прикручивать это предложение. В Вашем случае этот совет вреден.

    Что касается автомата, то нужно составить список состояний, например: "начальное состояние", "горит зелёный", "мигает зелёный -- подсостояние горит/подсостояние погашен", "мигает зелёный и горит жёлтый" и т.д. Потом определиться с переходами -- из какого состояния в какое переходим и по какому событию. События могут быть следующие -- "истекло время нахождения в состоянии", "нажата кнопка №1", "нажата кнопка №2" и т.п. Для каждого состояния пишем функцию, которая отвечает за выполнение действий в том или ином состоянии. При этом нужно соблюсти следующие рекомендации: функция должна отрабатывать как можно быстро; не должно быть ни каких delay(); т.к. функция будет вызываться часто, то она должна сама "следить" за тем, что однократные действия должны выполняться только один раз, т.е., например, если светодиод зажгли, то при повторном вызове функции опять зажигать диод не надо.
    Ну и наконец в функции 'loop()' пишем код, который будет отслеживать события (смотреть за временем, опрашивать кнопки) и переключать состояния в соответствии с событиями.
     
    カオナシ и Bornigan нравится это.
  9. Bornigan

    Bornigan Нерд

    Эх, любитель СОТ-26-х ШИМок, судя по аватару, могли бы Вы примером поделиться?
     
  10. Bornigan

    Bornigan Нерд

    Примерно в этом направлении уже и мыслю, одновременно достигая бодхисаттвы в махаяне дет симёна )
     
  11. DetSimen

    DetSimen Спамовредитель Модератор

    Тока учти, я не прграммист, я простой, чесный алкаш, месный юродивый и к 17-00 по масскве, абычна, уровень мидихлориана в моей крови позволяет мне тока спать, а не обьяснять чонибуть.
    AlexU - профессиональный программист, слушай лучше его внимательно
     
  12. parovoZZ

    parovoZZ Гуру

    тут нужон эмбеддер. А программисты пусть идут интеллы программируют - там раздолье для всяких миллисов и классов.
     
  13. !@#$

    !@#$ Нерд

    А я в 55 ... впервые. По жизни инженер-механик.
     
  14. DetSimen

    DetSimen Спамовредитель Модератор

    Ну от. Никада такова не было, и вот апяять...
     
  15. nixoid

    nixoid Нуб

  16. parovoZZ

    parovoZZ Гуру

    ты уже в лыжи или нет ещё?
     
  17. Bornigan

    Bornigan Нерд

    В общем, котэ дет симеон. Еще раз благодарствую за представленную библиотеку. Только рекомендую исправить в TTimerList.cpp слэш в строке #include <avr\interrupt.h> на обратный слэш, иначе линукс капризничает, не видит он папку avr\, ему подавай avr/
     
  18. DetSimen

    DetSimen Спамовредитель Модератор

    Ну, нальешь при случае