23.04.2026

Raqamli datchiklar bilan ishlash [14+]

Raqamli va analog datchiklar, ularning vazifasi haqida alohida darsda qisqacha ma’lumotlar keltirib o’tilgan. Biz tog’ridan tog’ri ularni amalda qo’llashga doir misollarga o’tamiz.

Raqamli datchiklar bilan ishlash.

Arduinoda qo’llaniladigan raqamli datchiklarni ulardan foydalanish usuli keskin farq qilishini hisobga olib, ular chiqaradigan raqamli signal turidan kelib chiqib 2 ta turga ajratish mumkin: oddiy va murakkab raqamli datchiklarga.

Ma’lunki, diskret (mantiqiy, oddiy) signal – ma’lum vaqt oralig’ida qiymati o’zgarmaydigan, asosan yuqori (mantiqiy rost, +3.3/+5V, “1”, “true”) yoki quyi (mantiqiy yolg’on, 0V, GND, “0”, “false”) kuchlanish holatlaridan biriga ega bo’lgan elektr signali hisoblanadi. Arduinoda diskret signalni raqamli signalning bir turi sifatida qaraladi. Diskret signalni o’qishda uning kuchlanish darajasidan kelib chiqib, uning qiymati yuqori yoki quyi signal sifatida ajratiladi.

Odatda yuqori mantiqiy holat (“1”) kuchlanishi uni qayta ishlovchi mikrosxema ishchi kuchlanishiga yaqin bo’ladi (aniqrog’i, shu kuchlanishning yarmidan yuqori bo’ladi), quyi mantiqiy holat (“0”) kuchlanishi esa, odatda mikrosxema ta’minot kuchlanishining yarmidan past bo’lgan qiymati hisoblanadi. Shuning uchun tashqi shovqin ta’sirida buzilgan (kuchlanishi nisbatan pasaygan) signal ham ko’pincha raqamli signal sifatidagi o’z mantiqiy holatini o’zgartirmaydi va aksariyat hollarda muammosiz qayta ishlanaveradi (Yuqoridagilardan kelib chiqib, oddiy raqamli signal deganda bit o’lchov birligida o’lchanadigan, faqat “0” va “1” qiymatidan iborat 1 bit o’lchamli signalni tushunish mumkin. Lekin, Arduinoda eng kichik qiymat turi bool ham 1 bayt joy egallashini hisobga olsak, oddiy raqamli signalming xotiradan egallaydigan joyi 1 baytga teng bo’ladi).

Oddiy (diskret) raqamli datchik deganda, chiqish signali faqat yuqori (“HIGH”) yoki quyi (“LOW”) elektr signali ko’rinishida bo’ladigan datchiklar tushuniladi (masalan, raqamli chiqish kontaktiga ega bo’lgan mikrofonli, termorezistorli va boshqa datchik-modullar shular jumlasiga kiradi). Boshqacha qilib aytganda, chiqish signali faqat 1 bayt o’lchamga ega bo’ladigan raqamli datchikni oddiy raqamli datchik deyish mumkin.

Modul ko’rinishidagi diskret turidagi datchiklarda analog signal tegishli elektron komponent tomonidan o’lchangach, uni ichki ADC konverter yordamida oddiy raqamli shaklga o’tkaziladi. Ham analog, ham diskret turdagi signal chiqaruvchi ba’zi modullarda analog signalning qanday darajasini yuqori yoki quyi raqamli signal deb hisoblanishi undagi o’zgaruvchan rezistorni regulirovka qilish orqali belgilanadi. Arduinoda oddiy raqamli datchiklar bilan ishlaganda, hech qanday bibliotekalardan foydalanishga hojat qolmaydi.

Tugma (knopka), pereklyuchatel, sensorli tugma kabi elektron komponentlarni ham oddiy raqamli datchik deb hisoblash mumkin. Bunda, 2 ta kontaktli tugma – 1 ta chiqishli, ko’p kontaktli pereklyuchatel – ko’p chiqishli raqamli datchik deb qaralishi mumkin.

