9-LABORATORIYA ISHI
MIKROKONTROLLER QURILMASI YORDAMIDA AMALIY SXEMATIK ZANJIRLARNI TADQIQOT QILISH
ISHLASH TARTIBI:
ATMega328 mikrokontrolleri negizidagi Arduino UNO mikroplatasi yordamida transport sohasida qo‘llaniladigan svetofor qurilmasini ishlash tartibini tashkil etish uchun Proteus Professional v.8.10 simulyator dasturi orqali sxemani tuzish hamda Arduino IDE dasturida sketch tuzishni o‘rganish va uni mikrokontrollerga yuklash.
2. UMUMIY MA’LUMOTLAR
Transport sohasida qo‘llaniladigan svetofor qurilmasi asosan harakat havfsizligini ta’minlashda harakatlanuvchi ob’ektlarga axborot berish vazifasini bajaradi.
Hozirgi vaqtda, avval qo‘llaniladigan chiroqli svetoforlarga nisbatan yorug‘lik diodlari moduli iqtisodli va ishonchli hisoblanadi. Yorug‘lik diodi moduli konstruksiyasida bitta yorug‘lik diodini ishdan chiqishi, svetofor ishlashi tartibini davom ettirilishiga va uning ishini chiroqlilarga nisbatan to‘xtab qolmasligini ta’minlaydi. Bundan tashqari, hozirgi vaqtda aksariyat avtomobil yo‘llari svetoforlari ushbu yorug‘lik diodlariga almashtirilgan bo‘lib, chiroqli svetoforlarga nisbatan yorug‘lik diodlilarda rangli ishoralardan tashqari boshqa ma’lumotlarni (soniya, piyoda harakati va hokazolarni) ham keltirish mumkin.
Amaliy vazifalarni bajarish tartibini ko‘rib chiqamiz.
Buning uchun, ushbu loyihani amalga oshirishda avtomobil yo‘llarida qo‘llaniladigan svetoforning ishlash tartibi bo‘yicha sxemasi bilan tanishib chiqamiz.
Zanjirda quyidagi qurilma va elementlardan foylanamiz:
Proteus Professional v.8.10 simulyator dasturi;
Arduino IDE dasturi;
Proteus Professional v.8.10 simulyator dasturidan:
- Arduino UNO mikroplatasi;
- 3 ta yorug‘lik diodlari: qizil, sariq, yashil rangli;
- 3 ta 220 Om-li rezistorlar.
Sxema tuzishni ko‘rib chiqamiz. Sxema juda ham sodda, asosan 3 ta yorug‘lik diodini ulaymiz. Yorug‘lik diodining bitta oyoqchasini Arduino UNOning raqamli pin-oyoqchasiga (real sxemada yorug‘lik diodini anod yoki musbat oyoqchasi) va boshqa oyoqchasini minus yoki zaminga rezistor orqali ulanadi (9.1-rasmga qarang).
Yorug‘lik diodlari raqamli pinga ulanayotganda qizil (RED) 13-port, sariq (YELLOW) 12-port va yashil (GREEN) 11-portga ulanishi kerak (9.1-rasmga qarang).
9.1-rasm. Proteus Professional v.8.10 simulyator dasturi orqali Arduino UNO mikroplatasi negizidagi yorug‘lik diodlar svetoforining sxemasi.
Svetoforni dasturlash. Dasturni yozishdan avval umumiy harakat algoritmini sodda ko‘rinishda – so‘zlarda keltirib, tushunib olish kerak.
Ishlash algoritmi:
Svetoforning yashil ishorasini yoqilishidan boshlanadigan. Uni yoqamiz.
Bir oz muddatdan so‘ng (vaqt o‘zgartirilishi mumkin) yashil ishorasi miltillashni boshlaydi.
Yashil rang ishorasi o‘chiriladi va sariq rang ishorasi yoqiladi.
Bir oz muddatdan so‘ng (vaqt o‘zgartirilishi mumkin) sariq rang ishorasi uchiriladi va qizil rang ishorasi yoqiladi.
Bir oz muddatdan so‘ng (vaqt o‘zgartirilishi mumkin) qizil ishorasi miltillashni boshlaydi.
Qizil rang ishorasi o‘chiriladi va sariq rang ishorasi yoqiladi.
Keyingi bosqich tsiklik ravishda davom etib turadi.
Ushbu algoritm tushunchalariga asoslanib Arduino IDE dasturi orqali sketch yozish uncha murakkab bo‘lmaydi. Bu yerda har bir “yoqilish” so‘zi o‘rniga digitalWrite, HIGH atributi orqali, “o‘chirish” so‘zi o‘rniga digitalWrite, LOW atributi orqali va pauza yoki holatni ushlab turish delay yordamida shakllantiriladi. Masalan quyida qizil rang ishorasidan yashilga o‘tish dastur qismi keltirilgan:
// Sariq va qizil o‘chiriladi
digitalWrite(11, LOW); // Qizil
digitalWrite(10, LOW); // Sariq
// Yashilni yoqamiz
digitalWrite(9, HIGH);
// Pauza vaqti 3 soniya
delay(3000);
Dasturda ma’lum pin (mikrokontrollerga kirish/chiqishlari) raqamlari bog‘lamaslik uchun kerakli bo‘lgan pinlarga ega konstantalarni yaratish mumkin yoki sxema ulanishini o‘zgartirmoqchi bo‘lsak faqat bitta konstanta qismidan o‘zgartirishimiz kifoya bo‘ladi.
Konstanta qo‘llash namunasi quyidagicha bo‘ladi:
const int LED_RED = 11; // 11-port, qizil yorug‘lik diodi
const int LED_YELLOW = 10; // 10-port, sariq yorug‘lik diodi
const int LED_GREEN = 9; // 9-port, yashil yorug‘lik diodi
const int TIMEOUT_GREEN = 3000;
// Sariq va qizil yorug‘lik diodlarini o‘chiramiz.
digitalWrite(LED_YELLOW, LOW);
digitalWrite(LED_RED, LOW);
// GrnTime da yashil rangni ishorasini yoqamiz
digitalWrite(LED_GREEN, HIGH);
delay(TIMEOUT_GREEN);
Yashil rang ishorani miltilash rejimida tuzishimiz ham mumkin:
// Yashil yorug‘lik diodini miltillashi
// Birinchi holatda
digitalWrite(LED_GREEN, LOW);
delay(TIMEOUT_FLASH_GREEN);
digitalWrite(LED_GREEN, HIGH);
delay(TIMEOUT_FLASH_GREEN);
// Ikkinchi holatda
digitalWrite(LED_GREEN, LOW);
delay(TIMEOUT_FLASH_GREEN);
digitalWrite(LED_GREEN, HIGH);
delay(TIMEOUT_FLASH_GREEN);
// Uchinchi holatda
digitalWrite(LED_GREEN, LOW);
delay(TIMEOUT_FLASH_GREEN);
digitalWrite(LED_GREEN, HIGH);
delay(TIMEOUT_FLASH_GREEN);
Dasturlashda 3 marta qaytarmaslik uchun FOR tsiklini qo‘llash maqsadga muvofiq:
for (int i=0; i<3; i++)
{
digitalWrite(LED_GREEN, LOW);
delay(TIMEOUT_FLASH_GREEN);
digitalWrite(LED_GREEN, HIGH);
delay(TIMEOUT_FLASH_GREEN); }
|