Per variare la luminosità di un Led si potrebbe variare la tensione alle estremità del Led, cosa che Arduino non è capace di poter realizzare, se non utilizzando un potenziometro, che però necessita dell'intervento manuale umano.
Il problema può essere però ovviato facendo funzionare un Pin digitale, che normalmente lavora solo con gli stati 0 ed 1, con 256 possibili stati (da 0 a 255), chiamati cicli di lavoro. Ciò è possibile facendo pulsare i valori '0' ed '1' ad una frequenza variabile ottenendo non una tensione che varia in base al rapporto tra i tempo che il pin è nello stato '1' ed il tempo in cui è nello stato '0'.
Non tutti i 14 Pin digitali di Arduino Uno hanno questa possibilità, ma solo i Pin 3, 5, 6, 9, 10, 11, riconoscibili su dal simbolo ∼ affiancato al numero e detti dotati della capacità PWM (Pulse With Modulation).
Realizzare dunque lo stesso schema elettrico del Progetto 3, ma collegando il Led non al PIN 4 ma al PIN 9, che è appunto dotato di PWM.
Questo è invece il codice da analizzare con attenzione e caricare su Arduino:
Terminato il caricamento si dovrebbe poter osservare il Led mentre varia tra lo stato di minor luminosita a quello a maggior luminosità.
L'utilizzo del PWM, oltre che per variare la luminosità del Led, occorre per modificare la velocità di rotazione di un motore elettrico.
Per esercitarsi si possono apportare le sueguenti modifiche (una per volta):
modificate il tempo di transizione (modificando il numero all'interno del delay)
incrementare la x di 2 o più con il comando x=x+2 al posto di x++ (che vuol dire x=x+1)
inserire un secondo Led e fare in modo che mentre un Led incrementa la sua luminosità, l'altro la decremeta.
Torna ai progetti di Arduino Avanzato