{"id":1809,"date":"2024-02-25T15:32:31","date_gmt":"2024-02-25T10:32:31","guid":{"rendered":"https:\/\/yarat.uz\/?p=1809"},"modified":"2025-03-19T15:27:04","modified_gmt":"2025-03-19T10:27:04","slug":"vaqt-relesi-14","status":"publish","type":"post","link":"https:\/\/yarat.uz\/?p=1809","title":{"rendered":"&#8220;Vaqt relesi&#8221; o&#8217;quv loyihasi [14+]"},"content":{"rendered":"<p style=\"text-align: justify;\">&#8220;Blink&#8221; sketchni takomillashtirib, unig asosida tashqi yuklamani (masalan, chiroqni, rozetkani) ishga tushirib, bir necha sekund, daqiqa yoki soatdan keyin uni yana o&#8217;chiradigan qurilma &#8211; <strong>vaqt relesi<\/strong>ni yaratish mumkin. Buning uchun <em>&#8220;pauza&#8221;<\/em> o&#8217;zgaruvchisining (&#8220;delay()&#8221; funksiyasining argumenti) qiymatini kattaroq qiymatdagi sonlar bilan almashtirish zarur.<\/p>\n<p style=\"text-align: justify;\">Biroq bunda, agar o&#8217;zgaruvchining qiymati <strong><em>32767<\/em><\/strong> dan oshib ketsa, dastur noto&#8217;g&#8217;ri ishlashni boshlaydi. Chunki, &#8220;Blink&#8221; sketchi bo&#8217;yicha misollarda foydalanilgan <em>&#8220;pauza&#8221;<\/em> o&#8217;zgaruvchisining qiymat turini <strong><em>int<\/em><\/strong> sifatida belgilaganmiz, demak uning qiymat qabul qilish sohasi -32767 &#8230; 32767 oralig&#8217;ida bo&#8217;lishi mumkin xolos. Bu esa, atigi 32.767 sekundni tashki qiladi. Qiymat turi <strong><em>unsigned int<\/em><\/strong> bo&#8217;lganda ham, uning maksimal qiymati 65535 (65.535 sekund) dan ortmaydi. Demak, vaqt relesi uchun &#8220;delay()&#8221; funksiyasi argumenti uchun <em><strong>int, unsigned int<\/strong><\/em> kabi qiymat turlari to&#8217;g&#8217;ri kelmaydi.<\/p>\n<p style=\"text-align: justify;\">Shuning uchun, o&#8217;zgaruvchining qiymat turi sifatida <strong><em>long<\/em><\/strong> (yoki <strong><em>unsigned long<\/em><\/strong>) ni tanlash maqsadga muvofiq bo&#8217;ladi. <strong><em>long<\/em><\/strong> qiymat turining o&#8217;zgarish sohasi -2 147 483 648 \u2026 2 147 483 647, vaqt birligi sifatida ifodalanganda (yaxlitlangan holda) ko&#8217;pi bilan: 2 147 483 647 millisekund = 2 147 483 sekund = 35 791 daqiqa = 596 soat = 24 kungacha ko&#8217;rsatilishi mumkin. <strong><em>unsigned long<\/em><\/strong> ni qiymat turiniki esa,\u00a04 294 967 295 millisekund = 4 294 967 sekund = 71 582 daqiqa = 1 193 soat = 49 kungacha ko&#8217;rsatilishi mumkin. Biroq, vaqt relesi ko&#8217;proq 1 sutkagacha bo&#8217;lgan vaqt uchun ishlatilishini hisobga olib, biz ham o&#8217;zgaruvchining qiymatini 1 sutka bilan cheklaymiz (1 sutka = 24 soat = 1 440 daqiqa = 86 400 sekund = 86 400 000 millisekund).<\/p>\n<p style=\"text-align: justify;\">Bundan tashqari, vaqt birligini qulayroq ifodalash uchun, uni soat, minut va sekundlarda ifodalaymiz. Shunga mos <em>&#8220;h&#8221;, &#8220;m&#8221;, &#8220;s&#8221;<\/em> o&#8217;zgaruvchilarini ham e&#8217;lon qilib olamiz. Ularning qiymati 32767 dan oshmasligini hisobga olib, barchasining qiymat turini <strong><em>int<\/em><\/strong> sifatida tanlashimiz mumkin.<\/p>\n<p style=\"text-align: justify;\">&#8220;delay()&#8221; funksiyasi argumenti faqat millisekundlarda ko&#8217;rsatilishini hisobga olib, uni\u00a0<em>unsigned long<\/em> qiymat turidagi\u00a0 <em>pauza <\/em>o&#8217;zgaruvchisi bilan belgilaymiz va soat, daqiqa va sekund birliklarida ko&#8217;rsatilgan o&#8217;zgaruvchilar qiymatlarini millisekundga o&#8217;tkazib olishimiz zarur.<br \/>\n1 sekund = 1000 millisekund;<br \/>\n1 daqiqa = 60 sekund = 60 * 1000 millisekund = 60 000 millisekund;<br \/>\n1 soat = 60 daqiqa = 60 * 60 000 millisekund = 3 600 000 millisekund;<br \/>\n1 sutka = 24 soat = 24 * 3 600 000 millisekund = 86 400 000 millisekund.<br \/>\nDemak, jami biz soat, daqiqa va sekundlarda belgilaydigan vaqt millisekundlarda quyidagiga bo&#8217;ladi:<\/p>\n<p><strong>pauza = h * 86 400 000 + m * 3 600 000 + s * 60 000;<\/strong><\/p>\n<p style=\"text-align: justify;\">Kerakli elektron komponentlar va ularning bog&#8217;lanish sxemasi &#8220;Blink&#8221; sketchining rele moduli uchun foydalanilgan jihozlar hamda bog&#8217;lanish sxemasi bilan bir xil bo&#8217;ladi. Yuklama faqat 1 marta ishga tushib, 1 marta o&#8217;chishini hisobga olsak, &#8220;loop()&#8221; funksiyasiga kod kiritish talab etilmaydi, ya&#8217;ni faqat &#8220;setup()&#8221; funksiyasiga kod kiritishimiz yetarli. Sketchimiz quyidagi ko&#8217;rinishga keladi:<\/p>\n<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>Vaqt relesi (long, unsigned long)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\nint pin = 13; \/\/pin raqami. ichki svetodiod raqami &#8211; 13 yoki LED_BUILTIN<br \/>\nlong pauza = 0; \/\/pauza dastlabki qiymati, millisekund<br \/>\nint h = 0; \/\/ rele vaqti, soat.<br \/>\nint m = 0; \/\/ rele vaqti, daqiqa<br \/>\nint s = 5; \/\/ rele vaqti, sekund<\/p>\n<p>void setup() {<br \/>\n\/\/ &#8220;pin&#8221; o&#8217;zgaruvchi pinni OUTPUT (signal chiqarish) rejimiga o&#8217;tkazamiz:<br \/>\npinMode(<strong>pin<\/strong>, OUTPUT);<br \/>\ndigitalWrite(<strong>pin<\/strong>, HIGH); \/\/ svetodiodni yoqamiz;<br \/>\n<strong>pauza<\/strong> = h * (60 * 60 * 1000) + m * (60 * 1000) + s * 1000;<br \/>\ndelay(<strong>pauza<\/strong>); \/\/ uzoq muddatli pauza o&#8217;rnatamiz<br \/>\ndigitalWrite(<strong>pin<\/strong>, LOW); \/\/ svetodiodni o&#8217;chiramiz;<br \/>\n}<\/p>\n<p>void loop() {<br \/>\n}<\/div><\/div>\n<p>Sketchning ArduBlock dasturidagi ko&#8217;rinishi:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1436 size-full aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/01\/ardublock_vaqt-relesi.jpg\" alt=\"\" width=\"1127\" height=\"710\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/01\/ardublock_vaqt-relesi.jpg 1127w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/01\/ardublock_vaqt-relesi-300x189.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/01\/ardublock_vaqt-relesi-1024x645.jpg 1024w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/01\/ardublock_vaqt-relesi-768x484.jpg 768w\" sizes=\"auto, (max-width: 1127px) 100vw, 1127px\" \/><\/p>\n<p style=\"text-align: justify;\">Agar rele vaqti 18 soatdan oshmasa (<em>&#8220;pauza&#8221;<\/em> o&#8217;zgaruvchisining qiymati 65535 sekunddan oshmasa), sketchni o&#8217;zgaruvchilarning qiymat turlari<strong><em> unsigned int<\/em><\/strong> bo&#8217;lgan holatga yoki rele vaqti 9 soatdan oshmasa, o&#8217;zgaruvchilarning qiymat turlari <strong><em>int<\/em><\/strong> bo&#8217;lgan holatga ham keltirish mumkin. Buning uchun <em>pauza<\/em> o&#8217;zgaruvchisini sekundlarda ifodalab, &#8220;delay()&#8221; funksiyasining argumentini esa, uning 1000 ga ko&#8217;paytirilgan holatiga keltiriladi:<\/p>\n<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>Vaqt relesi (int, unsigned int)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n<p>int pin = 13; \/\/pin raqami. ichki svetodiod raqami &#8211; 13 yoki LED_BUILTIN<br \/>\nunsigned int pauza = 0; \/\/pauza dastlabki qiymati, sekund. 65535 sekunddan oshmaydi.<br \/>\n\/\/int pauza = 0; \/\/pauza dastlabki qiymati, sekund. 32767<br \/>\nint h = 0; \/\/ rele vaqti, soat<br \/>\nint m = 0; \/\/ rele vaqti, daqiqa<br \/>\nint s = 5; \/\/ rele vaqti, sekund<\/p>\n<p>void setup() {<br \/>\n\/\/ &#8220;pin&#8221; o&#8217;zgaruvchi pinni OUTPUT (signal chiqarish) rejimiga o&#8217;tkazamiz:<br \/>\npinMode(<strong>pin<\/strong>, OUTPUT);<br \/>\ndigitalWrite(<strong>pin<\/strong>, HIGH); \/\/ svetodiodni yoqamiz;<br \/>\n<strong>pauza<\/strong> = h * (60 * 60) + m * 60 + s;<br \/>\ndelay(<strong>pauza * 1000<\/strong>); \/\/ uzoq muddatli pauza o&#8217;rnatamiz<br \/>\ndigitalWrite(<strong>pin<\/strong>, LOW); \/\/ svetodiodni o&#8217;chiramiz;<br \/>\n}<\/p>\n<p>void loop() {<br \/>\n}<\/div><\/div>\n<p>Sketchning ArduBlock dasturidagi ko&#8217;rinishi:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1437 size-full aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/01\/ardublock_vaqt-relesi2.jpg\" alt=\"\" width=\"985\" height=\"420\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/01\/ardublock_vaqt-relesi2.jpg 985w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/01\/ardublock_vaqt-relesi2-300x128.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/01\/ardublock_vaqt-relesi2-768x327.jpg 768w\" sizes=\"auto, (max-width: 985px) 100vw, 985px\" \/><\/p>\n<p style=\"text-align: center;\"><em>Mustahkamlash uchun mashqlar <\/em><em>(o&#8217;quv kurslari davomida bajariladi):<\/em><\/p>\n<p style=\"text-align: justify;\"><em>1) <\/em><em>Vaqt relesi sketchidan soat birligini chiqarib tashlab, faqat daqiqa va sekundlarda boshqarishga moslashtiring.<br \/>\n2) Vaqt relesi sketchidan soat va daqiqa birliklarini chiqarib tashlab, faqat sekundlarda boshqarishga moslashtiring.<br \/>\n3) Vaqt relesi sketchini pauza o&#8217;zgaruvchisining qiymati int, unsigned int va long bo&#8217;lgan holatlar uchun o&#8217;zgartirilsa, relening maksimal ishlash vaqti qanchaga teng bo&#8217;ladi? (soat, daqiqa, sekundlarda ifodalang)<br \/>\n4) Vaqt relesi sxemasiga rele modulini ham qo&#8217;shib, uni tashqi yuklamani yoqib-o&#8217;chirishga moslashtiring.<br \/>\n<\/em><em>5) Barcha topshiriqlarni &#8216;Wemos D1 mini&#8217; platasi uchun bajaring.<br \/>\n<\/em><em>6) Yuqoridagi topshiriqlarni ArduBlock dasturida bajarishni mashq qiling.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;Blink&#8221; sketchni takomillashtirib, unig asosida tashqi yuklamani (masalan, chiroqni, rozetkani) ishga tushirib, bir necha sekund, daqiqa yoki soatdan keyin uni yana o&#8217;chiradigan qurilma &#8211; vaqt relesini yaratish mumkin. Buning uchun &#8220;pauza&#8221; o&#8217;zgaruvchisining (&#8220;delay()&#8221; funksiyasining argumenti) qiymatini kattaroq qiymatdagi sonlar bilan almashtirish zarur. Biroq bunda, agar o&#8217;zgaruvchining qiymati 32767 dan oshib ketsa, dastur noto&#8217;g&#8217;ri ishlashni boshlaydi. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-1809","post","type-post","status-publish","format-standard","hentry","category-2other"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/1809","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=1809"}],"version-history":[{"count":9,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/1809\/revisions"}],"predecessor-version":[{"id":1821,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/1809\/revisions\/1821"}],"wp:attachment":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1809"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1809"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1809"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}