Найти в Дзене
Arduino и прочее

GyverOS Основы (Нет гарантий что понятно будет всё, но попробовать стоит:))

В данном примере показана схема с тремя мигающими светодиодами. Они мигают каждый в своём ритме. Первый 10 раз в секунду, второй 3 раза в секунду, и последний 1 раз в секунду. Сразу после #include идёт объявление OS. GyverOS<3>, где 3 это число процессов. В сетапе мы определяем пины и настройки процессов. Настройка процесса: OS.attach() принимает три аргумента. Первый - это номер процесса, второй - функция, которую будет вызывать этот процесс, и последнее число это раз в сколько миллисекунд будет срабатывать процесс, и соответственно вызываться функция, которая к нему привязана. В основном цикле loop с помощью OS.tick() вызывается OS для выполнения нужных действий. Именно в OS.tick() выполняются задачи. При Этом там стоит delay(OS.getleft()) эта задержка останавливает программу на время, оставшееся до ближайшей задачи то есть если до например первой задачи осталось 100 миллисекунд, то задержка будет именно столько. delay можно не ставить, это не обязательно. Наш любимый ютубер добавил
Пример кода на ардуино с тремя процессами
Пример кода на ардуино с тремя процессами

В данном примере показана схема с тремя мигающими светодиодами. Они мигают каждый в своём ритме. Первый 10 раз в секунду, второй 3 раза в секунду, и последний 1 раз в секунду.

Сразу после #include идёт объявление OS. GyverOS<3>, где 3 это число процессов. В сетапе мы определяем пины и настройки процессов. Настройка процесса: OS.attach() принимает три аргумента. Первый - это номер процесса, второй - функция, которую будет вызывать этот процесс, и последнее число это раз в сколько миллисекунд будет срабатывать процесс, и соответственно вызываться функция, которая к нему привязана.

В основном цикле loop с помощью OS.tick() вызывается OS для выполнения нужных действий. Именно в OS.tick() выполняются задачи. При Этом там стоит delay(OS.getleft()) эта задержка останавливает программу на время, оставшееся до ближайшей задачи то есть если до например первой задачи осталось 100 миллисекунд, то задержка будет именно столько. delay можно не ставить, это не обязательно.

Наш любимый ютубер добавил туда ещё несколько штук.

  • Можно выключить задачу с помощью OS.detach(0), где 0 - это порядковый номер.
  • OS.setPeriod(0, 200) Эта команда позволит нам сменить период с которым будет выполняться задача. В данном случае задача 0 примет новый период 200 миллисекунд.
  • Как же нам остановить выполнение задачи? Всё просто: OS.stop(0) и проблема остановки задачи под номером 0 решена.
  • OS.start(0) Так надо сделать, чтобы запустить задачу, остановленную ранее снова. 0 - Это сразу понятно номер задачи.
  • Если мы не хотим ждать когда задача 0 снова будет выполняться, мы можем просто её вызвать с помощью команды OS.exec(0).

А Вот функции, которые идут после void main() Это как раз те, функции, которые будут выполнять задачи, заданные ранее.

Я думаю что этот диспетчер задач достаточно прост для понимания. Если не с моих слов тут, то его можно понять со слов его создателя прямо на ютубе.

Кто прочитал, тому спасибо за прочтение, а я удаляюсь.