6 – Laboratoriya mashg’ulot
RGB-yorug’lik diodi. Impuls kengligining modulyatsiyasi
Ishdan maqsad: Arduino platformasida RGB-yorug’lik diodini ulash va ularni boshqarish uchun dastur yozish bilan tanishish.
Ushbu tajribada biz Arduino-ga analog ma'lumotlarni raqamli xulosalar chiqarishga imkon beruvchi impuls kengligi modulyatsiyasini ko'rib chiqamiz va bu ma'lumotni RGB –yorug’lik diodi bilan har xil ranglarini xosil qilish uchun qo'llaymiz.
Kerakli komponentlar:
Arduino raqamli chiqish uchun o'zboshimchalik bilan kuchlanish bera olmaydi. U +5 (HIGH) yoki 0 (LOW) da chiqariladi. Lekin kuchlanish darajasi juda ko'p nazorat qilinadi: masalan, yorug’lik diodini yorug'ligi yoki tashqi vosita elektr dvigatelini aylanish tezligini
To'liq bo'lmagan kuchlanishni simulyatsiya qilish uchun PWM (impuls kengligi modulyatsiyasi yoki PWM) ishlatiladi.PWM - raqamli signallar orqali o'zgaruvchan analog qiymatni olish operatsiyalari. Raqamli chiqish signali doimo maksimal va minimal qiymatlar orasida o'zgarib turadi. Kommutatsiya chastotasi minglab gerts. Ko'z 50 Hz dan ortiq miltillovchi miltillaganini sezmaydi, shuning uchun bizga LED yoritilmaydi, aksincha qisman kuch bilan yonadi. Maksimal qiymatning o'z vaqtida impuls kengligi deyiladi.
Har xil analog qiymatlarni olish uchun impuls kengligi o'zgartiriladi (6.1-rasmga qarang) Arduino analogWrite () funktsiyasi Arduino raqamli piniga PWM signalini chiqaradi. AnalogWrite () ni chaqirgandan so'ng, chiqish analogWrite () ga keyingi chaqiruvigacha belgilangan puls kengligi bilan doimiy kvadrat to'lqin hosil qiladi, PWM signalining chiqish chastotasi 490 Hz. Arduino Nano va UNO platalarida PWM 3, 5, 6, 9, 10 va 11 pinlarini, Mega platasida - 2-13 pinlarinida impuls kengligi modulyatsiyasi mavjud.
6.1 – rasm. Dasturning kod qismi
6.2 – rasm. Sxemani ishlashi
6.3 – rasm. Dasturning ishlash jarayoni
6.4 – rasm. Dasturning ishlash jarayoni
Dastur kodi:
import muvium.compatibility.arduino.*;
public class Class0 extends Arduino{
// Azizbek Yusupov KI 11-19
int RED = 11; // RGB- qizil rangi uchun chiqish
int GREEN = 10; // RGB- yashil rangi uchun chiqish
int BLUE = 9; // RGB- kuk rangi uchun chiqish
int red; // R-rangli komponentni saqlash uchun
int green; // G -rangli komponentni saqlash uchun
int blue; // B-rangli komponentni saqlash uchun
public void setup()
{;}
public void loop()
{
// qizildan sariqqa
red = 255;green = 0;blue = 0;
for(green=0;green <= 255;green++)
setRGB(red, green, blue);
// sariqdan yashilga
for(red=255;red >= 0;red--)
setRGB(red, green, blue);
// yashildan ko’kga
for(blue=0;blue <= 255;blue++)
setRGB(red, green, blue);
// ko’kdan moviyga
for(green=255;green >= 0;green--)
setRGB(red, green, blue);
// moviydan binafshaga
for(red=0;red <= 255;red++)
setRGB(red, green, blue);
delay(2000);
}
// RGB-yorug’lik diodini rangini sozlash funrsiyasi
public void setRGB(int r, int g, int b)
{
analogWrite(RED, r);
analogWrite(GREEN, g);
analogWrite(BLUE, b);
delay(10);
}
}
Do'stlaringiz bilan baham: |