PWM vine de la Pulse Width Modulation și reprezintă semnale dreptunghiulare caracterizate prin frecvență (frequency) și factor de umplere (duty cycle). Folosind semnale PWM putem varia tensiunea medie primită de către un dispozitiv periferic, lăsând tensiunea maximă la valoarea de care acest dispozitiv are nevoie.
Un exemplu banal și totuși cuprinzător de folosire PWM o reprezintă controlul luminozității unul LED. Tensiunea maximă primită de LED rămâne aceeași fată de folosirea unui pin simplu de GPIO, dar variind frecvența și factorul de umplere, energia trimisă înspre LED este mai mică, ceea ce face ledul sa fie mai puțin luminos.
Deși se pot genera semnale dreptunghiulare și cu perifericul de GPIO, perifericul de PWM permite generarea automată a semnalelor, fără consumarea unui timp efectiv de procesare (doar configurezi perifericul și îl pornești)
Raspberry Pi are un singur pin de tip PWM (pinul 12/marcat de asemenea cu GPIO18). Perifericul în sine , este puțin mai greu de folosit decât pe arduino, trebuind să ții cont de mai mulți factori:
ATENȚIE - deși imaginea alăturată sugerează folosirea analogWrite, această funcție nu este valabilă pentru Raspberry Pi. ci doar pentru arduino.
Pentru scopul acestui laborator ne vom limita la controlul luminozității unui LED. Pentru a accesa perifericul de PWM vom folosi tot biblioteca bcm2835 ca și în laboratorul precedent.