Для вывода данных с Arduino традиционно применяется двоичная система с применением логических значений 0 и 1. С этой задачей превосходно справляется управление портами вывода, имеющееся у большинства микроконтроллеров от производителей микросхем. Но не всегда схемотехнику необходимо значение нуля или единицы.
Возможно ли получить промежуточное значение с помощью Arduino?
С помощью широтно-импульсной модуляции, реализованной на некоторых портах микросхемы, это возможно. Так, Arduino Uno поддерживает ШИМ на следующих своих портах: 3,5,6, 9, 10 и 11.
С помощью PWM (ШИМ) позволяет создать сигнал, который имеет определенное напряжение и продолжительность. В зависимости от временного промежутка между импульсами на выходе выдается нужное значение, так называемый параметр скважности импульса. Если верить Википедии, скважность – это один из классификационных признаков импульсных систем, определяющий отношение его периода следования (повторения) к длительности импульса.
Микроконтроллер Arduino поддерживает восьмибитную ШИМ, что позволяет выбрать переменную в широком диапазоне значений от 0 до 256.
В качестве примера использования ШИМ можно использовать плавное включение и выключение светодиода, подключенному к 3 пину. При этом постепенно подается напряжение от 0 до 5В. Как видно на картинке ниже, при разном значении переменной мы получаем разное напряжение для светодиода: 5V, 2.5V, 1,25V, 3.75V.
Так же с помощью пьезоизлучателя и ШИМ можно воспроизводить звуки неплохого качества.