Provo a metterti un po' in carreggiata.
Un sistema digitale (microcontrollore, computer, ecc) ragiona in binario (0-1).
Solitamente a questi stati logici corrispondono internamente le tensioni 0V e 5V
Quindi per questi apparati è facile ordinare di accendere e spegnere una lampadina

(basta pilotarla con uno dei piedini di uscita)
MA...
A questo livello è praticamente impossibile pretendere che questi apparati producano una tensione di 3V per ad es acendere la lampadina a poco piu' che metà luminosità (quella massima l'avresti a 5V)
Come fare?
Dato che 3V rispetto a 5V è il 60% potresti pensare di:
* tenere accesa la lampadina al massimo (5V) per 6ms
* tenere spenta la lampadina (0V) per 4ms
* dopo un ciclo (6+4=10ms) ricominci da capo
l'occhio umano non percepira' il veloce sfarfallio dovuto ai continui accendi-spegni, ma percepirà il
valore medio ...che appunto è un 60% della luminostà massima
Ecco che quindi un sistama digitale, con questa tecnica (PWM), è in grado di mandare in uscita 0V, 5V, e (adesso) qualsiasi valore intermedio.
Ora... se invece di avere un'uscita costante a 3V, volessimo un andamento un po' piu' complesso... tanto per fare dei giochi di luce tipici degli alberi di natale.... dovresti nel tempo variare le tempistiche che avevo calcolato sopra
Tutto ruota sul fatto che in questo caso l'occhio percepira' sempre il valore medio "istantaneo"... quindi mi è facile ingannarlo e fargli percepire luminostà variabili su lunghi periodi
Chiaramente questa tecnica non serve solo ad accendere lampadine ed ingannare l'occhio umano..
Dai un'occhiata qui per maggiori dettagli
http://it.wikipedia.org/wiki/Pulse-width_modulation