Arduinoda oddiy raqamli datchiklardan “HIGH” yoki “LOW” raqamli signallarini qabul qilish (o’qish) uchun digitalRead() funksiyasidan foydalaniladi.  Uning qo’llanilishi formati quyidagicha:

digitalRead(<argument>);

Bu yerda funksiyaning argumenti sifatida raqamli pin nomi yoki uning tartib raqami ko’rsatiladi. Funksiyaning o’zi esa, HIGH (1) yoki LOW (0) diskret qiymatlardan birini qabul qiladi.

Ushbu funksiyani qo’llashdan oldin, pinMode() funksiyasi yordamida kerakli pinni kirish rejimiga (INPUT) o’tkazib olish zarur. Ko’p hollarda ushbu funksiyaning qiymati bir yo’la qiymat turi bool bo’lgan biron o’zgaruvchiga o’zlashtirililgan holda qo’llaniladi. Masalan:

bool pinHolati = digitalRead(2);
// raqamli 2-pin holati bool qiymat turidagi pinHolati o’zgaruvchisiga o’zlashtirilmoqda.

Diskret raqamli datchiklarning ishlash prinsipi bilan tanishishning eng oson yo’li – bunday datchik sifatida tugmadan foydalanish hisoblanadi. Chunki, tugma bosilgani yoki qo’yib yuborilgani holatidan kelib chiqib tegishli raqamli pinda HIGH yoki LOW diskret signallari yuzaga keladi. Bunda tugmaning bir kontakti raqamli pinga, ikkinchi kontaktini esa, manfiy (GND) yoki musbat (5V) qutbga ulanadi. Mos ravishda, 2-kontakt GND ga ulangan holda tugma bosilganda, GND kontaktidagi LOW signali tugma orqali raqamli pinga o’tadi va raqamli kirish pinida ham LOW signali hosil bo’ladi. Aksincha, 2-kontakt 5V kontaktiga ulangan taqdirda, undagi HIGH signali tugma orqali raqamli pinga o’tadi va unda ham HIGH signali hosil bo’ladi. Misol tariqasida Arduinoning “Примеры/02. Digital” menyusidagi “Button” sketchidan foydalanish mumkin.

Bundandan tashqari, oddiy raqamli signallar ketma-ketligini analog signal ko’rinishida taqdim etish orqali mikrokontroller raqamli pinlarida PWM-signallarni hosil qilish mumkin. Bunday signallardan chiquvchi kuchlanishni raqamli usulda regulirovka qilish maqsadlarida keng foydalaniladi.

PWM (“ШИМ” – широтно-импульсная модуляция, Impuls Kengligi Modulyatsiyasi) – doimiy chastotali signalni impulslar ketma-ketligi ko’rinishida taqdim etish va impulslar chuqurligini (razryadligini) o’zgartirish yo’li bilan ushbu signal darajasini boshqarish jarayoni. Soddaroq qilib aytganda, diskret raqamli signallar ketma-ketligining qiymatlarini analog signal shakliga o’xshash holga keltirish.

Mikrokontrollerning ayrim raqamli pinlari orqali raqamli signallarning ketma-ketligini analogWrite() funksiyasi yordamida analog signalga o’xshash ko’rinishga – silliq o’zgaruvchi signal shakliga keltirish mumkin. Bunday imkoniyatga ega bo’lgan pinlarni PWM pinlar (“ШИМ пины”) deb ataladi. Raqamli signalning o’zgarishidagi silliqlik darajasi esa, mikrokontrollerning takt chastotasiga bog’liq bo’ladi va uning standart qiymati (razryadi) 8 bit (maksimal qiymati = 2^8 = 256) ga teng (dasturiy yo’l bilan PWM signal razryadini oshirish mumkin, bunda hosil bo’lgan raqamli signal chastotasi (silliqlik darajasi) proportsional tarzda ortadi). Demak, standart hollarda tegishli pindagi signalning qiymati kuchlanish darajasidan kelib chiqib (0…+5V kuchlanishiga mos qiymat) 0…255 oralig’ida bo’ladi.

