Что такое ШИМ (PWM) простыми словами?
В Arduino есть функция analogWrite и слово ШИМ (PWM). Не понимаю, как цифровой пин, у которого только 0 и 1, может плавно регулировать яркость. Объясните, что такое ШИМ простыми словами.
2 ответа
ШИМ (широтно-импульсная модуляция, PWM) — это способ «как будто» выдать промежуточное напряжение, имея только два состояния: включено (HIGH) и выключено (LOW).
Идея: пин очень быстро мигает — включается и выключается сотни раз в секунду. Меняется доля времени, когда он включён (она называется «скважность», по-английски duty cycle).
- Включён 50% времени → светодиод горит вполовину яркости.
- Включён 20% времени → тускло.
- Включён 90% времени → почти полная яркость.
Глаз не успевает заметить мигание (оно слишком быстрое) и видит усреднённую яркость. Мотор по той же причине крутится медленнее или быстрее — он усредняет импульсы по инерции.
В Arduino это делается командой analogWrite(пин, значение), где значение от 0 до 255:
analogWrite(pin, 0)— выключено.analogWrite(pin, 127)— примерно половина.analogWrite(pin, 255)— полная мощность.
Важно: ШИМ работает не на всех пинах. На Arduino Uno это пины с пометкой ~ (3, 5, 6, 9, 10, 11).
Где применяют: регулировка яркости светодиодов, скорости моторов, громкости, нагрева. Это не настоящее «среднее напряжение», а быстрые импульсы, но для большинства нагрузок эффект тот же.
Аналогия, которая помогает: представь, что ты быстро-быстро щёлкаешь выключателем лампы. Если держишь включённой дольше, чем выключенной, — в среднем светлее. Вот ШИМ и есть такое «щёлканье», только тысячи раз в секунду.
И помни: яркость по ШИМ для глаза не совсем линейна. 127 из 255 кажется ярче, чем «ровно половина». Это нормально, так устроено зрение.