Знакомство с работой АЦП и ШИМ.
Потенциометр - это переменный резистор с регулируемым сопротивлением. При вращении ручки потенциометра его сопротивление меняется от 0 до некоторого максимального значения.
АЦП (аналогово-цифровой преобразователь) - микросхема, преобразующая аналоговое значение напряжения в цифровое.
На платах Arduino присутствует несколько встроенных АЦП, доступных программно с помощью функции analogRead(), принимающей номер порта АЦП (A0 - A5). Так как в Arduino используются 8-разрядные АЦП, на выходе получаются значения от 0 до 1024 для напряжения на входе, соответственно, от 0 до 5 В.
ШИМ (PWM, широтно-импульсная модуляция) - процесс генерации прямоугольных импульсов с меняющейся шириной импульса.
T - период ШИМ (в Arduino используется 490 Гц, иногда бывает 980 Гц)
t - длительность импульса, изменяется в пределах от 0 до T
Отношение t/T называется скважностью импульса. На микроконтроллерах Arduino ШИМ доступна на некоторых цифровых пинах, при этом запускается она при помощи функции analogWrite(). Функции передается параметр, принимающий значения от 0 до 255, которых регулирует длительность импульса от 0 до T, и соответственно скважность импульса от 0 до 1.
Создаем новый скетч и сохраняем его с названием LedBrightness. Проверяем, что выбрана правильная плата и порт.
Собираем установку, подключаем светодиод к порту платы с поддержкой ШИМ (обозначены символом "~"), например к 11-у порту. Потенциометр подключает крайними контактами к Vcc и Gnd на плате, средним контактом к аналоговому входу, например, к A0.
Для использования ШИМ и АЦП на Arduino не нужна дополнительная настройка пинов, единственное, что нужно - в функции loop считывать значение с аналогового входа и устанавливать соответствующую скважность импульса.
Загружаем скетч и проверяем, что при вращении ручки потенциометра яркость светодиода изменяется от 0 до некоторого максимального значения.
Скважность импульса