23.04.2026

“Svetofor” o’quv loyihasi [14+]

“Svetofor” o’quv loyihasi.

“Blink” sketchidan foydalanib, “Svetofor” loyihasini bir necha usullarda yaratamiz. Buning uchun bizga qizil, sariq va yashil rangli 3 ta svetodiod kerak bo’ladi.

Svetoforning dastlabki varianti sifatida, “Ogohlantirish rejimi”da ishlaydigan svetofor maketini yaratamiz. Bunda, biz 3 ta raqamli pindan foydalanamiz. Lekin faqat sariq svetodiod uzluksiz pirpirab turadi, qizil va yashil svetodiodlar doim o’chiq holda bo’ladi. Ko’rinib turibdiki, ushbu rejim sketchi “Blink” sketchidan deyarli farq qilmaydi. Faqat “setup()” funksiyasiga qizil va yashil svetodiodlarning doimiy o’chiq holatiga tegishli kodni qo’shish yetarli. Avvalo pinQizil, pinSariq, pinYashil, pauza o’zgaruvchilari va ularning qiymatlarini belgilab olamiz. So’ngra, Blink sketchiga tegishli o’zgartirishlarni kiritamiz.

'Svetofor'. 'Ogohlantirish' rejimi

int pinQizil = 2; //qizil svetodiod uchun pin raqami.
int pinSariq = 3; //sariq svetodiod uchun pin raqami.
int pauza = 500; //sariq svetodiod uchun yonib/o’chish vaqti, millisekund
void setup() {
pinMode(pinQizil, OUTPUT);
pinMode(pinSariq, OUTPUT);
pinMode(pinYashil, OUTPUT);
//Dastlab sariq svetodiodni yoqamiz, qolganlarini o’chiramiz
digitalWrite(pinQizil, LOW);
digitalWrite(pinSariq, HIGH);
digitalWrite(pinYashil, LOW);
delay(pauzaSariq); // sariq yonib turish vaqti
}

void loop() {
digitalWrite(pinYashil, LOW);
delay(pauzaSariq); // pauza
digitalWrite(pinYashil, HIGH);
delay(pauzaSariq); // pauza
}

Tekshiramiz:

1-rejim (oddiy rejim). Uning oldingi sketchlardan farqi, svetodiodlarning yonib turish vaqti bir necha sekundlarni tashkil qiladi. Har bir svetodiod uchun pin raqamlari hamda pauzalar davomiyligini ifodalovchi quyidagi o’zgaruvchilardan foydalanamiz va ularga qiymatlarni o’zlashtiramiz: pinQizil = 2, pinSariq = 3, pinYashil = 4, pauzaQizil = 10000, pauzaSariq = 3000, pauzaYashil = 10000. Sketch quyidagi holga keladi:

'Svetofor'. Oddiy rejim

int pinQizil = 2; //qizil svetodiod uchun pin raqami.
int pauzaQizil = 10000; //qizil svetodiod uchun yonib turish vaqti, millisekund
int pinSariq = 3; //sariq svetodiod uchun pin raqami.
int pauzaSariq = 3000; //sariq svetodiod uchun yonib turish vaqti, millisekund
int pinYashil = 4; //yashil svetodiod uchun pin raqami.
int pauzaYashil = 10000; //yashil svetodiod uchun yonib turish vaqti, millisekund

void setup() {
pinMode(pinQizil, OUTPUT);
pinMode(pinSariq, OUTPUT);
pinMode(pinYashil, OUTPUT);
//Dastlab sariq svetodiodni yoqamiz, qolganlarini o’chiramiz
digitalWrite(pinQizil, LOW);
digitalWrite(pinSariq, HIGH);
digitalWrite(pinYashil, LOW);
delay(pauzaSariq); // sariq yonib turish vaqti
}

void loop() {
//qizil svetodiodni yoqamiz, qolganlarini o’chiramiz:
digitalWrite(pinQizil, HIGH);
digitalWrite(pinSariq, LOW);
digitalWrite(pinYashil, LOW);
delay(pauzaQizil); // qizil yonib turish vaqti
digitalWrite(pinQizil, LOW);
digitalWrite(pinSariq, HIGH);
digitalWrite(pinYashil, LOW);
delay(pauzaSariq); // sariq yonib turish vaqti
digitalWrite(pinQizil, LOW);
digitalWrite(pinSariq, LOW);
digitalWrite(pinYashil, HIGH);
delay(pauzaYashil); // yashil yonib turish vaqti
digitalWrite(pinQizil, LOW);
digitalWrite(pinSariq, HIGH);
digitalWrite(pinYashil, LOW);
delay(pauzaSariq); // sariq yonib turish vaqti
}

Natijani kuzatamiz:

Navbatdagi rejimlar sketchi bevosita amaliy dars davomida tayyorlanadi:
2-rejim. Bunda qizil va yashil svetodiodlar yonish vaqti tugashidan oldin, qisqa muddat pirpirab turadi:

3-rejim. Aqlli rejim. Bunda qizil va yashil svetodiod yonish vaqti tugashidan oldin, qisqa muddat pirpirab turadi, keyin sariqqa o’tadi:
4-rejim. 2-aqlli rejim. Bunda yashil svetodiod yonish vaqti tugashidan oldin qisqa muddat pirpirab turadi, keyin to’g’ridan-tog’ri qizilga o’tadi. Lekin, shu vaqtda “kesishgan yo’lda” qizildan sariqqa va keyin yashilga o’tish standart tartibda bajariladi:

Keyinchalik, boshqa amaliy darslarda “Svetofor” loyihasini bosqichma-bosqich yanada takomillashtirib boramiz. Jumladan, ko’p seksiyali, taymerli svetofor kabi murakkab rejimlarni qo’shamiz, bundan tashqari svetofor ish rejimini knopka yordamida va masofadan o’zgartirish imkoniyatlarini bosqichma-bosqich qo’shib boramiz (buning uchun o’quvchi mos ravishda Arduinoning tegishli yangi tushunchalari bilan tanishib boradi).

Mustahkamlash uchun mashqlar (o’quv kurslari davomida bajariladi):

1) Svetofor loyihasining barcha ko’rilgan rejimlarini mustaqil bajarib chiqing.
2) Svetofor loyihasining barcha ko’rilgan rejimlarini ‘Wemos D1 mini’ platasi uchun bajaring.
3) Yuqoridagi topshiriqlarni ArduBlock dasturida bajarishni mashq qiling.