Вам понадобится
  • - Arduino;
  • - светодиод;
  • - резистор сопротивлением 200 Ом;
  • - компьютер.
Инструкция
1
Цифровые выводы Arduino могут выдавать только два значения: логический 0 (LOW, низкий уровень) и логическую 1 (HIGH, высокий). На то они и цифровые. Но есть у Ардуино "особые" выводы, которые обозначаются PWM. Их иногда обозначают волнистой чертой "~" или обводят кружочками или ещё как-то выделяют среди прочих. PWM расшифровывается как "Pulse-width modulation" или широтно-импульсная модуляция, ШИМ.
Широтно-импульсно модулированный сигнал - это импульсный сигнал постоянной частоты, но переменной скважности (соотношение длительности импульса и периода его следования). Из-за того, что большинство физических процессов в природе имеют некоторую инерцию, то резкие перепады напряжения от 1 к 0 будут сглаживаться, принимая некоторое среднее значение. С помощью задания скважности можно менять среднее напряжение на выходе ШИМ.
Если скважность равняется 100%, то всё время на цифровом выходе Arduino будет напряжение логическая "1" или 5 вольт. Если задать скважность 50%, то половину времени на выходе будет логическая "1", а половину - логический "0", и среднее напряжение будет равняться 2,5 вольтам. Ну и так далее.
В программе скважность задаётся не в процентах, а числом от 0 до 255. Например, команда "analogWrite(10, 64)" скажет микроконтроллеру подать на цифровой PWM выход №10 сигнал со скважностью 25%.
Выводы Arduino с функцией широтно-импульсной модуляции работают на частоте около 500 Гц. Значит, период следования импульсов - около 2 миллисекунд, что и отмеряют зелёные вертикальные штрихи на рисунке.
Получается, что мы можем сымитировать аналоговый сигнал на цифровом выходе! Интересно, правда?!
Как же мы это можем использовать? Применений масса! Например, это управление яркостью светодиода, управление скоростью вращения двигателя, управление током транзистора, извлечение звука из пьезоизлучателя...
Понятие широтно-импульсной модуляции
2
Давайте рассмотрим самый базовый пример - управление яркостью светодиода с помощью ШИМ. Соберём классическую схему.
Схема для демонстрации ШИМ в Arduino
3
Откроем из примеров скетч "Fade": Файл -> Образцы -> 01.Basics -> Fade.
Открываем образец для демонстрации ШИМ в Arduino
4
Немного изменим его и загрузим в память Arduino.
Скетч для демонстрации ШИМ
5
Включаем питание. Светодиод плавно наращивает яркость, а затем плавно уменьшает. Мы сымитировали аналоговый сигнал на цифровом выходе с помощью широтно-импульсной модуляции.
ШИМ + Arduino в действии