Mavzu
Fan: Internet of Things (IoT — Buyumlar Interneti)
Sinf: 9-sinf
Mavzu: Raqamli kirish (Digital Input), Push-button mexanikasi, Suzuvchi pin, INPUT_PULLUP va Serial Monitor
Darsning qisqacha mazmuni
Hozirgacha biz Arduino orqali faqat tashqi qurilmalarga signal yuborishni (chiqish — OUTPUT) o'rgandik. Bugungi darsdan boshlab Arduino tashqi dunyodan ma'lumot qabul qilishni (kirish — INPUT) boshlaydi. Buning uchun eng keng tarqalgan boshqaruv elementi — Push-button (bosiluvchi tugma)dan foydalanamiz. Dars davomida tugmani to'g'ri ulash, "suzuvchi pin" muammosi va kompyuter ekranida ma'lumotlarni ko'rish (Serial Monitor) bilan tanishamiz.
Asosiy tushunchalar:
- Raqamli kirish (Digital Input): Mikrokontroller piniga kelayotgan kuchlanishni 0V (LOW) yoki 5V (HIGH) deb o'qish;
- Push-button (Tugma): Bosilganda kontaktlarni birlashtiruvchi, qo'yib yuborilganda uzuvchi kirish asbobi;
- Suzuvchi pin (Floating pin): Havoda osilib qolgan pin tasodifiy xatoliklarni o'qishi;
- INPUT_PULLUP: Arduino ning o'rnatilgan ichki 20–50 kOm tortuvchi rezistori. Tugma bosilganda 0, bo'sh turganda 1 beradi;
digitalRead(pin): Pin holatini (HIGH yoki LOW) o'qib beruvchi buyruq;- Serial Monitor: USB port orqali kompyuterga ma'lumot uzatish va ekranda ko'rish vositasi (
Serial.begin(9600)vaSerial.println()).
Mustaqil bajarish uchun topshiriqlar
1-topshiriq oson
Tinkercad Circuits-da yangi loyiha oching va unga 9-sinf_Familiya_Dars8 deb nom bering. Ish maydoniga Arduino Uno, kichik Breadboard va 1 ta Push-button qo'ying.
2-topshiriq oson
Push-buttonni breadboardning markaziy ariqchasi ustiga joylashtiring. Uning chap yuqori oyog'ini (Terminal 1a) Arduino ning D2 piniga, o'ng yuqori oyog'ini (Terminal 2a) esa Arduino ning GND piniga ulang.
3-topshiriq oson
Code panelida matnli C++ rejimiga o'ting va setup() funksiyasida 2-pinni ichki tortuvchi rezistor bilan sozlang hamda Serial portni oching:
cpp
pinMode(2, INPUT_PULLUP);
Serial.begin(9600);4-topshiriq oson
loop() funksiyasi ichida digitalRead(2) natijasini o'zgaruvchiga saqlang va Serial Monitor oynasiga chop eting:
cpp
int holat = digitalRead(2);
Serial.println(holat);
delay(200);"Start Simulation" bosib, pastdagi "Serial Monitor" tugmasini bosing.
5-topshiriq o'rta
Serial Monitor oynasida chiqayotgan qiymatlarni kuzating:
- Tugma bosilmaganda qaysi raqam chiqmoqda?
- Sichqoncha bilan tugmani bosib turganda qaysi raqam chiqmoqda? Ushbu natijalarni daftaringizga qayd eting.
6-topshiriq o'rta
Sxemaga bitta Qizil LED va 220 Om rezistor qo'shing (anodini Arduino D9 piniga, katodini GND ga ulang). setup() ichida pinMode(9, OUTPUT); qatorini qo'shing.
7-topshiriq o'rta
Dasturga shartli operator (if-else) qo'shing:
- Agar tugma bosilsa (
holat == 0), 9-pindagi LED yonsin; - Agar tugma bo'sh bo'lsa (
holat == 1), LED o'chsin. Simulyatsiyada tugmani bosib, LED ning bir zumda yonishini sinab ko'ring.
8-topshiriq o'rta
INPUT_PULLUP o'rniga oddiy INPUT yozib ko'ring (pinMode(2, INPUT)). Tugmani bosmasdan simulyatsiyani kuzating. Nima sababdan Serial Monitor ko'rsatkichlari beqaror bo'lib qolganini tushuntiring. So'ngra kodni yana INPUT_PULLUP ga qaytaring.
9-topshiriq qiyin
Dasturga hisoblagich (Counter) qo'shing: har safar tugma bosilganda Serial Monitorga "Tugma bosildi: 1 marta", "Tugma bosildi: 2 marta" deb o'sib boruvchi sonni chiqaring.
10-topshiriq qiyin
Teskari mantiq (Inverted Logic) dasturlang: LED doimiy yonib tursin, ammo tugma bosilgan paytda 1 soniyaga o'chib, yana yonsin.
11-topshiriq bonus
Zanjirga ikkinchi Sariq LED (Pin 11) qo'shing. Shunday mantiq tuzingki:
- Tugma bo'sh turganda Yashil/Sariq LED yonib tursin;
- Tugma bosib turilganda esa Qizil LED yonsin, Sariq o'chsin (Avtomobil signalizatsiyasi yoki xavf tugmasi modeli).
