19.04.2026

Eng oddiy sketch va namunaviy sketchlar [14+]

“Dastyor” svetodiod

Ha, ilgari ham aytib o’tilganidek, deyarli barcha Arduino platalarida mavjud bo’lgan ichki svetodiodni “dastyor” deb atasa ham bo’ladi. Chunki, ba’zi murakkab loyihalarni xatolarga tekshirishda (otladka qilishda), masalan, plata raqamli piniga rele orqali ulangan tashqi yuklama – yuqori kuchlanishli lampani boshqarish kodining to’g’ri ekanligiga ishonch hosil qilish uchun mazkur raqamli pinga past kuchlanishli va kam energiya talab etuvchi oddiy svetodioddan foydalanish to’g’ri yo’l hisoblanadi (Svetodiodni plataga pindagi kuchlanish va tok kuchini cheklovchi rezistor orqali ulanadi).

Bunda birinchidan, qurilma ishini tekshirish chog’ida, tasodifan yuqori kuchlanish qismiga tegib ketish xavfi yo’qoladi. Ikkinchidan, dasturni xatolarga tekshirish paytida tashqi yuklamadan qayta-qayta foydalanish uning umrini qisqarishiga olib kelishi yoki ishdan chiqishiga sabab bo’lishi mumkin. Uchinchidan, ulangan tashqi yuklama talab qiladigan elektr quvvati darajasidan kelib chiqib, yuklamani boshqarayotgan relening ham qizib ketishi, ishdan chiqishi yoki shunchaki umri qisqarishi mumkin.

Agar yuqori kuchlanish relesi va unga ulangan tashqi yuklama o’rniga vaqtincha svetodioddan foydalanilsa, yuqoridagi xavflar o’z-o’zidan yo’qoladi. Rele va tashqi yuklamani esa, faqatgina loyiha oxiriga yetganidan keyingina ulash mumkin bo’ladi. Demak, qo’pol qilib aytganda, svetodioddan yuqori kuchlanishli yuklamagacha “bir qadam” bo’ladi xolos. Shuning uchun ham, Internet tarmog’idagi ko’plab o’quv va namunaviy loyihalarda, bibliotekalar qo’llanilishiga doir misollarda mualliflar dasturning to’g’ri ishlayotganini kuzatish uchun, shunchaki ichki svetodioddan foydalanishadi. Shuning uchun, saytdagi ko’plab amaliy mashg’ulotlarda ham biz yuklama sifatida aynan ichki svetodiodni boshqarish bilan cheklanamiz.

Endi nega svetodiodga aynan “dastyor” iborasi qo’llanilganiga kelsak, agar Arduino raqamli piniga faqat 1 ta svetodiod ulanishi zarur bo’lsa, uning o’rniga ham plataning o’zida joylashgan maxsus ichki svetodioddan foydalanish yetarli bo’ladi. Demak, bu holda, yuklama o’rniga ham hatto oddiy tashqi svetodiod ham emas, ichki svetodiod qo’llaniladi. Natijada, potensial (ehtimoliy) tashqi yuklama dasturda ko’zda kutilganidek to’g’ri ishlayotganini tekshirish uchun – uning kerakli paytda yuqori kuchlanishda ulanib-uzilayotganini kuzatish o’rniga, ichki svetodiodning yonib-o’chayotganini kuzatish maqsadga muvofiq bo’ladi. Ya’ni plataga hech qanday chiqish qurilmasini ulamasdan ham, dastur ishini nazorat qilish mumkin. Demak, “dastyor svetodiod” bizni ko’plab tashvishlardan ozod qilishi mumkin.

Ichki svetodiod AVR oilasiga mansub turli Arduino platalarida mikrokontrollerning 13-piniga, shuningdek, Arduinoni qo’llovchi ESP8266 platalarida 2-piniga (D4 piniga) ulangan bo’ladi. Umuman, agar yuqoridagi yoki boshqa qaysidir platada ichki svetodiod qaysi pinga ulanganligi noma’lum bo’lsa, Arduino sketchlarida pin raqami o’rniga LED_BUILTIN (ma’nosi – “ichki o’rnatilgan svetodiod”) konstantasidan foydalanish mumkin.

