Pin PWM.
Diamo un'occhiata al pinout delle schede Arduino Nano e Wemos Mini, i pin su cui è possibile eseguire un segnale PWM utilizzando gli strumenti Arduino standard sono contrassegnati come PWM:
- Arduino Nano ha 6 di questi pin. Il fatto è che il segnale PWM è generato da blocchi hardware separati (timer), quindi il loro numero è limitato. Allo stesso tempo, la generazione di PWM a una frequenza maggiore non carica il microcontrollore, il segnale viene generato in modo indipendente.
- Su Wemos Mini, puoi eseguire PWM su qualsiasi pin tranne GPIO16. Qui la generazione PWM è implementata nel software, quindi funziona su qualsiasi pin, ma l'utilizzo di più pin contemporaneamente a una frequenza maggiore rallenterà il microcontrollore.
Attiva PWM.
Per generare PWM, c'è la funzione AnalogWrite (pin, value):
- pin - pin PWM (vedi pinout).
- value - riempimento del segnale PWM. Per impostazione predefinita, ha una profondità di bit di 8 bit, ovvero assume il valore 0.. 255, esp8266 aveva 10 bit, ovvero 0.. 1023 nelle versioni del CPU precedenti alla 3.0.
Proviamo a modificare la luminosità del LED collegato tramite una resistenza al pin D3 (Arduino Nano). Potenziometro collegato al pin A0:
void setup()
{
}
void loop()
{
//PWM per 3 pin, 1023/4 = 255 - spostato l'intervallo
analogWrite(3, analogRead(0) / 4);
}
Nell'esempio considerato, la luminosità del LED cambia a seconda della posizione di rotazione del potenziometro.
Caratteristiche di Arduino Nano.
Parametri del segnale PWM standard:
Timer Pin Frequenza Profondità di bit
Timer 0 D5 и D6 976 Гц 8 бит (0...255)
Timer 1 D9 и D10 488 Гц 8 бит (0...255) Timer 2 D3 и D11 488 Гц 8 бит (0...255)
Caratteristiche Wemos Mini.
La frequenza PWM predefinita è 1 kHz: la frequenza può essere regolata in analogWriteFreq(100...40000 Hz).
La profondità di bit PWM predefinita è 8 bit (0..255) sulle versioni del CPU
3.x. Nelle versioni precedenti - 10 bit (0.. 1023): la profondità di bit può essere configurata in analogWriteResolution(4...16 bit).