Arduino raqamli chiqishlariga istalgan kuchlanishni bera olmaydi, yoki +5 V (HIGH), yoki 0 V (LOW) bera oladi. Ammo kuchlanish qiymati bilan ko’p narsa boshqariladi: masalan, yorug’lik diodining yorqinligi yoki motorning aylanish tezligi. To’liq bo’lmagan kuchlanishni hosil qilish uchun IKM (impuls kengligining modulyatsiyasi yoki PWM) ishlatiladi.
IKM – bu o’zgaruvchi analog qiymatni raqamli signallar orqali olinish operatsiyasi. Chiqishda raqamli signal doimiy maksimal va minimal qiymatlar o’rtasida bir holatdan ikkinchisiga o’zgarib turadi. Holatlarning o’zgarishi bir necha ming gers chastotaga egadir. Ko’z 50 Gs dan yuqori o’chib yonib turishni sezmaydi, shuning uchun bizga yoriqlik diodi o’chib yonmayotgandek tuyuladi, balkim to’liq yoriqlik bilan yonmayotgandek bo’ladi. Turli analog kattaliklarni olish uchun impulsning kengligi o’zgartiriladi.
AnalogWrite() vazifasi Arduino ning raqamli chiqishiga IKM-signalini hosil qilib berishdan iborat.
analogWrite() chaqirilgandan so’ng Arduino ning raqamli chiqishida berilgan kenglikdagi doimiy to’g’ri burchakli impuls to’lqini hosil bo’ladi toki analogWrite() ni keyingi chaqirilgunga qadar, IKM – signalini beriladigan chastotasi 490 Gs ga teng.
Arduino Nano va UNO platalarida IKM ni quvvatlovchi oyoqchalari 3, 5, 6, 9, 10 va 11, Mega platada esa – 2-13 oyoqchalar quvvatlaydi. Ushbu chiqishlar tilda ~ belgisi bilan belgilangan.
Ushbu mashg`ulotda biz RGB-yorug’lik diodidan foydalanamiz. RGB-(Qizil, Yashil, Havo rang) so’zlarnin bosh harfidan olingan qisqarma, bu ranglar yordamida ularni surish orqali xohishiy ranglarni olish mumkin.
RGB-yorug’lik diodi oddiy diodlardan farqi u uchta uncha katta bo’lmagan kristaldan iborat, ular harqanday rangni sintezlashi mumkin. RGB-yorug’lik diodining 4 ta oyoqchasi bo’ladi (8-chizmaga qaralsin).
RGB-yorug’lik diodini Arduino platasiga ulanadi va uni kamalak ranglarida yonishiga erishiladi. 9-chizmada RGB-yorug’lik diodini Arduino platasiga ulanishi ko’rsatilgan.