Tienes un calentador, está encendido el 100% del tiempo, pero supongamos que es demasiado, genera mucho calor.
Como solución, la apagas durante 10 segundos y luego la enciendes durante 10 segundos y luego la vuelves a apagar durante 10 segundos ... ¿entonces la usarías con la mitad de la potencia máxima, verdad? En lugar de encender y apagar el calentador, podría usar un microcontrolador.
Dado que el microcontrolador es mucho más rápido que un humano, tiene una opción. Puede programar el micro para que se encienda / apague cada 10 segundos o lo podría hacer mucho más rápido, por ejemplo, 100 veces por segundo. Eso es 1000x más rápido. Ese cambio rápido es básicamente lo que hace PWM. Cambia tan rápido que obtienes un valor promedio como resultado.
Para un calentador grande (de habitación) cada 10 segundos estaría bien. No hay necesidad de cambiar más rápido. Sería diferente cuando tenga un calentador muy pequeño para algún experimento de laboratorio.
También imagina que en lugar de un calentador, quieres controlar una lámpara. Encenderlo / apagarlo cada 10 segundos volvería loco a un humano. Haz eso más de 100 veces por segundo y los humanos no pueden notarlo.
Así que tienes razón, no necesitas la función PWM, puedes lograr lo mismo haciendo un programa que controle el cambio por ti. PWM se encuentra a su disposición para controlar las luces cuando la velocidad de conmutación debe ser tal que los humanos no puedan detectarlo.