{"id":1952,"date":"2024-02-29T21:37:07","date_gmt":"2024-02-29T16:37:07","guid":{"rendered":"https:\/\/yarat.uz\/?p=1952"},"modified":"2025-03-19T15:27:04","modified_gmt":"2025-03-19T10:27:04","slug":"mit-app-inventor","status":"publish","type":"post","link":"https:\/\/yarat.uz\/?p=1952","title":{"rendered":"Mobil ilova yordamida boshqaruv [18+]"},"content":{"rendered":"<p style=\"text-align: justify;\">Navbatdagi bo&#8217;limda MIT App Inventor onlayn blokli dasturlash vositasi va u bilan ishlashning asoslari haqida qisqacha ma&#8217;lumotlar keltiriladi.<\/p>\n<p style=\"text-align: center;\"><strong>MIT App Inventor blokli dasturlash vositasi<\/strong><\/p>\n<p style=\"text-align: justify;\">Ushbu dasturlash vositasi faqat onlayn rejimda visual dasturlashga mo&#8217;ljallangan bo&#8217;lib, Android uchun dasturlarni dasturlash ushun alohida dasturlash tilini o&#8217;rganishni talab etmaydi va faqat bloklar yordamida dasturlashga yo&#8217;naltirilgan (Qulaylik uchun, darslar davomida <strong>MIT AI<\/strong> deb ham yuritamiz). Ushbu vosita bilan ishlash uchun foydalanuvchidan Google akkauntiga ega bo&#8217;lishi talab etiladi (smartfonda ishlatilayotgan akkauntdan foydalanish mumkin).<\/p>\n<p style=\"text-align: justify;\">MIT AI ni ochish uchun ixtiyoriy brauzerda quyidagi havolaga o&#8217;tiladi: <a href=\"https:\/\/ai2.appinventor.mit.edu\/\" target=\"_blank\" rel=\"noopener\">havola<\/a>. Brauzer asosiy oynasida quyidagi sahifa ochiladi:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1941 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai-1.jpg\" alt=\"\" width=\"1280\" height=\"882\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai-1.jpg 1280w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai-1-300x207.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai-1-1024x706.jpg 1024w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai-1-768x529.jpg 768w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p style=\"text-align: justify;\">Akkauntga tez o&#8217;tish uchun &#8220;Create Apps!&#8221; tugmasi bosiladi va keyingi sahifada Google akkaunti ma&#8217;lumotlari (login, parol) kiritiladi. Ber nechta yordamchi dialog oynalari o&#8217;tkazib yuborilganidan so&#8217;ng, oynada quyidagi asosiy sahifa paydo bo&#8217;ladi. MIT AI ga birinchi marta kirilganda, tabiiyki, ro&#8217;yxat bo&#8217;sh bo&#8217;ladi. Bundan tashqari, akkauntga birinchi marta kirilganda, dastur ma&#8217;lumotlari ingliz tilida ko&#8217;rsatiladi, foydalanuvchi o&#8217;ziga kerakli tilni sahifaning yuqori o&#8217;ng tomonidagi menyudan tanlab olishi tavsiya etiladi. Biz dasturning rus tilidagi variantidan foydalanamiz.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1942 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai2-1.jpg\" alt=\"\" width=\"1280\" height=\"265\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai2-1.jpg 1280w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai2-1-300x62.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai2-1-1024x212.jpg 1024w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai2-1-768x159.jpg 768w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p style=\"text-align: justify;\">Agar foydalanuvchi ilgari loyihalar yaratgan bo&#8217;lsa, ro&#8217;yxatda akkauntda saqlangan barcha loyihalarning ro&#8217;yxati ko&#8217;rinadi. Bu yerdan yangi loyihani yaratish, kerakli loyihaga o&#8217;tish va keraksizlarini o&#8217;chirib yuborish kabi asosiy vazifalarni bajarish mumkin. Keyinchalik ushbu ro&#8217;yxatga &#8220;\u041f\u0440\u043e\u0435\u043a\u0442\u044b&#8221; menyusi orqali o&#8217;tish mumkin (axborot havfsizligi nuqtai nazaridan, brauzer uzoq vaqt harakatsizlikdan so&#8217;ng, akkauntdan avtomatik chiqib ketishi va unga qaytadan kirishni so&#8217;rashi mumkin).<\/p>\n<p>Kerakli loyiha tanlansa, loyihaning quyidagi asosiy oynasi &#8211; &#8220;<strong>\u0414\u0438\u0437\u0430\u0439\u043d\u0435\u0440<\/strong>&#8221; oynasi ochiladi.<\/p>\n<p style=\"text-align: justify;\">Ushbu oynaning o&#8217;rta qismida loyihaning smartfondagi taxminiy ko&#8217;rinishi va unga joylashtirilgan visual dasturlash elementlari (matnlar, tugmalar, kalitlar, ro&#8217;yxatlar, rasmlar va hokazolar) ko&#8217;rsatiladi. Oynaning chap tomonida loyihada foydalanish mumkin bo&#8217;lgan barcha elementlar ro&#8217;yxati, o&#8217;ng tomonida esa, joriy loyihada foydalanilayotgan elementlar ro&#8217;yxati va ularning xususiyatlarini ko&#8217;rsatuvchi bo&#8217;limlar ko&#8217;rinadi.<\/p>\n<p style=\"text-align: justify;\">Yangi elementni loyihaga qo&#8217;shish uchun, uni chap tomondagi ro&#8217;yxatdan izlab topiladi va sichqoncha yordamida smartfon oynasining tegishli joyiga olib o&#8217;tiladi. Loyihadagi biron elementning xususiyatlarini ko&#8217;rish yoki o&#8217;zgartirish uchun, uning nomi smartfon oynasining o&#8217;ng tomonidagi elementlar ro&#8217;yxatidan tanlanadi.<\/p>\n<p style=\"text-align: justify;\">Foydalaniladigan elementlar ko&#8217;rinadigan va ko&#8217;rinmaydigan element turlariga bo&#8217;linadi. Masalan, yuqorida sanalgan barcha elementlar ko&#8217;rinadigan element turi hisoblanadi. Ko&#8217;rinmaydigan element turiga esa, turli xil aloqa vositalariga tegishli elementlar (Bluetooth, Internet, Ketma-ket port), xotira bilan ishlash vositalari (masalan, loyihada qo&#8217;llaniladigan fayllar ro&#8217;yxati, mobil ilova parametrlarini saqlovchi vositalar) va shunga o&#8217;xshash, visual ko&#8217;rish mumkin bo&#8217;lmagan vositalar kiradi.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1923 size-full aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai.jpg\" alt=\"\" width=\"1217\" height=\"883\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai.jpg 1217w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai-300x218.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai-1024x743.jpg 1024w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai-768x557.jpg 768w\" sizes=\"auto, (max-width: 1217px) 100vw, 1217px\" \/><\/p>\n<p style=\"text-align: justify;\">Chap tomondagi elementlar ro&#8217;yxatiga foydalanuvchi ham boshqa tashqi tayyor elementlarni Internetdan (masalan, <a href=\"https:\/\/puravidaapps.com\/extensions.php\">puravidaapps.com<\/a> saytidan) yuklab olishi va uning &#8220;aix&#8221; formatdagi faylini ro&#8217;yxat oxiridagi &#8220;Extension&#8221; bo&#8217;limiga <em>&#8220;Import extension&#8221;<\/em> havolasi orqali qo&#8217;shib olishi mumkin.<br \/>\nLoyihaning har bir elementi bajaradigan vazifalarni boshqaruvchi bloklar bilan ishlash uchun loyiha oynasining yuqori o&#8217;ng tomonidan &#8220;\u0411\u043b\u043e\u043a\u0438&#8221; bo&#8217;limiga o&#8217;tiladi. Ushbu oynada har bir ko&#8217;rinadigan yoki ko&#8217;rinmaydigan element faollashganda bajariladigan vazifalarga mos bloklarni oynaning asosiy qismiga sichqoncha yordamida olib o&#8217;tiladi va dasturiy algoritm asosida joylashtiriladi.<\/p>\n<p style=\"text-align: justify;\">Agar ko&#8217;p ekranli loyiha yaratilishi ko&#8217;zda tulgan bo&#8217;lsa, oyna yuqorisadagi &#8220;\u0414\u043e\u0431\u0430\u0432\u0430\u0442\u044c \u044d\u043a\u0440\u0430\u043d&#8221; tugmasi yordamida yangi ekran hosil qilish va uning xususiyatlarini o&#8217;zgartirish mumkin. Barcha ekranlar nomlarini ushbu tugmaning chap tomonidagi ro&#8217;yxatdan ko&#8217;rish va tanlash mumkin. Bundan tashqari, &#8220;\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u043a\u0440\u0430\u043d&#8221; tugmasi yordamida keraksiz (Screen1 dan tashqari) ekranni o&#8217;chirish, &#8220;Project properties&#8221; tugmasi yordamida esa, loyihaning boshqa muhim xususiyatlarini (masalan, ilova nomi, uning ikonkasi fayli, versiyasi kabilarni) ko&#8217;rish yoki o&#8217;zgartirish mumkin.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1922 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai2.jpg\" alt=\"\" width=\"1232\" height=\"878\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai2.jpg 1232w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai2-300x214.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai2-1024x730.jpg 1024w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai2-768x547.jpg 768w\" sizes=\"auto, (max-width: 1232px) 100vw, 1232px\" \/><\/p>\n<p style=\"text-align: justify;\">Dastlabki misol tariqasida, biz yangi &#8220;misol&#8221; loyihasini va uning asosida tegishli &#8220;Mening ilovam&#8221; mobil ilovasini yaratish, oxirida uni smartfonga olib o&#8217;tish, unga o&#8217;rnatish jarayonlarini ko&#8217;rib chiqamiz. Buning uchun tegishli akkauntga kirgandan so&#8217;ng, asosiy oynada (loyihalar ro&#8217;yxatida) &#8220;New project&#8221; tugmasini bosamiz.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1945 aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai-new-project-300x140.jpg\" alt=\"\" width=\"300\" height=\"140\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai-new-project-300x140.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/mit_ai-new-project.jpg 367w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p style=\"text-align: justify;\">Loyiha nomini ko&#8217;rsatib, &#8220;OK&#8221; ni bosamiz. Yangi loyiha oynasi paydo bo&#8217;lgach, o&#8217;ng tomondagi komponentlar ro&#8217;yxatida Screen1 komponenti paydo bo&#8217;ladi. O&#8217;ng tomondagi &#8220;\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430&#8221; bo&#8217;limida uning ayrim xususiyatlarini o&#8217;zgartiramiz. Bunimg uchun kerakli maydonlar qiymatini o&#8217;zgartiramiz. Masalan, &#8220;\u0424\u043e\u043d\u043e\u0432\u044b\u0439\u0420\u0438\u0441\u0443\u043d\u043e\u043a&#8221; maydoniga kompyuterdan ixtiyoriy rasm faylini tanlaymiz, &#8220;\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a&#8221; maydoniga misol tariqasida ilova sarlavhasini (masalan, &#8220;Mening birinchi ilovam!&#8221; matnini) kiritamiz. Boshqa maydonlarni o&#8217;zgartirmaymiz. Tanlangan rasm fayli nomi komponentlar ro&#8217;yxati quyirog&#8217;idagi &#8220;\u041c\u0435\u0434\u0438\u0430&#8221; ro&#8217;yxatida ham ko&#8217;rinadi.<\/p>\n<p style=\"text-align: justify;\">Chap tomondagi komponentlar ro&#8217;yxatidan &#8220;\u041d\u0430\u0434\u043f\u0438\u0441\u044c&#8221;, &#8220;\u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f&#8221;, &#8220;\u041a\u043d\u043e\u043f\u043a\u0430&#8221; va &#8220;\u0423\u0432\u0435\u0434\u043e\u043c\u0438\u0442\u0435\u043b\u044c&#8221; komponentlarini ketma-ket ekrandagi smartfon oynasiga joylashtiramiz. O&#8217;ng tomondagi loyiha komponentlari ro&#8217;yxatida &#8220;\u041d\u0430\u0434\u043f\u0438\u0441\u044c1&#8221;, &#8220;\u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u044f1&#8221;, &#8220;\u041a\u043d\u043e\u043f\u043a\u04301&#8221;, &#8220;\u0423\u0432\u0435\u0434\u043e\u043c\u0438\u0442\u0435\u043b\u044c1&#8221; komponentlari paydo bo&#8217;ladi. &#8220;\u0423\u0432\u0435\u0434\u043e\u043c\u0438\u0442\u0435\u043b\u044c1&#8221; komponenti smartfondan quyiroqdagi &#8220;\u041d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b&#8221; sohasida ham paydo po&#8217;ladi.<\/p>\n<p style=\"text-align: justify;\">Dastlab komponentlar ro&#8217;yxatidan sichqoncha yordamida &#8220;\u041d\u0430\u0434\u043f\u0438\u0441\u044c1&#8221; komponentini tanlaymiz va o&#8217;ng tomondagi &#8220;\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430&#8221; bo&#8217;limida &#8220;\u0428\u0438\u0440\u0438\u043d\u0430&#8221; maydonidan &#8220;\u041d\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439&#8221; variantini tanlaymiz, &#8220;\u0422\u0435\u043a\u0441\u0442&#8221; maydoniga &#8220;Kerakli yozuvni tanlang!&#8221; matnini kiratiz, &#8220;\u0426\u0432\u0435\u0442\u0422\u0435\u043a\u0441\u0442\u0430&#8221; maydonidan ixtiyoriy rangni tanlaymiz.<\/p>\n<p style=\"text-align: justify;\">Komponentlar ro&#8217;yxatidan &#8220;\u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u044f1&#8243;ni tanlaymiz va uning quyidagi xususiyatlarini o&#8217;zgartiramiz: &#8220;\u0428\u0438\u0440\u0438\u043d\u0430&#8221; maydonidan &#8220;\u041d\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439&#8221; variantini tanlaymiz, &#8220;\u041f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430&#8221; maydoniga &#8220;Yozuvni tanlang&#8221; matnini, &#8220;\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b\u0418\u0437\u0426\u0435\u043f\u043e\u0447\u043a\u0438&#8221; maydoniga &#8220;1-yozuv,2-yozuv,3-yozuv&#8221; matnini (vergul bilan ajratilgan matnlar ro&#8217;yxati), &#8220;\u0412\u044b\u0431\u043e\u0440&#8221; maydoniga &#8220;2-yozuv&#8221; (ro&#8217;yxatdagi elementlardan biri bo&#8217;lishi shart) matnini kiritamiz.<\/p>\n<p style=\"text-align: justify;\">&#8220;\u041a\u043d\u043e\u043f\u043a\u04301&#8221; xususiyatlarini o&#8217;zgartiramiz: &#8220;\u0416\u0438\u0440\u043d\u044b\u0439\u0428\u0440\u0438\u0444\u0442&#8221; kalitini ulaymiz, &#8220;\u0420\u0430\u0437\u043c\u0435\u0440\u0428\u0440\u0438\u0444\u0442\u0430&#8221; maydoniga &#8220;20&#8221; qiymatini kiritamiz, &#8220;\u0428\u0438\u0440\u0438\u043d\u0430&#8221; maydonida &#8220;100&#8221; pixels&#8221; variantini, &#8220;\u0424\u043e\u0440\u043c\u0430&#8221; bo&#8217;limidan &#8220;\u041e\u0432\u0430\u043b&#8221; variantini tanlaymiz, &#8220;\u0422\u0435\u043a\u0441\u0442&#8221; maydoniga &#8220;OK&#8221; matnini kiritamiz, &#8220;\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430&#8221; bo&#8217;limidan ixtiyoriy rangni tanlaymiz.<\/p>\n<p style=\"text-align: justify;\">&#8220;\u0423\u0432\u0435\u0434\u043e\u043c\u0438\u0442\u0435\u043b\u044c1&#8221; xususiyatlarini o&#8217;zgartirish shart emas.<\/p>\n<p style=\"text-align: justify;\">Natijada, asosiy oynada taxminan quyidagi holat yuzaga kelishi kerak:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1946 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app1.jpg\" alt=\"\" width=\"1280\" height=\"873\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app1.jpg 1280w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app1-300x205.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app1-1024x698.jpg 1024w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app1-768x524.jpg 768w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p style=\"text-align: justify;\">Endi &#8220;\u0411\u043b\u043e\u043a\u0438&#8221; oynasiga o&#8217;tib, &#8220;\u041a\u043d\u043e\u043f\u043a\u04301&#8221; tugmasi bosilganda bajariladigan jarayonni bloklar yordamida dasturlaymiz.<\/p>\n<p style=\"text-align: justify;\">Buning uchun dastlab, chap tomondagi komponentlar ro&#8217;yxatidan &#8220;\u041a\u043d\u043e\u043f\u043a\u04301&#8221; komponentini sichqoncha yordamida tanlaymiz (uning nomi ustiga bir marta bosamiz xolos). Komponentlar ro&#8217;yxatining o&#8217;ng tomonida &#8220;\u041a\u043d\u043e\u043f\u043a\u04301&#8221; komponenti bilan qo&#8217;llash mumkin bo&#8217;lgan bloklar ro&#8217;yxati ko&#8217;rinadi. Ro&#8217;yxatdan &#8220;\u043a\u043e\u0433\u0434\u0430 &#8220;\u041a\u043d\u043e\u043f\u043a\u04301.\u0429\u0435\u043b\u0447\u043e\u043a&#8221; yozuvlarini (sarlavhasini) o&#8217;z ichiga olgan sariq rangli (1-tartibdagi) blokni sichqoncha yordamida asosiy oynaga olib o&#8217;tamiz.<\/p>\n<p style=\"text-align: justify;\">Shundan keyin &#8220;\u0423\u0432\u0435\u0434\u043e\u043c\u0438\u0442\u0435\u043b\u044c1&#8221; komponentini tanlaymiz va paydo bo&#8217;lgan ro&#8217;yxatdan &#8220;\u0412\u044b\u0437\u043e\u0432 &#8220;\u0423\u0432\u0435\u0434\u043e\u043c\u0438\u0442\u0435\u043b\u044c1.\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0414\u0438\u0430\u043b\u043e\u0433\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f&#8221; sarlavhali blokni asosiy oynadagi blokning &#8220;\u0434\u0435\u043b\u0430\u0442\u044c&#8221; sohasiga joylashtiramiz. Ushbu blokning o&#8217;ng tomonidagi bo&#8217;sh &#8220;\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435&#8221;, &#8220;\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a&#8221;, &#8220;\u0442\u0435\u043a\u0441\u0442\u041a\u043d\u043e\u043f\u043a\u0438&#8221; maydonlariga mos ravishda quyidagi 3 ta komponentni ketma-ket joylashtiramiz: &#8220;\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435&#8221; maydoniga &#8220;\u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u044f1&#8221; komponentining &#8220;\u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u044f1.\u0412\u044b\u0431\u043e\u0440&#8221; bloki, &#8220;\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a&#8221; va &#8220;\u0442\u0435\u043a\u0441\u0442\u041a\u043d\u043e\u043f\u043a\u0438&#8221; maydonlariga (qizil fondagi) &#8220;\u0422\u0435\u043a\u0441\u0442&#8221; komponentining dastlabki (argumentsiz) blokini. &#8220;\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a&#8221; maydonidagi blok argumentiga &#8220;Siz tanlagan yozuv:&#8221; matnini, &#8220;\u0442\u0435\u043a\u0441\u0442\u041a\u043d\u043e\u043f\u043a\u0438&#8221; maydonidagi blok argumentiga esa, &#8220;Chiqish&#8221; matnini kiritamiz. Natijada quyidagi holat yuzaga kelishi kerak:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1947 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2.jpg\" alt=\"\" width=\"1058\" height=\"523\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2.jpg 1058w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2-300x148.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2-1024x506.jpg 1024w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2-768x380.jpg 768w\" sizes=\"auto, (max-width: 1058px) 100vw, 1058px\" \/><\/p>\n<p style=\"text-align: justify;\">Agar hammasi to&#8217;g&#8217;ri bajarilgan bo&#8217;lsa, blokli dasturimizni kompilyatsiya qilish va uni apk formatli faylga sqalsh qoldi xolos. Buning uchun MIT AI ning &#8220;\u041f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c&#8221; menyusidan &#8220;Android app (.apk)&#8221; elementini tanlaymiz. Taxminan 20-30 sekund ichida apk formatli fayl tayyor ekanligi bildiruvchi quyidagi kabi oyna paydo bo&#8217;ladi:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1948 size-full aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app3.png\" alt=\"\" width=\"473\" height=\"349\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app3.png 473w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app3-300x221.png 300w\" sizes=\"auto, (max-width: 473px) 100vw, 473px\" \/><\/p>\n<p style=\"text-align: justify;\">Faylni kompyuterga yuklab olish uchun chap tomondagi &#8220;Download .apk now&#8221; tugmasini bosishimiz mumkin. Bundan tashqari, ushbu oynaning o&#8217;ng tomonida ko&#8217;rsatilgan QR-kod yordamida misol ilovani to&#8217;g&#8217;ridan-to&#8217;g&#8217;ri smartfonimizga yuklab olishimiz mumkin. Buning uchun smartfondagi ixtiyoriy QR-kodni skanerlash dasturi yordamida uni skanerlash va ko&#8217;rsatilgan havolani ochish mumkin bo&#8217;ladi. Fayl PlayMarket internet-do&#8217;konidan yuklanmaganligi sababli, aksariyat smartfonlar fayl xavfli bo&#8217;lishi mumkinligidan ogohlantiradi. Bundan tashqari, uni o&#8217;rnatish davomida ham shunga o&#8217;xshash ogohlantirish ko&#8217;rsatilishi mumkin. Biroq biz yaratgan ilova xavfsiz bo&#8217;lganligi uchun, uni bemalol yuklab olishimiz va o&#8217;rnatihimiz mumkin.<\/p>\n<p style=\"text-align: justify;\">Ilova dasturi tog&#8217;ri yaratilgan bo&#8217;lsa, uni smartfonda ishga tushirilganidan so&#8217;ng tegishli ro&#8217;yxatdan biron yozuvni tanlab, &#8220;OK&#8221; tugmasi bosilganda tanlangan yozuvimiz matni eslatma ko&#8217;rinishida yana bir bor tasdiqlanishi, &#8220;Chiqish&#8221; tugmasi bosilganda esa, eslatma g&#8217;oyib bo&#8217;lishi kerak.<\/p>\n<p style=\"text-align: justify;\">Yaratilgan dastlabki ilovamiz Arduino qurilmasini boshqarishga hech qanday daxli bo&#8217;lmasa-da, keltirilgan dastlabki ma&#8217;lumotlar ayrim arduinochilarning MIT AI ni o&#8217;zlashtira boshlashlari uchun turtki bo&#8217;lishi mumkin.<\/p>\n<p style=\"text-align: justify;\">Navbatdagi misol esa, WiFi orqali boshqaruv bo&#8217;yicha <a href=\"https:\/\/yarat.uz\/?p=1650\">naminaviy loyihalarning<\/a> davomi hisoblanadi. Ma&#8217;lumki, mazkur misollarda mikrokontrollerni WiFi tarmoqdagi kompyuter, smartfon, planshet, smart-televizor va veb-brauzerga ega bo&#8217;lgan boshqa qurilmalardan boshqarishgacha bo&#8217;lgan bosqichlar ko&#8217;rib chiqilgan. Mikrokontrollerni mobil ilova yordamida boshqarish maksimal darajada tushunarli va oson bo&#8217;lishi uchun, biz oldingi misollarda yaratilgan, WiFi orqali veb-brauzer yordamida boshqarish qurilmasini saqlab qolamiz va yaratadigan mobil ilovamizni ham aynan shu qurilmani boshqarishga moslashtiramiz. Demak, yaratadigan ilovamiz ham mavjud qurilma (http-server) uchun http-mijoz rolini bajaradi.<\/p>\n<p><strong>1-variant. Qurilmani ilovadagi ichki veb-brauzer yordamida boshqarish.<\/strong><\/p>\n<p style=\"text-align: justify;\">Ushbu variantda biz ilgari yaratilgan qurilmamizni mobil ilovaning <strong>&#8220;Web\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0449\u0438\u043a&#8221;<\/strong> komponentidan foydalanib yaratamiz. Chunki, &#8220;Web\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0449\u0438\u043a&#8221; elementi har qanday veb-brauzerni yaratish uchun zarur bo&#8217;lgan imkoniyatlarga ega va mobil ilova ichida oddiy ichki veb-brauzerni hosil qilishga yordam beradi. Demak, ushbu usulda qurilmani boshqarishda foydalanilgan va mikrokontrollerda ilgari yaratilgan veb-sahifamizni o&#8217;zimiz hosil qilgan ichki brauzer yordamida boshqaramiz. Shuning uchun ham sketchda http-server bilan bog&#8217;liq qanday o&#8217;zgarish bo&#8217;lishidan qat&#8217;iy nazar, ilovaning boshqa qismlarini o&#8217;zgartirishga to&#8217;g&#8217;ri kelmaydi. http-so&#8217;rovlar ham mikrokontrollerda yaratilgan veb-sahifadan yuboriladi. Yana bir qulayligi, smartfon bilan qurilma orasida teskari aloqa ham o&#8217;rnatiladi (masalan, ichki svetodiod real holatini ilovada ham nazorat qilish mumkin). Qo&#8217;pol qilib aytganda, biz shunchaki mikrokontrollerni boshqarish uchun ilgari yaratgan veb-sahifamizni mobil ilovaning ichiga ko&#8217;chirib olib o&#8217;tamiz xolos!<\/p>\n<p style=\"text-align: justify;\">Buning uchun MIT AI da yangi &#8220;browser_control&#8221; nomli loyiha yaratamiz. &#8220;Project properties&#8221; tugmasi yordamida, yaratiladigan ilovamizga &#8220;WiFi rele&#8221; kabi tushunarli nom qo&#8217;yamiz. Loyiha oynasi ochilgach, smartfon sohasiga quyidagi 3 ta (&#8220;\u041d\u0430\u0434\u043f\u0438\u0441\u044c&#8221;, &#8220;\u0422\u0435\u043a\u0441\u0442&#8221;, &#8220;Web\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0449\u0438\u043a&#8221; turidagi) komponentlarni ko&#8217;rsatilgan tartibda joylashtiramiz (qulaylik uchun komponentlar soni imkon qadar minimallashtirilgan):<\/p>\n<p style=\"text-align: justify;\">&#8220;\u0412\u044b\u0441\u043e\u0442\u0430&#8221; va &#8220;\u0428\u0438\u0440\u0438\u043d\u0430&#8221; maydonlarida &#8220;\u041d\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439&#8221; variantini tanlaymiz. &#8220;\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430&#8221; maydonini bo&#8217;sh qoldirishimiz yoki ungf bironta IP-manzilni oldindan kiritib qo&#8217;yishimiz mumkin. Ilova ishga tushganan dastlab ko&#8217;rsatilgan IP-manzil ilovaning ekranidagi veb-brauzerda ochiladi.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2141 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_01.jpg\" alt=\"\" width=\"1232\" height=\"794\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_01.jpg 1232w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_01-300x193.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_01-1024x660.jpg 1024w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_01-768x495.jpg 768w\" sizes=\"auto, (max-width: 1232px) 100vw, 1232px\" \/><\/p>\n<p style=\"text-align: justify;\">&#8220;\u0411\u043b\u043e\u043a\u0438&#8221; bo&#8217;limiga o&#8217;tamiz va ekranning chap tomonidagi komponentlarni tanlash orqali ularga tegishli bloklarni asosiy oynaga olib o&#8217;tamiz va quyidagi rasmda ko&#8217;rsatilgan algoritm bo&#8217;yicha va tartibda joylashtiramiz:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2140 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_02.jpg\" alt=\"\" width=\"958\" height=\"178\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_02.jpg 958w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_02-300x56.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_02-768x143.jpg 768w\" sizes=\"auto, (max-width: 958px) 100vw, 958px\" \/><\/p>\n<p style=\"text-align: justify;\">Mobil ilova ishga tushirilib, &#8220;\u0422\u0435\u043a\u0441\u0442&#8221; maydoniga mikrokontroller IP-manzili kiritilsa, ichki brauzerda mikrokontrollerda yaratilgan veb-sahifa ko&#8217;rinadi va undagi giperhavolalar yordamida qurilmani boshqarish mumkin bo&#8217;ladi.<\/p>\n<p><strong>2-variant. Qurilmani veb-brauzersiz (ilovaning boshqa komponentlari yordamida) boshqarish.<\/strong><\/p>\n<p style=\"text-align: justify;\">Ushbu variantda qurilmani boshqarish uchun http-so&#8217;rovlar bevosita ilovaning o&#8217;zi tomonidan shakllantiriladi. Bunda, boshqaruv &#8220;Web\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0449\u0438\u043a&#8221; komponenti yordamida emas, <strong>&#8220;\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442&#8221;<\/strong> komponenti yordamida yuboriladigan http-so&#8217;rov orqali bajariladi. To&#8217;g&#8217;ridan-to&#8217;g&#8217;ri mikrokontrollerda yaratilgan veb-sahifa bilan ishlashga to&#8217;g&#8217;ri kelmaydi. Lekin, mikrokontroller bilan smartfon orasida teskari aloqa bo&#8217;lmaydi (smartfonda svetodiodning real holati ko&#8217;rinmaydi).<\/p>\n<p style=\"text-align: justify;\">MIT AI da yangi &#8220;WiFi_relay&#8221; nomli loyiha yaratamiz. &#8220;Project properties&#8221; tugmasi yordamida, yaratiladigan ilovamizga &#8220;WiFi rele&#8221; kabi tushunarli nom qo&#8217;yamiz. Loyiha oynasi ochilgach, smartfon sohasiga quyidagi 6 ta (&#8220;Switch&#8221;, &#8220;\u041a\u043d\u043e\u043f\u043a\u0430&#8221;, &#8220;\u041d\u0430\u0434\u043f\u0438\u0441\u044c&#8221;, &#8220;\u0422\u0435\u043a\u0441\u0442&#8221;, &#8220;\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442&#8221; turidagi) komponentlarni ko&#8217;rsatilgan tartibda joylashtiramiz (qulaylik uchun komponentlar soni imkon qadar minimallashtirilgan):<\/p>\n<p style=\"text-align: justify;\">1. &#8220;Switch1&#8221; nomli komponent &#8211; relening kontakti holatini ko&#8217;rsatib turish uchun.<br \/>\n2. &#8220;\u041a\u043d\u043e\u043f\u043a\u04301&#8221; va &#8220;\u041a\u043d\u043e\u043f\u043a\u04302&#8221; nomli komponentlar &#8211; releni ulash yoki uzish buyruqlarini veb-serverga yuborish uchun.<br \/>\n3. &#8220;\u041d\u0430\u0434\u043f\u0438\u0441\u044c1&#8221; nomli komponent &#8211; IP-manzil maydonini izohlash uchun.<br \/>\n4. &#8220;\u0422\u0435\u043a\u0441\u04421&#8221; nomli komponent &#8211; mikrokontroller IP-manzilini kiritish uchun.<br \/>\n5. &#8220;\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u04421&#8221; nomli komponent &#8211; http-so&#8217;rovni http-serverga yuborish uchun.<\/p>\n<p style=\"text-align: justify;\">&#8220;Screen&#8221; majburiy komponenti xususiyatlarida &#8220;\u0412\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c\u041f\u043e\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438&#8221; ro&#8217;yxatidan &#8220;\u0426\u0435\u043d\u0442\u0440: 3&#8221; variantini tanlaymiz, &#8220;\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a&#8221; maydoniga dasturimiz sarlavhasini (masalan, &#8220;WiFi orqali releni boshqarish dasturi&#8221; matnini) kiritamiz.<\/p>\n<p style=\"text-align: justify;\">Yuqoridagi komponentlardan &#8220;\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442&#8221; turidagi komponent &#8220;\u041a\u0430\u043d\u0430\u043b\u044b&#8221; bo&#8217;limida, qolgan barcha turdagi komponentlar esa, &#8220;\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f&#8221; bo&#8217;limida joylashgan. Komponentlar xususiyatlarini quyidagicha o&#8217;zgartiramiz:<\/p>\n<p style=\"text-align: justify;\">&#8220;Switch1&#8221; nomli komponent: uning &#8220;\u0422\u0435\u043a\u0441\u0442&#8221; maydoniga &#8220;Rele holati:&#8221; matnini kiritamiz, &#8220;\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e&#8221; kalitini qo&#8217;lda boshqarilmaydigan holatga keltiramiz (kalit faqat holatni ko&#8217;rsatish uchun kerak va uni boshqarish knopkalar yordamida bajariladi).<\/p>\n<p style=\"text-align: justify;\">&#8220;\u041a\u043d\u043e\u043f\u043a\u04301&#8221;, &#8220;\u041a\u043d\u043e\u043f\u043a\u04302&#8221; nomli komponentlar: &#8220;\u0426\u0432\u0435\u0442\u0424\u043e\u043d\u0430&#8221; maydonida mos ravishda yashil, qizil ranglarni kiritamiz, har ikkisi uchun ham &#8220;\u0416\u0438\u0440\u043d\u044b\u0439\u0428\u0440\u0438\u0444\u0442&#8221; kalitinitini ulaymiz, &#8220;\u0424\u043e\u0440\u043c\u0430&#8221; ro&#8217;yxatidan har ikkisi uchun ham &#8220;\u043e\u0432\u0430\u043b&#8221; variantini tanlaymiz, &#8220;\u0422\u0435\u043a\u0441\u0442&#8221; maydoniga mos ravishda &#8220;Ulash&#8221; va &#8220;Uzish&#8221; kalitini qo&#8217;lda boshqarilmaydigan holatga keltiramiz (kalit faqat holatni ko&#8217;rsatish uchun kerak va uni boshqarish knopkalar yordamida bajariladi).<\/p>\n<p style=\"text-align: justify;\">&#8220;\u041d\u0430\u0434\u043f\u0438\u0441\u044c1&#8221; nomli komponent: &#8220;\u0422\u0435\u043a\u0441\u0442&#8221; maydoniga &#8220;Mikrokontroller IP-manzili:&#8221; matnini kiritamiz.<\/p>\n<p style=\"text-align: justify;\">&#8220;\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u04421&#8221; nomli komponent (smartfon sohasida ko&#8217;rinmaydigan komponent) xususiyatlarini o&#8217;zgartirishsiz qoldiramiz.<\/p>\n<p>Barcha o&#8217;zgarishlar kiritilgach komponentlar joylashuvi quyidagicha bo&#8217;lishi kerak:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1960 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_1.jpg\" alt=\"\" width=\"682\" height=\"713\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_1.jpg 682w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_1-287x300.jpg 287w\" sizes=\"auto, (max-width: 682px) 100vw, 682px\" \/><\/p>\n<p style=\"text-align: justify;\">&#8220;\u0411\u043b\u043e\u043a\u0438&#8221; bo&#8217;limiga o&#8217;tamiz va ekranning chap tomonidagi komponentlarni tanlash orqali ularga tegishli bloklarni asosiy oynaga olib o&#8217;tamiz va quyidagi rasmda ko&#8217;rsatilgan algoritm bo&#8217;yicha va tartibda joylashtiramiz:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1962 size-full aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_2_.jpg\" alt=\"\" width=\"906\" height=\"472\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_2_.jpg 906w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_2_-300x156.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/app2_2_-768x400.jpg 768w\" sizes=\"auto, (max-width: 906px) 100vw, 906px\" \/><\/p>\n<p style=\"text-align: justify;\">Bloklarni tanlash va asosiy oynaga olib o&#8217;tish yuqoridagi 1-misolda ko&#8217;rsatilgan usulda bajariladi. Bunda kerakli blokni oson izlab topish uchun ularning quyidagi bo&#8217;limlarda joylashganiga e&#8217;tibor qaratish zarur:<br \/>\n&#8220;<strong>\u043a\u043e\u0433\u0434\u0430 \u041a\u043d\u043e\u043f\u043a\u04301.\u0429\u0435\u043b\u0447\u043e\u043a<\/strong>&#8221; bloki &#8220;<strong>Screen1\/\u041a\u043d\u043e\u043f\u043a\u04301<\/strong>&#8221; bo&#8217;limida joylashgan;<br \/>\n&#8220;<strong>\u043a\u043e\u0433\u0434\u0430 \u041a\u043d\u043e\u043f\u043a\u04302.\u0429\u0435\u043b\u0447\u043e\u043a<\/strong>&#8221; bloki &#8220;<strong>Screen1\/\u041a\u043d\u043e\u043f\u043a\u04302<\/strong>&#8221; bo&#8217;limida;<br \/>\n&#8220;<strong>\u043a\u043e\u0433\u0434\u0430 Switch1.\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u043e<\/strong>&#8221; bloki &#8220;<strong>Screen1\/Switch1<\/strong>&#8221; bo&#8217;limida;<br \/>\n&#8220;<strong>\u0435\u0441\u043b\u0438 &#8230; \u0442\u043e &#8230; <\/strong>&#8221; bloki &#8220;<strong>\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439\/\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/strong>&#8221; bo&#8217;limida;<br \/>\n&#8220;<strong>\u043d\u0435 &#8230;<\/strong>&#8221; bloki &#8220;<strong>\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439\/\u041b\u043e\u0433\u0438\u043a\u0430<\/strong>&#8221; bo&#8217;limida;<br \/>\n&#8220;<strong>Switch1.On<\/strong>&#8221; bloki &#8220;<strong>Screen1\/Switch1<\/strong>&#8221; bo&#8217;limida (2 marta qo&#8217;llanilgan);<br \/>\n&#8220;<strong>\u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u04421.\u0410\u0434\u0440\u0435\u0441 URL \u0432 <\/strong>&#8221; bloki &#8220;<strong>Screen1\/<\/strong><strong>\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u04421<\/strong>&#8221; bo&#8217;limida (2 marta qo&#8217;llanilgan);<br \/>\n&#8220;<strong>\u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c <\/strong><strong>Switch1.On \u0432 <\/strong>&#8221; bloki &#8220;<strong>Screen1\/Switch1<\/strong>&#8221; bo&#8217;limida (2 marta qo&#8217;llanilgan);<br \/>\n&#8220;<strong>\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c <\/strong>&#8221; bloki &#8220;<strong>\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439\/\u0422\u0435\u043a\u0441\u0442<\/strong>&#8221; bo&#8217;limida (2 marta qo&#8217;llaniladi). Asosiy oynaga olib o&#8217;tilgach, dastlab ushbu blokning chap yuqori burchagidagi sozlash tugmasi yordamida uning ichidagi &#8220;\u0441\u0442\u0440\u043e\u043a\u0430&#8221; elementlari sonini 3 taga yetkazib olamiz. Shundan keyin uning o&#8217;ng tomonidagi 3 ta uyalarning 1- va 3-uyalariga yana &#8220;<strong>\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439\/\u0422\u0435\u043a\u0441\u0442<\/strong>&#8221; bo&#8217;limidagi dastlabki <strong>&#8220;&#8221;<\/strong> (bo&#8217;sh maydon) elementini olib o&#8217;tiladi va ularga tegishli matnlar kiritiladi. 2-uyaga esa, &#8220;<strong>Screen1\/\u0422\u0435\u043a\u0441\u04421<\/strong>&#8221; bo&#8217;limidagi &#8220;<strong>\u0422\u0435\u043a\u0441\u04421.\u0422\u0435\u043a\u0441\u0442 <\/strong>&#8221; bloki joylashtiriladi;<br \/>\n&#8220;<strong>\u0422\u0435\u043a\u0441\u04421.\u0422\u0435\u043a\u0441\u0442 <\/strong>&#8221; bloki &#8220;<strong>Screen1\/\u0422\u0435\u043a\u0441\u04421<\/strong>&#8221; bo&#8217;limida (yuqoridagi &#8220;<strong>\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c <\/strong>&#8221; blokining 2-uyasiga joylashtiriladi, ushbu blok 2 marta qo&#8217;llanilgan);<br \/>\n&#8220;<strong>\u0438\u0441\u0442\u0438\u043d\u0430 <\/strong>&#8221; va &#8220;<strong>\u043b\u043e\u0436\u044c<\/strong>&#8221; bloklari &#8220;<strong>\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439\/\u041b\u043e\u0433\u0438\u043a\u0430<\/strong>&#8221; bo&#8217;limida;<br \/>\n&#8220;<strong>\u0432\u044b\u0437\u043e\u0432 &#8220;\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u04421.\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c<\/strong>&#8221; bloki &#8220;<strong>Screen1\/<\/strong><strong>\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u04421<\/strong>&#8221; bo&#8217;limida joylashgan.<\/p>\n<p>Ushbu bloklarning joylashuv algoritmi mazmuni va qisqacha vazifalariga to&#8217;xtalib o&#8217;tamiz.<\/p>\n<p style=\"text-align: justify;\">&#8220;<strong>\u043a\u043e\u0433\u0434\u0430 \u041a\u043d\u043e\u043f\u043a\u04301.\u0429\u0435\u043b\u0447\u043e\u043a<\/strong>&#8221; bloki &#8220;\u041a\u043d\u043e\u043f\u043a\u04301&#8221; (&#8220;Ulash&#8221;) tugmasi bosilganda qanday amallar bajarilishi zarurligini anglatadi. Uning ichidagi &#8220;<strong>\u0435\u0441\u043b\u0438 &#8230; \u0442\u043e &#8230; <\/strong>&#8221; bloki yordamida &#8220;Switch1&#8221; kalitining uzilgan holatidan kelib chiqib, http-so&#8217;rov shakllantiriladi. Ya&#8217;ni, agar &#8220;\u041a\u043d\u043e\u043f\u043a\u04301&#8221; tugmasi bosilgan paytda &#8220;Switch1&#8221; kaliti uzilgan holda bo&#8217;lsa, http-server uchun &#8220;http:\/\/IP-manzil\/gpio\/1&#8221; so&#8217;rovi shakllantiriladi. Bu yerda IP-manzil sifatida, &#8220;\u0422\u0435\u043a\u0441\u04421&#8221; matn maydonidagi yozuv qabul qilinadi. Shu bilan birga &#8220;Switch1&#8221; kalitining holati ulangan holga o&#8217;tkaziladi. Aksincha, ya&#8217;ni agar &#8220;\u041a\u043d\u043e\u043f\u043a\u04301&#8221; tugmasi bosilgan paytda &#8220;Switch1&#8221; kaliti ulangan holda bo&#8217;lsa, hech qanday amal bajarilmaydi.<br \/>\nXuddi shuningdek, &#8220;<strong>\u043a\u043e\u0433\u0434\u0430 \u041a\u043d\u043e\u043f\u043a\u04302.\u0429\u0435\u043b\u0447\u043e\u043a<\/strong>&#8221; bloki &#8220;\u041a\u043d\u043e\u043f\u043a\u04302&#8221; (&#8220;Uzish&#8221;) tugmasi bosilganda qanday amallar bajarilishi zarurligini anglatadi. Uning ichidagi &#8220;<strong>\u0435\u0441\u043b\u0438 &#8230; \u0442\u043e &#8230; <\/strong>&#8221; bloki yordamida &#8220;Switch1&#8221; kalitining ulangan holatidan kelib chiqib, http-so&#8217;rov shakllantiriladi. Ya&#8217;ni, agar &#8220;\u041a\u043d\u043e\u043f\u043a\u04302&#8221; tugmasi bosilgan paytda &#8220;Switch1&#8221; kaliti ulangan holda bo&#8217;lsa, http-server uchun &#8220;http:\/\/IP-manzil\/gpio\/0&#8221; so&#8217;rovi shakllantiriladi. Shu bilan birga &#8220;Switch1&#8221; kalitining holati uzilgan holga o&#8217;tkaziladi. Aksincha, ya&#8217;ni agar &#8220;\u041a\u043d\u043e\u043f\u043a\u04302&#8221; tugmasi bosilgan paytda &#8220;Switch1&#8221; kaliti uzilgan holda bo&#8217;lsa, hech qanday amal bajarilmaydi.<\/p>\n<p style=\"text-align: justify;\">&#8220;<strong>Switch1<\/strong>&#8221; kaliti holati har safar o&#8217;zgarganda, &#8220;<strong>\u0432\u044b\u0437\u043e\u0432 &#8220;\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u04421.\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c<\/strong>&#8221; bloki yordamida yuqoridagi bloklar yordamida shakllantirilgan tegishli http-so&#8217;rov http-serverga yuboriladi.<\/p>\n<p style=\"text-align: justify;\">Ma&#8217;lumki, raqamli pinga &#8220;1&#8221; (HIGH) qiymati yuborilsa, unga bog&#8217;langan svetodiod yoqilishi, aksincha &#8220;0&#8221; (LOW) qiymati yuborilsa, o&#8217;chishi kerak. Biroq, Wemos D1 mini platalaridagi raqamli 4-pinga ichki svetodiod inversiya holatida ulangani sababli, &#8220;1&#8221; signali uni o&#8217;chiradi, &#8220;0&#8221; signali esa yoqadi. Ushbu pinga tashqi svetodiod bog&#8217;lansa, hammasi tog&#8217;ri bajariladi.<\/p>\n<p style=\"text-align: justify;\">Mobil ilovada boshqarishni boshlash uchun, dastlab undagi tegishli matn maydoniga Arduino IDE port monitoriga chiqarilgan mikrokontroller IP-manzilni to&#8217;g&#8217;ri kiritish kerak bo&#8217;ladi. Aks holda, ilovada xatolik yuz bergani haqidagi inglizcha xabarlar ko&#8217;rsatiladi.<\/p>\n<p style=\"text-align: center;\"><strong>AI Companion yordamchi vositasi<\/strong><\/p>\n<p style=\"text-align: justify;\">Har qanday dasturlash tilida bo&#8217;lganidek, MIT AI da dasturlash jarayonida ham oraliq natijalarni kuzatish (otladka qilish)ga ehtiyoj tug&#8217;iladi. Har bir o&#8217;zgarishdan keyin oraliq natijani ko&#8217;rish uchun apk fayl hosil qilish, uni smartfonga o&#8217;rnatib, ishga tushirish bosqichlarini bajarish tabiiyki, dasturlash jarayonini ham uzaytirib yuboradi. Sunday holatlarni hisobga olgan holda, MIT AI oraliq natijalarini smartfonda (hatto har bir element xusisiyatidagi o&#8217;zgarishlarni ham) kuzatib borish uchun alohida &#8220;<strong>MIT AI2 Companion<\/strong>&#8221; (AI yordamchisi) nomli <strong>mobil ilova<\/strong> yaratilgan bo&#8217;lib, uni har doim &#8220;Play Market&#8221;dan yuklab olish mumkin. Uni smartfonda ishga tushirilgach dasturning quyidagi ko&#8217;rinishdagi oynasi hosil bo&#8217;ladi.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1949 size-large\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/ai_c-473x1024.jpg\" alt=\"\" width=\"473\" height=\"1024\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/ai_c-473x1024.jpg 473w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/ai_c-139x300.jpg 139w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/02\/ai_c.jpg 591w\" sizes=\"auto, (max-width: 473px) 100vw, 473px\" \/><\/p>\n<p style=\"text-align: justify;\">Shundan keyin MIT AI ning &#8220;\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f&#8221; menyusidagi &#8220;\u041f\u043e\u043c\u043e\u0449\u043d\u0438\u043a AI&#8221; elementi tanlansa, sahifada vaqtinchalik QR-kod va unga mos matnli kodni o&#8217;z ichiga olgan kichik oyna hosil bo&#8217;ladi. &#8220;<strong>MIT AI2 Companion<\/strong>&#8221; ilovasidagi matn maydoniga ushbu matnli kod kiritilib &#8220;<strong>connect with code<\/strong>&#8221; tugmasi bosilsa yoki ilova oynasidagi &#8220;<strong>scan QR code<\/strong>&#8221; tugmasini bosib, MIT AI oynasidagi QR-kod skanerlansa, Internet orqali ikki tomonlama aloqa o&#8217;rnatiladi. Aloqa faol bo&#8217;lgan paytda MIT AI akkauntidagi dasturga kiritilgan har qanday o&#8217;zgarishni smartfonda onlayn ravishda kuzatib borish mumkin bo&#8217;ladi!<\/p>\n<p style=\"text-align: justify;\">MIT AI akkauntidagi oraliq natijalarni kuzatib borishning boshqa variantlari ham bor. Masalan, MIT AI akkaunti faol bo&#8217;lgan kompyuter bilan smartfon o&#8217;rtasida USB-port orqali ham aloqa o&#8217;rnatish mumkin. Shuningdek, kompyuterda mobil qurilma emulyatori dasturini o&#8217;rnatib ham natijalarni u orqali kuzatish mumkin. Biz ushbu usullarga to&#8217;xtalmaymiz. Zarurat bo&#8217;lsa, bu usullardan foydalanish bilan bog&#8217;liq ma&#8217;lumotlarni dasturning yordam tizimidan va Internet tarmog&#8217;ining boshqa saytlaridan izlab topish mumkin.<\/p>\n<p id=\"app\" style=\"text-align: center;\"><strong>Takomillashtirilgan mobil ilova<\/strong><\/p>\n<p style=\"text-align: justify;\">Yuqoridagi sketch orqali Wemos D1 mini platasi ichki svetodiodi va unga parallel bo&#8217;lgan raqamli D4 piniga bog&#8217;langan releni (yoki rele modulini) boshqaruvchi, muallif tomonidan yaratilgan tayyor <strong>mobil ilova<\/strong>ni (yuqoridagi ilovaning takomillashtirilgan variantini) ushbu <strong><a href=\"https:\/\/yarat.uz\/esp8266_relay.apk\">havola<\/a><\/strong> orqali yuklab olish mumkin.<\/p>\n<p style=\"text-align: justify;\">Mobil ilovaning ushbu varianti orqali nafaqat releni ulab-uzish, balki, releni boshqarishning &#8220;Trigger&#8221; hamda &#8220;Impuls&#8221;rejimlarini tanlash, shuningdek zarurat tug&#8217;ilsa, relega yuboriladigan raqamli signalni inversiyalash ham ko&#8217;zda tutilgan. Bunda ba&#8217;zi rele modullarining inversiya rejimida ishlashga mo&#8217;ljallab ishlab chiqarilishi hisobga olingan. Dasturning keyingi seanslari uchun qo&#8217;llanilayotgan IP-manzil smartfon xotirasida saqlab qolinishi ham ko&#8217;zda turilgan va uni har safar qayta kiritishga zarurat qolmaydi.<\/p>\n<p><em><strong>(materialning ushbu qismi to&#8217;ldirish jarayonida)<\/strong><\/em><\/p>\n<p style=\"text-align: justify;\">Ilovaning imkoniyatlarini yanada oshirish, shuningdek yuqoridagi sketchda keltirilgan veb-sahifani hosil qilivchi HTML-kodga bir qator o&#8217;zgartirishlar kiritish orqali, xususan, uning dizaynini o&#8217;zgartirish (bezak berish) orqali sahifaning, undagi matn hamda tugmalarning tashqi ko&#8217;rinishini tushunarli va tartibli ko&#8217;rinishga keltirish mumkin. Biroq bu vazifalar ushbu darsning maqsadidan chetga chiqib ketadi, shuning uchun ularni o&#8217;quvchining ixtiyoriga qoldiramiz.<\/p>\n<p style=\"text-align: center;\"><em>Mustahkamlash uchun topshiriqlar<\/em><\/p>\n<p style=\"text-align: justify;\"><em>1. Oxirgi yaratilgan mobil ilovani (1-variant) va sketchni (2-variant) shunday o&#8217;zgartiringki, mikrokontrollerga yuborilgan signal (1-variantda) yoki relega kiruvchi signal (2-variantda) inversiya (qarama-qarshi) rejimida bo&#8217;lsin. Ya&#8217;ni &#8220;ulash&#8221; tugmasi yordamida &#8220;LOW&#8221;, &#8220;uzish&#8221; tugmasi yordamida &#8220;HIGH&#8221; signali yuborilsin.<br \/>\n2. MIT App Inventor blokli dasturlash vositasi yordamida 2 ta va undan ortiq sondagi yuklamalarni boshqaruvchi mobil ilovani yarating.<br \/>\n3. Sketchni o&#8217;zgartirmagan holda oxirgi yaratilgan mobil ilovaga ixtiyoriy qo&#8217;shimcha funksiya qo&#8217;shing.<\/em><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Navbatdagi bo&#8217;limda MIT App Inventor onlayn blokli dasturlash vositasi va u bilan ishlashning asoslari haqida qisqacha ma&#8217;lumotlar keltiriladi. MIT App Inventor blokli dasturlash vositasi Ushbu dasturlash vositasi faqat onlayn rejimda visual dasturlashga mo&#8217;ljallangan bo&#8217;lib, Android uchun dasturlarni dasturlash ushun alohida dasturlash tilini o&#8217;rganishni talab etmaydi va faqat bloklar yordamida dasturlashga yo&#8217;naltirilgan (Qulaylik uchun, darslar davomida [&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-1952","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\/1952","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=1952"}],"version-history":[{"count":33,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/1952\/revisions"}],"predecessor-version":[{"id":5007,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/1952\/revisions\/5007"}],"wp:attachment":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1952"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1952"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1952"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}