Дополнительные возможности портов ввода-вывода (ШИМ)

Работа с цифровыми портами Arduino рассматривается в Hello World на Arduino (Первая программа). Однако, помимо команд pinMode и digitalWrite, для работы с цифровыми портами имеются и другие команды. Например, analogWrite(port, value). Ниже рассматривается эта команда на примере его использования при управлении светодиодом. Данная команда поддерживается только портами со значком ~. Для Arduino UNO – это 3, 5, 6, 9, 10 и 11 порты.

Если светодиод подключен к порту с номером 9 через сопротивление, то можно управлять с помощью команды analogWrite(port, value) яркостью светодиода. Данная команда принимает два параметра: port – номер цифрового порта и value – целое число от 0 до 255, с помощью которого можно задать яркость свечения светодиода. 0 – выключение светодиода, а 255 – наибольшая яркость свечения светодиода. Так как цифровой порт Arduino может выдавать только 0 или 5 Вольт, изменения яркости светодиода достигается быстрым включением и выключением светодиода. При этом отношение времени свечения светодиода ко времени продолжительности его в выключенном состоянии определяет видимую яркость светодиода. Данный метод управления выводом называется широтно-импульсной модуляцией (ШИМ).

Ниже представлена анимация, показывающая график ШИМ, при различных значениях параметров команды analogWrte(9, value).

Нужно запомнить, что при изменении значения value, частота импульсов не меняется, а меняется лишь их ширина. По умолчанию, эта частота равна около 488 Гц.

Помимо яркости свечения светодиода, с помощью ШИМ аналогичным образом, можно управлять скоростью вращения двигателя, нагревом какого-то нагревательного устройства и т.п.

Более подробно о портах Arduino для особо любопытных