Видео недоступно для вставки
Программный ШИМ можно поднять на любых цифровых пинах Arduino.
Это полезно, когда аппаратных каналов ШИМ не хватает.
Видео завершает цикл уроков по ШИМ-сигналу.
Программный ШИМ создает нагрузку на процессор.
Высокие частоты ШИМ требуют прерываний таймера.
Программный ШИМ подходит для ситуативных задач, но не для крупных проектов.
Программный ШИМ позволяет плавно управлять яркостью светодиодов.
Пример использования: симуляция гирлянды из светодиодов.
Процессинг и Arduino позволяют создавать сложные эффекты.
Создание окна программы для размещения светодиодов.
Использование массива яркостей для управления цветом.
Эффекты: конфетти, бегущий светодиод, шум Перлина.
ШИМ работает на основе счетчика таймера.
Пример: восьмибитный ШИМ с заполнением 20%.
Изменение значения заполнения изменяет ширину импульса.
Настройка пина как выхода и вызов функции "тик".
Использование спецификаторов static и volatile для сохранения значений.
Сравнение значения счетчика с нулем и значением заполнения.
Использование прерывания аппаратного таймера.
Подключение библиотеки Wire и использование второго таймера.
Настройка частоты прерывания и вызов функции "тик" в обработчике прерывания.
Заполнение ШИМ берется с потенциометра на пине А0, предварительно поделенное на четыре.
ШИМ восьмибитный, а АЦП десятибитный.
Светодиод может плавно менять яркость свечения.
Настройка двух дополнительных каналов ШИМ.
При нулевом заполнении светодиод продолжает светиться.
Решение: проверка заполнения перед установкой высокого уровня.
Снижение разрешения ШИМ улучшает чистоту сигнала.
Восьмибитный ШИМ часто не нужен, достаточно 4-6 бит.
Переделка алгоритма для работы с любой разрядностью до 8 бит.
Использование функции map для ограничения значений заполнения.
Использование библиотеки для ускорения выполнения функции digitalWrite.
Повышение частоты таймера до 250 кГц, но не более 100 кГц для загруженного кода.
Двойная буферизация для стабильности сигнала.
Аппаратное решение всегда лучше программного.
Использование массивов для хранения параметров ШИМ.
Рекомендация реализовать гирлянду самостоятельно.
Ссылки на примеры и базу знаний по Arduino.