Lezione 2.1: Regolare la Luminosità del LED
L’hardware richiesto per questa lezione, la configurazione dell’IDE Arduino e il cablaggio tra il modulo LED e la scheda di controllo sono gli stessi della Lezione 1.1.
(1).Descrizione:
Nella lezione precedente, abbiamo controllato l’accensione e lo spegnimento del LED e lo abbiamo fatto lampeggiare.
In questo progetto, controlleremo la luminosità del LED tramite PWM per simulare un effetto di respiro. Analogamente, è possibile modificare la lunghezza del passo e il tempo di ritardo nel codice per mostrare diversi effetti di respiro.
PWM è un metodo per controllare l’uscita analogica tramite mezzi digitali. Il controllo digitale viene utilizzato per generare onde quadre con diversi cicli di lavoro (un segnale che passa costantemente tra livelli alti e bassi) per controllare l’uscita analogica. In generale, la tensione di ingresso della porta è 0V e 5V. Cosa succede se è richiesta una tensione di 3V? O se si vuole commutare tra 1V, 3V e 3,5V? Non possiamo cambiare continuamente la resistenza. In questa situazione, è necessario controllare tramite PWM.
Per l’uscita di tensione della porta digitale di Arduino, ci sono solo LOW e HIGH, che corrispondono a 0V e 5V. Puoi definire LOW come 0 e HIGH come 1, e far uscire ad Arduino cinquecento segnali 0 o 1 in un secondo.
Se escono cinquecento 1, sono 5V; se sono tutti 0, sono 0V. Se si esce in modo alternato 010101010101, allora la porta di uscita è a 2,5V, che è simile a mostrare un film. Il film che guardiamo non è completamente continuo. In realtà mostra 25 immagini al secondo. In questo caso, l’uomo non riesce a percepirlo, né il PWM. Se si vuole una tensione diversa, è necessario controllare il rapporto tra 0 e 1. Più segnali 0 e 1 vengono emessi per unità di tempo, più preciso è il controllo.


(2).Spiegazione del Codice:
Quando dobbiamo ripetere alcune istruzioni, possiamo usare l’istruzione FOR.
Il formato dell’istruzione FOR è mostrato di seguito:

Sequenza ciclica FOR:
Giro 1:1 → 2 → 3 → 4
Giro 2:2 → 3 → 4
…
Fino a quando il numero 2 non è più valido, il ciclo “for” termina.
Dopo aver compreso questo ordine, torniamo al codice:
for (int value = 0; value < 255; value=value+1){
…}
for (int value = 255; value >0; value=value-1){
…}
Le due istruzioni “for” fanno aumentare value da 0 a 255, poi diminuirlo da 255 a 0, poi aumentare a 255, … in un ciclo infinito.
C’è una nuova funzione nel seguito —– analogWrite()
Sappiamo che la porta digitale ha solo due stati, 0 e 1. Quindi come inviare un valore analogico a una porta digitale? Qui serve questa funzione. Osserviamo la scheda Arduino e troviamo 6 pin contrassegnati con “~” che possono emettere segnali PWM.
Il formato della funzione è il seguente:
analogWrite(pin,value)
analogWrite() viene usata per scrivere un valore analogico da 0 a 255 per la porta PWM, quindi il valore è nell’intervallo 0~255. Attenzione a scrivere solo sui pin digitali con funzione PWM, come i pin 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 44, 45, 46.
PWM è una tecnologia per ottenere quantità analogiche tramite metodo digitale. Il controllo digitale forma un’onda quadra, e il segnale a onda quadra ha solo due stati, acceso e spento (cioè livelli alto o basso). Controllando il rapporto tra la durata dell’accensione e dello spegnimento, si può simulare una tensione variabile da 0 a 5V. Il tempo di accensione (accademicamente chiamato livello alto) è chiamato larghezza dell’impulso, quindi PWM è anche chiamato modulazione della larghezza dell’impulso.
Attraverso le seguenti cinque onde quadre, approfondiamo il PWM.

Nella figura sopra, la linea verde rappresenta un periodo, e il valore di analogWrite() corrisponde a una percentuale chiamata anche Duty Cycle. Il duty cycle indica che la durata del livello alto è divisa per la durata del livello basso in un ciclo. Dall’alto verso il basso, il duty cycle della prima onda quadra è 0% e il suo valore corrispondente è 0. La luminosità del LED è minima, cioè spento. Più dura il livello alto, più il LED è luminoso. Pertanto, l’ultimo duty cycle è 100%, che corrisponde a 255, il LED è al massimo della luminosità. Il 25% significa più scuro.
Il PWM è usato principalmente per regolare la luminosità del LED o la velocità di rotazione del motore.
Ha un ruolo fondamentale nel controllo delle auto robotiche intelligenti.