{"id":1985,"date":"2024-03-02T13:06:40","date_gmt":"2024-03-02T08:06:40","guid":{"rendered":"https:\/\/yarat.uz\/?p=1985"},"modified":"2025-03-19T15:27:04","modified_gmt":"2025-03-19T10:27:04","slug":"oddiy-raqamli-datchiklar-bilan-ishlash-14","status":"publish","type":"post","link":"https:\/\/yarat.uz\/?p=1985","title":{"rendered":"Oddiy raqamli datchiklar bilan ishlash [14+]"},"content":{"rendered":"<p style=\"text-align: justify;\"><a href=\"https:\/\/yarat.uz\/?p=54\">Nazariy darsda<\/a> oddiy raqamli datchiklar bilan ishlash bo&#8217;yicha qisqacha ma&#8217;lumotlar berilgan. Biz quyida shunday datchiklar bilan ishlashni namunaviy sketchlar yordamida ko&#8217;rib chiqamiz.<\/p>\n<p style=\"text-align: justify;\"><strong>1-misol. <\/strong>Misol tariqasida Arduino IDE ning &#8220;<strong>\u041f\u0440\u0438\u043c\u0435\u0440\u044b\/02. Digital<\/strong>&#8221; menyusidagi &#8220;<strong>Button<\/strong>&#8221; sketchidan foydalanamiz. Bunda, Arduino platasi raqamli piniga ulangan <strong>tugma<\/strong> raqamli datchik vazifasini bajaradi.<\/p>\n<p style=\"text-align: justify;\">Tugmaning bitta kontaktini Arduino UNOning 5-piniga, 2-chisini GND piniga ulaymiz. Demak, tugma bosilsa, 5-pinda ham LOW holati hosil bo&#8217;ladi, qo&#8217;yib yuborilganda o&#8217;zgaruvchan signal hosil bo&#8217;ladi (Agar tugmaning 2-kontakti plataning 5V piniga ulansa, tugma bosilganda, 5-pinda HIGH holati, qo&#8217;yib yuborilganda, o&#8217;zgaruvchan signal hosil bo&#8217;ladi). Raqamli pin kirish rejimida bo&#8217;lganda, unda o&#8217;zgaruvchan signal yuzaga keladi. Indikator sifatida raqamli 13-pindagi ichki svetodioddan foydalanamiz.<\/p>\n<p><em>Sxema:<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2353 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/button-e1711619588223.jpg\" alt=\"\" width=\"818\" height=\"662\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/button-e1711619588223.jpg 818w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/button-e1711619588223-300x243.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/button-e1711619588223-768x622.jpg 768w\" sizes=\"auto, (max-width: 818px) 100vw, 818px\" \/><\/p>\n<p><em>&#8220;Button&#8221; sketchi:<\/em><\/p>\n<p style=\"text-align: justify;\"><div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>'<strong>Button<\/strong>' sketchi<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\/\/ Konstantaning qiymatini dastur davomida o&#8217;zgartirib bo&#8217;lmaydi.<br \/>\n\/\/ Ushbu skechda pin raqamini belgilash uchun konstantalar qo&#8217;llanilyapti:<br \/>\nconst int knopkaPini = 5; \/\/ tugma ulangan pin raqami o&#8217;zgarmas qilib belgilanyapti<br \/>\nconst int svetodiodPini = 13; \/\/ svetodiod ulangan pin raqami o&#8217;zgarmas qilib belgilanyapti<\/p>\n<p style=\"text-align: justify;\">\/\/ o&#8217;zgaruvchining qiymati dastur davomida o&#8217;zgarishi mumkin:<br \/>\nint knopkaHolati = 0; \/\/ tugma holatini o&#8217;zlashtirish (eslab qolish) uchun o&#8217;zgaruvchi<\/p>\n<p style=\"text-align: justify;\">void setup() {<br \/>\npinMode(svetodiodPini, OUTPUT); \/\/ svetodiod ulangan pinni chiqish pini sifatida belgilaymiz<br \/>\npinMode(knopkaPini, INPUT); \/\/ tugma ulangan pinni kiritish pini sifatida belgilaymiz<br \/>\n}<\/p>\n<p style=\"text-align: justify;\">void loop() {<br \/>\nknopkaHolati = digitalRead(knopkaPini); \/\/ tugma holatini o&#8217;qiymiz va o&#8217;zgaruvchiga o&#8217;zlashtiramiz<\/p>\n<p style=\"text-align: justify;\">\/\/ knopka bosilganini tekshiramiz. Bosilsa, &#8220;knopkaHolati&#8221; o&#8217;zgaruvchisining qiymati LOW bo&#8217;ladi, aksincha HIGH bo&#8217;ladi (chunki &#8220;knopkaPini&#8221; GND ga ulanadi):<br \/>\nif (<strong>knopkaHolati == HIGH<\/strong>) { \/\/ agar knopka qo&#8217;yib yuborilsa &#8230;<br \/>\ndigitalWrite(svetodiodPini, HIGH); \/\/ svetodiod yoqilsin<br \/>\n} else { \/\/ aksincha, tugma bosilganda &#8230;<br \/>\ndigitalWrite(svetodiodPini, LOW); \/\/ svetodiod o&#8217;chirilsin<br \/>\n}<br \/>\n\/\/ ? uchlik operatoridan foydalanilganda:<br \/>\n\/\/ digitalWrite(svetodiodPini, (knopkaHolati)?LOW:HIGH);<br \/>\n}<\/div><\/div>\n<p style=\"text-align: justify;\">if\/else ishtirokidagi 1 ta shart (ba&#8217;zida, har doim emas!) 2 ta if operatori ishtirokidagi 2 ta alohida shartlarga ajratilishi mumkin. Bunda, if operatori kodida faqat bitta amal bajarilsa, {} belgilari qo&#8217;llanilishi shart emas:<\/p>\n<p>if (<strong>knopkaHolati == HIGH<\/strong>)\u00a0 digitalWrite(svetodiodPini, HIGH); \/\/ ajratilgan 1-shart<br \/>\nif (<strong>knopkaHolati == LOW<\/strong>)\u00a0 digitalWrite(svetodiodPini, LOW); \/\/ ajratilgan 2-shart<\/p>\n<p style=\"text-align: justify;\">Yuqoridagi 1-sketchdan, turli raqamli datchiklarning signallarini o&#8217;lchash va qayta ishlashda foydalanish mumkin. Bunday datchiklar asosan bir-biridan, ularning Arduino platasiga bog&#8217;lanish sxemasi bilan farq qiladi xolos.<\/p>\n<p style=\"text-align: justify;\">Yuqoridagi sketchni tugma o&#8217;rniga <strong>kontaktli datchik<\/strong> (2 ta magnitli datchik bir-biridan uzoqlashganda kontaktlaridagi signal yo&#8217;qoladigan datchik) qo&#8217;llanilgan holatlar uchun ham qo&#8217;llash mumkin. Asosiy farq shundaki, tugma bosilganda raqamli pinda qarama-qarshi signal paydo bo&#8217;lsa, kontaktli datchik kontaktlari uzilganda o&#8217;sha raqamli pinda signal yo&#8217;qoladi. Shuning uchun, bunday sketchni signalizatsiya qurilmalarini yaratishda qo&#8217;llash mumkin.<\/p>\n<p style=\"text-align: justify;\">Ma&#8217;lumki, oddiy raqamli datchik modullari qabul qilingan analog signalni ichki ADC konverter yordamida o&#8217;zi raqamlashtirishi va oddiy raqamli signal holatida mikrokontrollerga uzatishi mumkin. Ya&#8217;ni, mikrokontrollarga analogni signalni raqamlashtirishga hojat qolmaydi. Masalan, <strong>KY-038 mikrofon moduli<\/strong> shunday imkoniyatga ega.<\/p>\n<p style=\"text-align: justify;\">KY-038 mikrofon moduli Arduino UNO ga quyidagi sxema asosida ulanadi (Bizning maqsadimiz faqat raqamli signalni qabul qilish va o&#8217;qish bo&#8217;lganligi uchun, modulning A0 analog chiqishidan foydalanmaymiz. Xuddi shu sxemadan foydalangan holda, analog signalni o&#8217;qish va qayta ishlash bo&#8217;yicha sketch bilan esa <a href=\"https:\/\/yarat.uz\/?p=1875\">alohida darsda<\/a> tanishamiz).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2364 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/fritzing-mikrophone2.jpg\" alt=\"\" width=\"903\" height=\"1428\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/fritzing-mikrophone2.jpg 903w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/fritzing-mikrophone2-190x300.jpg 190w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/fritzing-mikrophone2-648x1024.jpg 648w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/fritzing-mikrophone2-768x1215.jpg 768w\" sizes=\"auto, (max-width: 903px) 100vw, 903px\" \/><\/p>\n<p style=\"text-align: justify;\">Sketch ishga tushirilgach hududdagu tovush balandligidan kelib chiqib, raqamli signallarning qiymatlari o&#8217;zgarayotganini kuzatish mumkin.<\/p>\n<p style=\"text-align: justify;\"><strong>2-misol. <\/strong>Yuqorida ta&#8217;kidlanganidek, raqamli pinga hech qanday signal yuborilmaganda unda mavhum (o&#8217;zgaruvchan) signal holati yuzaga keladi. Mavhum holatni bartaraf etish uchun sxemada kerakli pin bilan musbat qutb orasida pinni musbat qutbga tortuvchi rezistor qo&#8217;llanilishi yoki &#8220;INPUT&#8221; rejimi o&#8217;rniga &#8220;<strong>INPUT_PULLUP<\/strong>&#8221; rejimini qo&#8217;llash mumkin (mikrokontrollerda bunday pinlar soni cheklangan &#8211; faqat ayrim raqamli pinlar uni qo&#8217;llab-quvvatlaydi). INPUT_PULLUP rejimi haqida batafsil ushbu <a href=\"https:\/\/yarat.uz\/?p=72\">dars<\/a> orqali tanishish mumkin.<\/p>\n<p style=\"text-align: justify;\">Agar tugma raqamli pin bilan musbat qutb (+5V) orasida qo&#8217;llanilsa, mazkur pin bilan manfiy qutb (GND) orasida (pinni manfiy qutbga tortuvchi) rezistor qo&#8217;llanilishi zarur. Dastur yordamida esa, bunday rejimni o&#8217;rnatib bo&#8217;lmaydi:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2355 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/button2_bb2.jpg\" alt=\"\" width=\"852\" height=\"1053\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/button2_bb2.jpg 852w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/button2_bb2-243x300.jpg 243w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/button2_bb2-829x1024.jpg 829w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/03\/button2_bb2-768x949.jpg 768w\" sizes=\"auto, (max-width: 852px) 100vw, 852px\" \/><\/p>\n<p style=\"text-align: justify;\">Biz navbatdagi misolda raqamli pinni &#8220;INPUT_PULLUP&#8221; rejimiga o&#8217;tkazib olamiz. Misol tariqasida esa, Arduinoning &#8220;<strong>DigitalInputPullup<\/strong>&#8221; namunaviy sketchidan foydalanamiz (sketchdagi inglizcha izohlarni chiqarib tashlanadi. Dasturdagi notanish elementlar o&#8217;zbek tilida izohlab ketiladi).<\/p>\n<p style=\"text-align: justify;\"><div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>'<strong>DigitalInputPullup<\/strong>' sketchi<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\nvoid setup() {<br \/>\nSerial.begin(9600); \/\/ Natijani port monitorida ham kuzatishimiz uchun, Serial obyektini faollashtiramiz<br \/>\npinMode(2, INPUT_PULLUP); \/\/ tugma ulangan 2-pin kirish rejimiga o&#8217;tkazilmoqda va pinni musbat qutbga tortuvchi ichki rezistor ulanmoqda<br \/>\npinMode(13, OUTPUT); \/\/ 13-pin chiqarish rejimiga o&#8217;tkazilmoqda<br \/>\n}<\/p>\n<p style=\"text-align: justify;\">void loop() {<br \/>\nint sensorVal = digitalRead(2); \/\/ 2-pin o&#8217;qilmoqda va tugma bosilganlik holati tekshirilmoqda, natija o&#8217;zgaruvchiga o&#8217;zlashtirilmoqda<br \/>\nSerial.println(sensorVal); \/\/ olingan natija ketma-ket portga chiqarilmoqda, uni port monitorida kuzatishimiz mumkin<\/p>\n<p style=\"text-align: justify;\">\/\/ Agar tugma bosilsa, o&#8217;zgaruvchi qiymati &#8211; LOW, qo&#8217;yib yuborilsa &#8211; HIGH bo&#8217;ladi.<br \/>\nif (sensorVal == HIGH) {<br \/>\ndigitalWrite(13, LOW); \/\/ bosilganda svetodiodni yoqamiz<br \/>\n} else { \/\/ aksincha<br \/>\ndigitalWrite(13, HIGH); \/\/ qo&#8217;yib yuborilganda svetodiodni o&#8217;chiramiz<br \/>\n}<br \/>\n}<\/div><\/div>\n<p style=\"text-align: justify;\">Yuqoridagi sketchlardan <strong>raqamli chiqishga ega bo&#8217;lgan<\/strong> va HIGH hamda LOW signallarini chiqarishga mo&#8217;ljallangan quyidagi <strong>oddiy raqamli datchiklar qiymatlarini o&#8217;chashda ham foydalanish mumkin<\/strong>:<\/p>\n<ul>\n<li style=\"text-align: justify;\"><strong>ttp223<\/strong> sensorli tugmasi;<\/li>\n<li style=\"text-align: justify;\"><strong>SW-420<\/strong> vibratsiya datchigi;<\/li>\n<li style=\"text-align: justify;\">taxodatchik;<\/li>\n<li style=\"text-align: justify;\">og&#8217;ish datchigi;<\/li>\n<li style=\"text-align: justify;\">xoll datchigi;<\/li>\n<li style=\"text-align: justify;\">turli xil gazlarni aniqlovchi datchiklar va hokazo.<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><em><strong>\u00a0(material to&#8217;ldirish jarayonida)<\/strong><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nazariy darsda oddiy raqamli datchiklar bilan ishlash bo&#8217;yicha qisqacha ma&#8217;lumotlar berilgan. Biz quyida shunday datchiklar bilan ishlashni namunaviy sketchlar yordamida ko&#8217;rib chiqamiz. 1-misol. Misol tariqasida Arduino IDE ning &#8220;\u041f\u0440\u0438\u043c\u0435\u0440\u044b\/02. Digital&#8221; menyusidagi &#8220;Button&#8221; sketchidan foydalanamiz. Bunda, Arduino platasi raqamli piniga ulangan tugma raqamli datchik vazifasini bajaradi. Tugmaning bitta kontaktini Arduino UNOning 5-piniga, 2-chisini GND piniga ulaymiz. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-1985","post","type-post","status-publish","format-standard","hentry","category-namunaviy-sketchlar"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/1985","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1985"}],"version-history":[{"count":51,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/1985\/revisions"}],"predecessor-version":[{"id":4233,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/1985\/revisions\/4233"}],"wp:attachment":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}