Laboratoriya ishi № 9.
Potansiyometrni ishga tushirish orqali yoritilgan diodlar sonini o‘zgartirish.
Laboratoriya ishining maqsadi: yorug‘lik diodlari bilan potentsiometrdan
foydalanishni o‘rganish.
Laboratoriyaning nazariy qismi.
Bir LEDning yonib -o‘chishi unchalik qiziq emas. Ushbu qo‘llanmada biz bir
nechta LEDlar bilan ishlashni ko‘rib chiqamiz. Agar siz o‘z tasavvuringizni
ko‘rsatsangiz, qiziqarli effektlar yaratishingiz mumkin.
LEDlar bilan ishlash printsipi o‘zgarmaydi, biz raqamlarni pin bilan
o‘rnatamiz va kerakli signallarni beramiz. Ammo muammo shundaki, siz har bir
LED uchun bir xil turdagi kod yozishingiz kerak. Va ko‘p sonli LEDlar mavjud
bo‘lganda va siz mantiqni o‘zgartirishga qaror qilsangiz, har bir LED uchun kodni
qidirishingiz va o‘zgartirishingiz kerak bo‘ladi. Bu juda qulay emas. Shuning uchun,
muntazam ishlarni engillashtirish uchun ular looplar, massivlar, to‘plamlardan
foydalanadilar.
Keling, LED shkalasi va potansiyometr yordamida misolni ko‘rib chiqaylik.
Agar yorug‘lik shkalasi bo‘lmasa, uni 10 ta an'anaviy LED bilan almashtiring.
Potentsiometr yordamida kuchlanishni qo‘lda o‘zgartirish orqali biz
ma'lumotni yorug‘lik shkalasida ko‘rsatamiz.
Keling, kontaktlarning zanglashiga potentsiometrni qo‘shamiz. O‘rta pin A0
analog piniga, qolgan ikkitasi 5 V va GND ga olib keladi.
Modelni yig‘ish uchun bizga kerak:
• Arduino platasi
• Panel (doska)
• 14 ta "dada-dada" simlari
• LEDlar
• rezistorlar.
• potansiometr
Barcha qiymatlar 0 dan 10 gacha teng bo‘ladi (har bir birlik uchun taxminan
102 ta potansiyometr birligi). Tasavvur qilaylik, bizning potentsiometr 110 birlik
qiymatini ko‘rsatadi, bu funksiya qo‘llanilgandan keyin 1 qiymatiga to‘g‘ri keladi.
Qatordagi birinchi LED 0, ya'ni. kamroq 1. Birinchi LED yonadi, qolganlari esa
o‘chadi (agar ular oldin yoqilgan bo‘lsa). Potensiometr tugmachasini burab, biz
qiymatlarni oshiramiz va shunga mos ravishda LEDlar sonini ko‘paytiramiz.
Potensiometr tugmachasini teskari tomonga burib, biz LEDlar sonini kamaytiramiz.
Natijalarni kuzatish uchun kodingizga Serial Watch qo‘shing.
int potPin = A0;
int led1Pin = 13;
int led2Pin = 12;
int led3Pin = 8;
int led4Pin = 7;
int led5Pin = 2;
void setup()
{
pinMode(potPin, INPUT);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
pinMode(led4Pin, OUTPUT);
pinMode(led5Pin, OUTPUT);
Serial.begin(9600);
}
void loop()
{
int potMeasure = analogRead(A0);
Serial.println(potMeasure);
if(potMeasure < 128)
{
digitalWrite(led1Pin, HIGH);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
digitalWrite(led4Pin, LOW);
digitalWrite(led5Pin, LOW);
}
else if(potMeasure < 256)
{
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, HIGH);
digitalWrite(led3Pin, LOW);
digitalWrite(led4Pin, LOW);
digitalWrite(led5Pin, LOW);
}
else if(potMeasure < 512)
{
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, HIGH);
digitalWrite(led4Pin, LOW);
digitalWrite(led5Pin, LOW);
}
else if(potMeasure < 768)
{
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
digitalWrite(led4Pin, HIGH);
digitalWrite(led5Pin, LOW);
}
else if(potMeasure < 1024)
{
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
digitalWrite(led4Pin, LOW);
digitalWrite(led5Pin, HIGH);
}
}
|