Уроки Ардуино. Как написать скетч: многозадачность на millis() и переключение режимов

preview_player
Показать описание
Сегодня займёмся фундаментальным вопросом: как написать серьёзную многозадачную программу?

Содержание:
00:00 - Начало
00:43 - Текстовая версия
01:06 - Проблемы с delay
01:42 - Особенности программ для МК
02:19 - FreeRTOS
03:32 - Суперцикл
04:57 - Костыль yield()
06:22 - Программный таймер
07:50 - Мигаем светодиодом
08:38 - Мигаем с разным периодом
09:05 - Программный ШИМ
09:32 - Однократное выполнение
10:32 - Выполнить действие несколько раз
10:59 - Переключение состояния процесса
11:52 - Мигаем плавно
12:53 - Обработка кнопки
14:22 - Меняем яркость кнопкой
15:06 - Переключение режимов кнопкой
16:30 - Переключение режимов по таймеру
17:57 - Библиотека таймера
20:13 - Библиотека диспетчера задач
22:28 - Кодим пример

Теги: #arduino #уроки #ардуино #alexgyver
●●●●●●●●●●●●●●●●●●●●
Рекомендации по теме
Комментарии
Автор

Десятки каналов учат мигать светодиодом и только Алекс Гайвер учит от А до Я. Легендарный чел!

Михаил-щцм
Автор

Gyver OS нуждается в обзоре для аудитории

RK-wfrn
Автор

"Жизнь Ардунщика ДО и После Delay"
Алекс спасибо за подробный разбор, очень полезно и познавательно!

ALeXTula
Автор

Это шедевр!! Видос про ОС обязательно нужен

КонстантинГомзин
Автор

Палец в верх за отдельный урок и разбор работы гайвер ОС !!!

ВладимирУткин-хв
Автор

Спасибо за Ваш труд. Уроки- высший пилотаж.

homester
Автор

Мощно задвинул, внушает! Респект за доходчивость и краткость - меньше чем за академический час выдал материала на целый семестр:)

alexeg
Автор

Многозадачность - это как раз то, что мне нужно. В последние дни пытался нагуглить что-то подобное, и безуспешно. Спасибо, буду пробовать!

yuripanov
Автор

Ролик мультиплексирован инфой, на 5+, все по делу и ничего лишнего, как всегда на высоте! 👍💪🏆

МайкСтоун-гд
Автор

Урок был полезен и интересен даже далеко не новичкам 😋👍

flashpaperdotru
Автор

Спасибо. Как инженер преподаватель - Спасибо! даже с низким поклоном. У вас дар оратора, разъясняете кратко, понятно и не монотонно.

Garik_Vorota
Автор

Отличное видео!
Обычно рассказывают только как пользоваться той или иной функцией, а как сделать более-менее сложную программу - не говорят.
Здесь как раз эта тема и раскрывается.
Огромное спасибо!

dmitriyteslenko
Автор

Это божественно, я думаю ты просто армию программеров создаёшь своими роликами.
Это мега полезный контент ☝️👍

МаксимСимаков-ъм
Автор

Спасибо, тебе, Александр!
Наконец-то получилось создать мелодию для проигрывания в фоновом режиме, используя millis() и tone().
Оказывается можно так просто озвучить любое событие в программе, не зависая не всяких delay().
Нужно создать пару массивов - для нот и длительностей (можно в PROGMEM области), да троечку глобальных переменных: таймер, счётчик и флаг запуска ( на static глючит).
Всё!
Пишем функцию и засовываем её имя в луп!
Привожу пример:
void music () {
if (flag_music) {
if (count < LENGTH && millis() - tmr > duration [count]) {
tone (PIN_TONE, note [count++]);
tmr = millis();
}
if (count_music >= LENGTH) {
noTone (PIN_TONE);
flag_music =0;
count =0;
}
}
}
Осталось в любом месте лупа поднять флаг (по условию, ессестно)!!!
Может кому пригодится для замены неприятных писков буззера!

Jerej
Автор

Круто, Спасибо тебе, у тебя довольно обширные и понятные примеры - проекты с помощью которых я сам так неплохо подразобрался.

АндрейТитов-що
Автор

yield() - прям костыль из костылей. Я бы для опроса кнопок использовал аппаратное прерывание pcint.
Ох уж и вундервафля, увлекательный видос)))

Ais_Hunt
Автор

Ура, я наконец-то замигал двумя светодиодами! Ваще класс!

sledleo
Автор

Титанический труд, как для одного человека за короткое время. Спасибо!

krukhlis
Автор

Один из важнейших видосов на канале, очень часто к нему обращаюсь

od
Автор

Как всегда хорошо, быстро, без воды. Спасибо!

Vadim