Eng oddiy sketch: raqamli pinga signal chiqarish.

Arduino IDE tayyor sketchlariga o’tishdan oldin, Arduinoning eng muhim buyruq-funksiyalari qatnashadigan va eng oddiy sketchni yaratamiz. Ushbu misol yordamida Arduino UNO platasining 13-piniga ulangan ichki svetodiodni tashqi yuklama deb tasavvur qilamiz va unga raqamli “HIGH” (“yuqori”) va “LOW” (“quyi”) signallarini yuborish yordamida yuklamani boshqarishni o’rganamiz. O’z navbatida ushbu yozuvlar Arduino tegishli piniga ulangan yuklamani mos ravishda ishga tushirish yoki o’chirish ma’nosini bildiradi. Bizning misolda yuklama ichki svetodiod bo’lgani uchun, pindagi HIGH holati svetodiod yoqilishini, LOW holati esa, o’chirilishini bildiradi (Arduino tayyor sketchlari ro’yxatida yana ham oddiy sketch mavjud – BareMinimum (“absolyut minimum”) sketchi. Biroq u mikrokontroller flesh-xotirasini tozalashdan tashqari, hech qanday foydali vazifa bajarmaydi, aniqrog’i unda 2 ta bo’sh majburiy funksiyalar (“setup()” va “loop()“) e’lon qilinganidan tashqari, hech qanday kod mavjud emas).

Arduino platasining raqamli pinga yuqori yoki quyi signalni yuborish uchun, dastlab tegishli pinni chiqish rejimiga o’tkazib olish zarur. Chunki sukunat bo’yicha (dastlabki holatida) barcha raqamli pinlar kirish rejimida bo’ladi. Pinning ish rejimini o’zgartirish vazifasini Arduinoning pinMode() funksiyasi bajaradi. Uning qo’llanilishi quyidagicha:

pinMode(<argument1>, <argument2>);

Bu yerda funksiyaning 1-argumenti sifatida Arduino (yoki mikrokontrollerning) raqamli pini ko’rsatiladi. 2-argument sifatida esa, signal chiqish yoki kirish rejimlarini anglatuvchi OUTPUT (“chiqish”), INPUT (“kirish”) yoki INPUT_PULLUP (“musbat” qutbga tortilgan “kirish”) yozuvlaridan biri qo’llaniladi. Raqamli pinlarning OUTPUT, INPUT, INPUT_PULLUP holatlari haqida alohida darsda ma’lumotlar keltirilgan.

Buyruq oxiridagi “;” belgisi ushbu buyruq oxirini anglatadi. Bunday buyruq Arduinoning har qanday buyrug’i yoki amallari oxirida ko’rsatilishi shart.

Demak, 13-pinga yuqori signal yuborish maqsadida uni “chiqish” rejimiga o’tkazish buyrug’i quyidagicha bo’ladi:
pinMode(13, OUTPUT);

Bevosita kerakli raqamli pinga signalni yuborish uchun Arduinoning digitalWrite() buyruq-funksiyasini qo’llaymiz. Uning  qo’llanilishi quyidagicha:

digitalWrite(<argument1>, <argument2>);

Bu yerda funksiyaning 1-argumenti sifatida Arduinoning raqamli pini ko’rsatiladi. 2-argument sifatida esa, pinning qanday holatga o’tkazilishi anglatuvchi HIGH yoki LOW yozuvlaridan biri qo’llaniladi. Ba’zida qulaylik uchun ushbu yozuvlarning o’rniga ularga mos keluvchi 1 yoki 0 raqamlari ham qo’llaniladi. Demak, 13-pinga yuqori signal yuborish buyrug’i yozilishi quyidagicha bo’ladi:

digitalWrite(13, HIGH);

Ilgari ma’lum qilinganidek, Arduino IDE da yaratiladigan har qanday sketchda 2 ta majburiy funksiya qo’llanilishi shart.