Nodiskret (murakkab) raqamli signal – raqamlashtirilgan analog signalning qiymatlarini qayta ishlanganidan so’ng to’g’ridan-to’g’ri tashqi raqamli qurilmaga (mikrokontrollerga) ma’lumotlar paketi ko’rinishida yuboriladigan shakli. Arduinoda nodiskret raqamli signal har qanday raqamli pin orqali o’qilishi mumkin, lekin signal murakkab strukturaga ega bo’lganligi sababli, signalning tarkibidagi ma’lumotlar paketini o’qish va qayta ishlash uchun tegishli bibliotekalardan foydalanish maqsadga muvofiq. Batafsil ma’lumotlar bilan bu yerda tanishish mumkin (Yuqoridagilardan kelib chiqib, nodiskret yoki murakkab raqamli signal deganda, bayt o’lchov birligida o’lchanadigan raqamli signalni tushunish mumkin).

Murakkab raqamli datchik deganda esa, tegishli elektron komponent orqali o’lchangan va ichki ADC konverter yordamida raqamlashtirilgan, analog signalning darajasiga mos keluvchi nodiskret raqamli signal qiymatlarini qayta ishlanganidan so’ng to’g’ridan-to’g’ri tashqi raqamli qurilmaga (mikrokontrollerga) murakkab raqamli signal – ko’p baytli ma’lumotlar paketi ko’rinishida yuboruvchi datchik tushuniladi.

Masalan, DHT11 (DHT21, DHT22), DS18B20 va shunga o’xshash raqamli termodatchiklar temperatura hamda havo namligining o’lchangan darajasini raqamlashtirib, to’g’rdan-to’g’ri mikrokontrollerga ma’lumotlar paketi tarzida yuboradi, mikrokontroller esa maxsus biblioteka funksiyalari yordamida, qabul qilingan ma’lumotlar paketini o’qiydi va qayta ishlaydi (harorat va havo namligi ko’rsatkichlarini ajratib oladi), shundan keyin u ularni natijalarni chiqarish vositalariga (masalan, displeyga, port monitoriga va hokazo) yuborishi mumkin. Ya’ni, bunda analog signalni raqamlashtirish va ular asosida ma’lumotlar paketini shakllantirish vazifasini datchik modulidagi ADC konverter o’z zimmasiga oladi. Arduinoda nodiskret raqamli datchiklar bilan ishlash uchun har bir datchikning o’ziga xos xususiyatlaridan kelib chiqib, turli xil tashqi bibliotekalardan foydalanishga to’g’ri keladi. Shuning uchun ham, murakkab raqamli datchiklar bilan ishlashning alohida umimiy qoidasi mavjud emas! (Lekin, murakkab raqamli datchik ko’rsatkichining o’lchami (necha baytga teng ekanligi) datchik ko’rsatkichi qaysi qiymat turida ifodalanishiga bog’liq bo’ladi: bool = 1, bayt = 1, int = 2, unsigned int = 2, float = 4, long = 4, unsigned long = 4, double = 4, int64_t = 8, uint64_t = 8).

Misol tariqasida, DHT moduli yordamida hududdagi temperatura va havo namligini o’chash yoki DS18B20 datchigi yordamida temperaturani o’chash uchun raqamli termometr darsidagi namunaviy sketchlardan foydalanishimiz mumkin.

Yuqoridagilardan tashqari, ayrim raqamli datchiklar mavjudki, ularni yuqoridagi raqamli datchik turlaridab biriga kiritish mumkin bo’lsa-da, ulardan foydalanish murakkabroqligi sababli alohida ulardan foydalanish uchun alohida yondashuv talab etiladi. Masalan ularning ishlash prinsipi oddiy raqamli datchiknikiga o’xshash, lekin ularni boshqaruvchi sketchlarda murakkab algoritmdan foydalanishga to’g’ri keladi. Bunday datchiklarni shartli ravishda nostandart raqamli datchiklar deb ataymiz va alohida amaliy mashg’ulotda ko’rib chiqamiz.