PWM មានពាក្យពេញថា "Pulse Width Modulation" ដែលប្រើក្នុងគោលបំណងបម្លែងពីរលកសញ្ញាឌីជីថល(digital)ទៅជាសញ្ជាអាណាឡូក(Analog) ដោយប្រើវិធីបិទបើកៗ(on-off)អោយបង្កើតបានជារលកសញ្ញាការ៉េ(square wave)។ PWM ប្រើប្រាស់ច្រើនក្នុងការបញ្ជាល្បឿនរបស់ម៉ូទ័រ កម្រិតពន្លឺ និងការគ្រប់គ្រងកម្រិតតង់ស្យុងផ្សេងៗ។
វីធីបិទបើក(on-off)នេះបង្កើតទៅជារលកសញ្ញាការ៉េដែលពេលបើក 5V និងពេលបិទ 0V ដែលធ្វើឡើងក្នុងល្បឿនលឿនប្រហែល 500Hz មាន័យថាបិទបើក500ដងក្នុងមួយវិនាទី។
នៅក្នុង Arduino ប្រើប្រាស់ Timer 8 bit ដើម្បីបញ្ចេញរលកសញ្ញា PWM ធ្វើអោយវាមានតម្លៃពី 0 - 255 ដែលមានន័យថាស្មើនឹង 0V នៅតម្លៃ 0 និង 5V ពេញនៅតម្លៃ 255 (ដូចរូបខាងលើ)។
ក្នុងការសរសេរកូដគេប្រើប្រាស់ analogWrite(pin, PWMvalue) ដើម្បីបញ្ជាជើងណាមួយអោយបញ្ចេញរលក PWM។
ឧ. analogWrite(3, 64); //ជើងទី៣ បញ្ចេញរលកPWMដូចរូបរលកទី២ខាងលើ
នៅលើ Arduino ជើង PWM ជាប្រភេទជើង digital (ប្រើ analogWrite() តែក្នុងករណីជាPWM) ដែលបានបញ្ជាក់មកជាមួយ មិនមែនគ្រប់ជើងសុទ្ធតែប្រើបាននោះទេ។ ជាក់ស្តែងនៅលើ Arduino UNO មានជើង PWM ចំនួន 6 ដែលបានបញ្ជាក់មកថាអាចប្រើបាន (3, 5, 6, 9, 10, 11) ដែលបានបញ្ជាក់ជាមួយសញ្ញ(~)។
យើងអាចធ្វើការសាកល្បងបានដោយប្រើ PWM អោយគ្រប់គ្រងពន្លឺរបស់ LED ដូចរូបខាងក្រោម។
សរសេរកូដអោយ LED ភ្លឺឡើងបន្តិចម្តងៗ ហើយរលត់វិញបន្តិចម្តងៗ និងសារឡើងវិញ៖
- void setup() {
- pinMode(11);
- }
- void loop() {
- for(int i=0; i<=255, i++){
- analogWrite(11, i);
- delay(200);
- }
- for(int i=255; i>=0, i--){
- analogWrite(11, i);
- delay(200);
- }
- }
ឯកសារយោង៖ https://www.arduino.cc/en/tutorial/PWM