Biz uchun yuqoridagi buyruqlarning hozircha faqat 1 marta bajarilishi yetarli bo’lganligi sababli, biz ham ularni “setup()” funksiyasining kod sohasiga kiritamiz. “loop()” funksiyasi kod sohasi esa, bo’sh qoldiriladi. Demak, sketch quyidagi holatga keladi:

Svetodiodni yoqamiz
void setup() {
pinMode(13, OUTPUT); //13-pinni “chiqish” rejimiga o’tkazamiz
digitalWrite(13, HIGH); //13-pinga “yuqori” signal yuboramiz – svetodiodni yoqamiz
}

void loop() {
}

Dastlabki sketchimiz tayyor. Endi uni mikrokontrollerga yuklashimiz mumkin. Bundan oldin, albatta, Arduino UNO platasini USB-kabel orqali kompyuterning bo’sh USB portiga ulaymiz va Arduino IDE dasturida kerakli mikrokontroller hamda ketma-ket port nomi to’g’ri tanlanganini tekshirib qo’yamiz. Shundan keyin yuklash (“Загрузка”) tugmasini bosamiz. Sketch mikrokontrollerga yuklanib bo’lgach, Arduino platasidagi ichki svetodiod yoniq holga o’tganini kuzatishimiz mumkin.

Yuqorida keltirilganidek, agar 13-pindagi svetodiodni o’chirish kerak bo’lsa, digitalWrite() funksiyasi argumentidagi HIGH yozuvi o’rniga LOW yozuvi qo’llanilishi yetarli. Bunday holda, sketch quyidagi ko’rinishga keladi:

Svetodiodni o'chiramiz
void setup() {
pinMode(13, OUTPUT); //13-pinni “chiqish” rejimiga o’tkazamiz
digitalWrite(13, LOW); //13-pinga “quyi” signal yuboramiz – svetodiodni o’chiramiz
}

void loop() {
}

Sketch mikrokontrollerga yuklanib bo’lgach, Arduino platasidagi ichki svetodiod o’chiq holga kelganini kuzatishimiz mumkin.

Endi yuqoridagi sketchlarni umumlashtirib, svetodiodni yoqish va ma’lum muddatdan so’ng yana o’chirish dasturini yaratamiz.

Buning uchun Arduinoning yana bir delay() buyruq-funksiyasidan foydalanamiz. Uning vazifasi vaqtincha dastur ishida pauza o’rnatishdan iborat. Ushbu funksiya faqat 1 ta argument qabul qiladi va u pauza davomiyligi belgilaydi, millisekund birligida ko’rsatiladi. Demak, buyruqning qo’llanilishi quyidagicha bo’ladi:

delay(<argument>);

Masalan:

delay(1000); // buyruq natijasida 1000 millisekund, ya’ni 1 sekund pauza o’rnatiladi

Yuqoridagi sketchlarni umumlashtirib, svetodiodni yoqilganidan keyin 5 sekundlik pauza o’rnatamiz va shundan keyin svetodiod o’chirilishi buyrug’ini qo’llaymiz. Demak, “delay()” funksiyasi argumentiga 5000 qiymatini qo’llaymiz. Sketch quyidagi holga keladi:

Svetodiodni yoqib o'chiramiz
void setup() {
pinMode(13, OUTPUT); //13-pinni “chiqish” rejimiga o’tkazamiz
digitalWrite(13, HIGH); //13-pinga “yuqori” signal yuboramiz – svetodiodni yoqamiz
delay(5000); // 5 sekundlik pauza o’rnatamiz
digitalWrite(13, LOW); //13-pinga “quyi” signal yuboramiz – svetodiodni o’chiramiz
}

void loop() {
}

Namunaviy sketchlar

Tabiiyki, ushbu darslar va amaliy mashg’ulotlarni qanchalik kengaytirib, vaqtini uzaytirib o’rganishga harakat qilmaylik, Arduino platformasining barcha imkoniyatlarini qamrab olishning imkoni yo’q. Buni Arduino bo’yicha Internet tarmog’ida mavjud bo’lgan ma’lumotlar juda ko’pligidan ham ko’rish mumkin.

Albatta, bir-birini takrorlovchi, bir-biridan qisman yoki to’liq ko’chirilgan, tarjima qilingan ma’lumotlar ham juda ko’p. Lekin ularning hammasi ham o’z o’quvchilarini topganiga guvoh bo’lamiz (xuddi shuningdek, albatta “O’zing yarat!” loyihasi muallilari ham Arduino va aqlli texnologiyalar yo’nalishida o’z o’quvchilariga va obunachilariga ega bo’lishni rejalashtirgan). Shuning uchun ushbu darslar o’quvchiga avvalo Arduino platformasining ahamiyati, radiohavaskorlar va havaskor elektronikachilarga yaratib bergan imkoniyatlarini ochib berish bilan birga, turli vazifalarni bajaradigan elektron qurilmalarni o’z qo’li bilan yasay olishi uchun to’g’ri yo’lni ko’rsatib berishdan ham iborat. Amaliy mashg’ulotlar davomida o’rganiladigan har bir yangi yo’nalish bo’yicha tahlil etiladigan sketchlar aynan shunday maqsadlarga boshlashi mumkin. Demak, kelgusida o’rganiladigan namunaviy sketchlarni o’rganuvchilar uchun ularning o’zlarii xohlaganidek foydali va qiziqarli loyihalarni yaratish yo’lidagi yo’lboshlovchilar deb hisoblash mumkin (muallifdan).

Arduino platformasida turli loyihalarni yaratishda ko’pincha Arduino IDE dasturining tayyor namuna sifatida to’plangan sketchlaridan foydalanish maqsadga muvofiq bo’ladi. Ular yordamida hatto tayyor qurilmalarni ham yaratish mumkin. Biroq tayyor sketchlarning hammasi ham boshlovchi-arduinochilar uchun tushunarli bo’lmasligi mumkin. Bundan tashqari, ba’zida bitta loyiha natijasini turli displeylarga chiqarish uchun ular haqidagi ma’lumotlarni to’plashga asosiy loyihani tayyorlashga ketganidan ko’ra ko’proq vaqt talab etilishi ham mumkin.

Yaratilayotgan qurilmaning bajaradigan vazifalaridan kelib chiqib, plataga tegishli datchiklar, relelar va boshqa elektron komponentlar ulanishi talab etiladi. Arduinoni o’rganishga endigina kirishganlar uchun bunday loyihalar bilan ishlash qiyinchilik tug’dirishi aniq. Shuning uchun ushbu bosqichda, boshlovchi arduinochi plataga kamroq sondagi elektron komponentlardan foydalaniladigan yoki umuman ulardan foydalanilmaydigan sketchlar bilan tanishishi maqsadga muvofiq.

Bunday vaziyatlarni hisobga olgan holda muallif o’z tajribasida foydalangan turli murakkablikdagi tayyor sketchlarning soddalashtirilgan ko’rinishlari bilan ham o’rtoqlashishni rejalashtirgani va namunaviy sketchlar ro’yxati tuzilgan (ro’yxat muntazam yangilab boriladi). Amaliy mashg’ulotlar uchun yangi tuzilgan namunaviy sketchlar ro’yxati saytimiz menyusining “Darslar/Amaliy mashg’ulotlar/Namunaviy sketchlar” bo’limida keltirilgan. Arduino IDE tayyor sketchlari ro’yxati esa, dasturining “Файл/Примеры” menyusidagi turli bo’limlarda joylashgan.

Mustahkamlash topshiriqlari:
1) Arduino UNO va Wemos D1 mini platalaridagi raqamli pinlarni kategoriyalarga ajrating va har birining sonini aniqlang.
2) Yuqoridagi sketchlarni turli xil raqamli pinlar uchun o’zgartiring.
3) Svetodiod yoniq turish vaqtini turli qiymatlarga o’zgartib, natijani kuzating.
4) Oxirgi sketchni svetodiodni dastlab o’chiq holga, 3 sekunddan keyin yoniq holga o’tkazadigan holga keltiring.
5) Oxirgi sketchni svetodiod 3 sekund pauza bilan 2 marta yonib-o’chadigan holga keltiring.

 

Добавить комментарий