Navbatdagi bo’limda MIT App Inventor onlayn blokli dasturlash vositasi va u bilan ishlashning asoslari haqida qisqacha ma’lumotlar keltiriladi.
MIT App Inventor blokli dasturlash vositasi
Ushbu dasturlash vositasi faqat onlayn rejimda visual dasturlashga mo’ljallangan bo’lib, Android uchun dasturlarni dasturlash ushun alohida dasturlash tilini o’rganishni talab etmaydi va faqat bloklar yordamida dasturlashga yo’naltirilgan (Qulaylik uchun, darslar davomida MIT AI deb ham yuritamiz). Ushbu vosita bilan ishlash uchun foydalanuvchidan Google akkauntiga ega bo’lishi talab etiladi (smartfonda ishlatilayotgan akkauntdan foydalanish mumkin).
MIT AI ni ochish uchun ixtiyoriy brauzerda quyidagi havolaga o’tiladi: havola. Brauzer asosiy oynasida quyidagi sahifa ochiladi:

Akkauntga tez o’tish uchun “Create Apps!” tugmasi bosiladi va keyingi sahifada Google akkaunti ma’lumotlari (login, parol) kiritiladi. Ber nechta yordamchi dialog oynalari o’tkazib yuborilganidan so’ng, oynada quyidagi asosiy sahifa paydo bo’ladi. MIT AI ga birinchi marta kirilganda, tabiiyki, ro’yxat bo’sh bo’ladi. Bundan tashqari, akkauntga birinchi marta kirilganda, dastur ma’lumotlari ingliz tilida ko’rsatiladi, foydalanuvchi o’ziga kerakli tilni sahifaning yuqori o’ng tomonidagi menyudan tanlab olishi tavsiya etiladi. Biz dasturning rus tilidagi variantidan foydalanamiz.

Agar foydalanuvchi ilgari loyihalar yaratgan bo’lsa, ro’yxatda akkauntda saqlangan barcha loyihalarning ro’yxati ko’rinadi. Bu yerdan yangi loyihani yaratish, kerakli loyihaga o’tish va keraksizlarini o’chirib yuborish kabi asosiy vazifalarni bajarish mumkin. Keyinchalik ushbu ro’yxatga “Проекты” menyusi orqali o’tish mumkin (axborot havfsizligi nuqtai nazaridan, brauzer uzoq vaqt harakatsizlikdan so’ng, akkauntdan avtomatik chiqib ketishi va unga qaytadan kirishni so’rashi mumkin).
Kerakli loyiha tanlansa, loyihaning quyidagi asosiy oynasi – “Дизайнер” oynasi ochiladi.
Ushbu oynaning o’rta qismida loyihaning smartfondagi taxminiy ko’rinishi va unga joylashtirilgan visual dasturlash elementlari (matnlar, tugmalar, kalitlar, ro’yxatlar, rasmlar va hokazolar) ko’rsatiladi. Oynaning chap tomonida loyihada foydalanish mumkin bo’lgan barcha elementlar ro’yxati, o’ng tomonida esa, joriy loyihada foydalanilayotgan elementlar ro’yxati va ularning xususiyatlarini ko’rsatuvchi bo’limlar ko’rinadi.
Yangi elementni loyihaga qo’shish uchun, uni chap tomondagi ro’yxatdan izlab topiladi va sichqoncha yordamida smartfon oynasining tegishli joyiga olib o’tiladi. Loyihadagi biron elementning xususiyatlarini ko’rish yoki o’zgartirish uchun, uning nomi smartfon oynasining o’ng tomonidagi elementlar ro’yxatidan tanlanadi.
Foydalaniladigan elementlar ko’rinadigan va ko’rinmaydigan element turlariga bo’linadi. Masalan, yuqorida sanalgan barcha elementlar ko’rinadigan element turi hisoblanadi. Ko’rinmaydigan element turiga esa, turli xil aloqa vositalariga tegishli elementlar (Bluetooth, Internet, Ketma-ket port), xotira bilan ishlash vositalari (masalan, loyihada qo’llaniladigan fayllar ro’yxati, mobil ilova parametrlarini saqlovchi vositalar) va shunga o’xshash, visual ko’rish mumkin bo’lmagan vositalar kiradi.

Chap tomondagi elementlar ro’yxatiga foydalanuvchi ham boshqa tashqi tayyor elementlarni Internetdan (masalan, puravidaapps.com saytidan) yuklab olishi va uning “aix” formatdagi faylini ro’yxat oxiridagi “Extension” bo’limiga “Import extension” havolasi orqali qo’shib olishi mumkin.
Loyihaning har bir elementi bajaradigan vazifalarni boshqaruvchi bloklar bilan ishlash uchun loyiha oynasining yuqori o’ng tomonidan “Блоки” bo’limiga o’tiladi. Ushbu oynada har bir ko’rinadigan yoki ko’rinmaydigan element faollashganda bajariladigan vazifalarga mos bloklarni oynaning asosiy qismiga sichqoncha yordamida olib o’tiladi va dasturiy algoritm asosida joylashtiriladi.
Agar ko’p ekranli loyiha yaratilishi ko’zda tulgan bo’lsa, oyna yuqorisadagi “Добавать экран” tugmasi yordamida yangi ekran hosil qilish va uning xususiyatlarini o’zgartirish mumkin. Barcha ekranlar nomlarini ushbu tugmaning chap tomonidagi ro’yxatdan ko’rish va tanlash mumkin. Bundan tashqari, “Удалить экран” tugmasi yordamida keraksiz (Screen1 dan tashqari) ekranni o’chirish, “Project properties” tugmasi yordamida esa, loyihaning boshqa muhim xususiyatlarini (masalan, ilova nomi, uning ikonkasi fayli, versiyasi kabilarni) ko’rish yoki o’zgartirish mumkin.

Dastlabki misol tariqasida, biz yangi “misol” loyihasini va uning asosida tegishli “Mening ilovam” mobil ilovasini yaratish, oxirida uni smartfonga olib o’tish, unga o’rnatish jarayonlarini ko’rib chiqamiz. Buning uchun tegishli akkauntga kirgandan so’ng, asosiy oynada (loyihalar ro’yxatida) “New project” tugmasini bosamiz.

Loyiha nomini ko’rsatib, “OK” ni bosamiz. Yangi loyiha oynasi paydo bo’lgach, o’ng tomondagi komponentlar ro’yxatida Screen1 komponenti paydo bo’ladi. O’ng tomondagi “Свойства” bo’limida uning ayrim xususiyatlarini o’zgartiramiz. Bunimg uchun kerakli maydonlar qiymatini o’zgartiramiz. Masalan, “ФоновыйРисунок” maydoniga kompyuterdan ixtiyoriy rasm faylini tanlaymiz, “Заголовок” maydoniga misol tariqasida ilova sarlavhasini (masalan, “Mening birinchi ilovam!” matnini) kiritamiz. Boshqa maydonlarni o’zgartirmaymiz. Tanlangan rasm fayli nomi komponentlar ro’yxati quyirog’idagi “Медиа” ro’yxatida ham ko’rinadi.
Chap tomondagi komponentlar ro’yxatidan “Надпись”, “Индикатор ожидания”, “Кнопка” va “Уведомитель” komponentlarini ketma-ket ekrandagi smartfon oynasiga joylashtiramiz. O’ng tomondagi loyiha komponentlari ro’yxatida “Надпись1”, “ИндикаторОжидания1”, “Кнопка1”, “Уведомитель1” komponentlari paydo bo’ladi. “Уведомитель1” komponenti smartfondan quyiroqdagi “Невидимые компоненты” sohasida ham paydo po’ladi.
Dastlab komponentlar ro’yxatidan sichqoncha yordamida “Надпись1” komponentini tanlaymiz va o’ng tomondagi “Свойства” bo’limida “Ширина” maydonidan “Наполнить родительский” variantini tanlaymiz, “Текст” maydoniga “Kerakli yozuvni tanlang!” matnini kiratiz, “ЦветТекста” maydonidan ixtiyoriy rangni tanlaymiz.
Komponentlar ro’yxatidan “ИндикаторОжидания1″ni tanlaymiz va uning quyidagi xususiyatlarini o’zgartiramiz: “Ширина” maydonidan “Наполнить родительский” variantini tanlaymiz, “Подсказка” maydoniga “Yozuvni tanlang” matnini, “ЭлементыИзЦепочки” maydoniga “1-yozuv,2-yozuv,3-yozuv” matnini (vergul bilan ajratilgan matnlar ro’yxati), “Выбор” maydoniga “2-yozuv” (ro’yxatdagi elementlardan biri bo’lishi shart) matnini kiritamiz.
“Кнопка1” xususiyatlarini o’zgartiramiz: “ЖирныйШрифт” kalitini ulaymiz, “РазмерШрифта” maydoniga “20” qiymatini kiritamiz, “Ширина” maydonida “100” pixels” variantini, “Форма” bo’limidan “Овал” variantini tanlaymiz, “Текст” maydoniga “OK” matnini kiritamiz, “Цвет текста” bo’limidan ixtiyoriy rangni tanlaymiz.
“Уведомитель1” xususiyatlarini o’zgartirish shart emas.
Natijada, asosiy oynada taxminan quyidagi holat yuzaga kelishi kerak:

Endi “Блоки” oynasiga o’tib, “Кнопка1” tugmasi bosilganda bajariladigan jarayonni bloklar yordamida dasturlaymiz.
Buning uchun dastlab, chap tomondagi komponentlar ro’yxatidan “Кнопка1” komponentini sichqoncha yordamida tanlaymiz (uning nomi ustiga bir marta bosamiz xolos). Komponentlar ro’yxatining o’ng tomonida “Кнопка1” komponenti bilan qo’llash mumkin bo’lgan bloklar ro’yxati ko’rinadi. Ro’yxatdan “когда “Кнопка1.Щелчок” yozuvlarini (sarlavhasini) o’z ichiga olgan sariq rangli (1-tartibdagi) blokni sichqoncha yordamida asosiy oynaga olib o’tamiz.
Shundan keyin “Уведомитель1” komponentini tanlaymiz va paydo bo’lgan ro’yxatdan “Вызов “Уведомитель1.ПоказатьДиалогСообщения” sarlavhali blokni asosiy oynadagi blokning “делать” sohasiga joylashtiramiz. Ushbu blokning o’ng tomonidagi bo’sh “сообщение”, “заголовок”, “текстКнопки” maydonlariga mos ravishda quyidagi 3 ta komponentni ketma-ket joylashtiramiz: “сообщение” maydoniga “ИндикаторОжидания1” komponentining “ИндикаторОжидания1.Выбор” bloki, “заголовок” va “текстКнопки” maydonlariga (qizil fondagi) “Текст” komponentining dastlabki (argumentsiz) blokini. “заголовок” maydonidagi blok argumentiga “Siz tanlagan yozuv:” matnini, “текстКнопки” maydonidagi blok argumentiga esa, “Chiqish” matnini kiritamiz. Natijada quyidagi holat yuzaga kelishi kerak:

Agar hammasi to’g’ri bajarilgan bo’lsa, blokli dasturimizni kompilyatsiya qilish va uni apk formatli faylga sqalsh qoldi xolos. Buning uchun MIT AI ning “Построить” menyusidan “Android app (.apk)” elementini tanlaymiz. Taxminan 20-30 sekund ichida apk formatli fayl tayyor ekanligi bildiruvchi quyidagi kabi oyna paydo bo’ladi:

Faylni kompyuterga yuklab olish uchun chap tomondagi “Download .apk now” tugmasini bosishimiz mumkin. Bundan tashqari, ushbu oynaning o’ng tomonida ko’rsatilgan QR-kod yordamida misol ilovani to’g’ridan-to’g’ri smartfonimizga yuklab olishimiz mumkin. Buning uchun smartfondagi ixtiyoriy QR-kodni skanerlash dasturi yordamida uni skanerlash va ko’rsatilgan havolani ochish mumkin bo’ladi. Fayl PlayMarket internet-do’konidan yuklanmaganligi sababli, aksariyat smartfonlar fayl xavfli bo’lishi mumkinligidan ogohlantiradi. Bundan tashqari, uni o’rnatish davomida ham shunga o’xshash ogohlantirish ko’rsatilishi mumkin. Biroq biz yaratgan ilova xavfsiz bo’lganligi uchun, uni bemalol yuklab olishimiz va o’rnatihimiz mumkin.
Ilova dasturi tog’ri yaratilgan bo’lsa, uni smartfonda ishga tushirilganidan so’ng tegishli ro’yxatdan biron yozuvni tanlab, “OK” tugmasi bosilganda tanlangan yozuvimiz matni eslatma ko’rinishida yana bir bor tasdiqlanishi, “Chiqish” tugmasi bosilganda esa, eslatma g’oyib bo’lishi kerak.
Yaratilgan dastlabki ilovamiz Arduino qurilmasini boshqarishga hech qanday daxli bo’lmasa-da, keltirilgan dastlabki ma’lumotlar ayrim arduinochilarning MIT AI ni o’zlashtira boshlashlari uchun turtki bo’lishi mumkin.
Navbatdagi misol esa, WiFi orqali boshqaruv bo’yicha naminaviy loyihalarning davomi hisoblanadi. Ma’lumki, mazkur misollarda mikrokontrollerni WiFi tarmoqdagi kompyuter, smartfon, planshet, smart-televizor va veb-brauzerga ega bo’lgan boshqa qurilmalardan boshqarishgacha bo’lgan bosqichlar ko’rib chiqilgan. Mikrokontrollerni mobil ilova yordamida boshqarish maksimal darajada tushunarli va oson bo’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.
1-variant. Qurilmani ilovadagi ichki veb-brauzer yordamida boshqarish.
Ushbu variantda biz ilgari yaratilgan qurilmamizni mobil ilovaning “WebПросмотрщик” komponentidan foydalanib yaratamiz. Chunki, “WebПросмотрщик” elementi har qanday veb-brauzerni yaratish uchun zarur bo’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’zimiz hosil qilgan ichki brauzer yordamida boshqaramiz. Shuning uchun ham sketchda http-server bilan bog’liq qanday o’zgarish bo’lishidan qat’iy nazar, ilovaning boshqa qismlarini o’zgartirishga to’g’ri kelmaydi. http-so’rovlar ham mikrokontrollerda yaratilgan veb-sahifadan yuboriladi. Yana bir qulayligi, smartfon bilan qurilma orasida teskari aloqa ham o’rnatiladi (masalan, ichki svetodiod real holatini ilovada ham nazorat qilish mumkin). Qo’pol qilib aytganda, biz shunchaki mikrokontrollerni boshqarish uchun ilgari yaratgan veb-sahifamizni mobil ilovaning ichiga ko’chirib olib o’tamiz xolos!
Buning uchun MIT AI da yangi “browser_control” nomli loyiha yaratamiz. “Project properties” tugmasi yordamida, yaratiladigan ilovamizga “WiFi rele” kabi tushunarli nom qo’yamiz. Loyiha oynasi ochilgach, smartfon sohasiga quyidagi 3 ta (“Надпись”, “Текст”, “WebПросмотрщик” turidagi) komponentlarni ko’rsatilgan tartibda joylashtiramiz (qulaylik uchun komponentlar soni imkon qadar minimallashtirilgan):
“Высота” va “Ширина” maydonlarida “Наполнить родительский” variantini tanlaymiz. “ДомашняяСтраница” maydonini bo’sh qoldirishimiz yoki ungf bironta IP-manzilni oldindan kiritib qo’yishimiz mumkin. Ilova ishga tushganan dastlab ko’rsatilgan IP-manzil ilovaning ekranidagi veb-brauzerda ochiladi.

“Блоки” bo’limiga o’tamiz va ekranning chap tomonidagi komponentlarni tanlash orqali ularga tegishli bloklarni asosiy oynaga olib o’tamiz va quyidagi rasmda ko’rsatilgan algoritm bo’yicha va tartibda joylashtiramiz:

Mobil ilova ishga tushirilib, “Текст” maydoniga mikrokontroller IP-manzili kiritilsa, ichki brauzerda mikrokontrollerda yaratilgan veb-sahifa ko’rinadi va undagi giperhavolalar yordamida qurilmani boshqarish mumkin bo’ladi.
2-variant. Qurilmani veb-brauzersiz (ilovaning boshqa komponentlari yordamida) boshqarish.
Ushbu variantda qurilmani boshqarish uchun http-so’rovlar bevosita ilovaning o’zi tomonidan shakllantiriladi. Bunda, boshqaruv “WebПросмотрщик” komponenti yordamida emas, “Интернет” komponenti yordamida yuboriladigan http-so’rov orqali bajariladi. To’g’ridan-to’g’ri mikrokontrollerda yaratilgan veb-sahifa bilan ishlashga to’g’ri kelmaydi. Lekin, mikrokontroller bilan smartfon orasida teskari aloqa bo’lmaydi (smartfonda svetodiodning real holati ko’rinmaydi).
MIT AI da yangi “WiFi_relay” nomli loyiha yaratamiz. “Project properties” tugmasi yordamida, yaratiladigan ilovamizga “WiFi rele” kabi tushunarli nom qo’yamiz. Loyiha oynasi ochilgach, smartfon sohasiga quyidagi 6 ta (“Switch”, “Кнопка”, “Надпись”, “Текст”, “Интернет” turidagi) komponentlarni ko’rsatilgan tartibda joylashtiramiz (qulaylik uchun komponentlar soni imkon qadar minimallashtirilgan):
1. “Switch1” nomli komponent – relening kontakti holatini ko’rsatib turish uchun.
2. “Кнопка1” va “Кнопка2” nomli komponentlar – releni ulash yoki uzish buyruqlarini veb-serverga yuborish uchun.
3. “Надпись1” nomli komponent – IP-manzil maydonini izohlash uchun.
4. “Текст1” nomli komponent – mikrokontroller IP-manzilini kiritish uchun.
5. “Интернет1” nomli komponent – http-so’rovni http-serverga yuborish uchun.
“Screen” majburiy komponenti xususiyatlarida “ВыровнятьПоГоризонтали” ro’yxatidan “Центр: 3” variantini tanlaymiz, “Заголовок” maydoniga dasturimiz sarlavhasini (masalan, “WiFi orqali releni boshqarish dasturi” matnini) kiritamiz.
Yuqoridagi komponentlardan “Интернет” turidagi komponent “Каналы” bo’limida, qolgan barcha turdagi komponentlar esa, “Интерфейс пользователя” bo’limida joylashgan. Komponentlar xususiyatlarini quyidagicha o’zgartiramiz:
“Switch1” nomli komponent: uning “Текст” maydoniga “Rele holati:” matnini kiritamiz, “Включено” kalitini qo’lda boshqarilmaydigan holatga keltiramiz (kalit faqat holatni ko’rsatish uchun kerak va uni boshqarish knopkalar yordamida bajariladi).
“Кнопка1”, “Кнопка2” nomli komponentlar: “ЦветФона” maydonida mos ravishda yashil, qizil ranglarni kiritamiz, har ikkisi uchun ham “ЖирныйШрифт” kalitinitini ulaymiz, “Форма” ro’yxatidan har ikkisi uchun ham “овал” variantini tanlaymiz, “Текст” maydoniga mos ravishda “Ulash” va “Uzish” kalitini qo’lda boshqarilmaydigan holatga keltiramiz (kalit faqat holatni ko’rsatish uchun kerak va uni boshqarish knopkalar yordamida bajariladi).
“Надпись1” nomli komponent: “Текст” maydoniga “Mikrokontroller IP-manzili:” matnini kiritamiz.
“Интернет1” nomli komponent (smartfon sohasida ko’rinmaydigan komponent) xususiyatlarini o’zgartirishsiz qoldiramiz.
Barcha o’zgarishlar kiritilgach komponentlar joylashuvi quyidagicha bo’lishi kerak:

“Блоки” bo’limiga o’tamiz va ekranning chap tomonidagi komponentlarni tanlash orqali ularga tegishli bloklarni asosiy oynaga olib o’tamiz va quyidagi rasmda ko’rsatilgan algoritm bo’yicha va tartibda joylashtiramiz:

Bloklarni tanlash va asosiy oynaga olib o’tish yuqoridagi 1-misolda ko’rsatilgan usulda bajariladi. Bunda kerakli blokni oson izlab topish uchun ularning quyidagi bo’limlarda joylashganiga e’tibor qaratish zarur:
“когда Кнопка1.Щелчок” bloki “Screen1/Кнопка1” bo’limida joylashgan;
“когда Кнопка2.Щелчок” bloki “Screen1/Кнопка2” bo’limida;
“когда Switch1.Изменено” bloki “Screen1/Switch1” bo’limida;
“если … то … ” bloki “Встроенный/Управление” bo’limida;
“не …” bloki “Встроенный/Логика” bo’limida;
“Switch1.On” bloki “Screen1/Switch1” bo’limida (2 marta qo’llanilgan);
“присвоить Интернет1.Адрес URL в ” bloki “Screen1/Интернет1” bo’limida (2 marta qo’llanilgan);
“присвоить Switch1.On в ” bloki “Screen1/Switch1” bo’limida (2 marta qo’llanilgan);
“соединить ” bloki “Встроенный/Текст” bo’limida (2 marta qo’llaniladi). Asosiy oynaga olib o’tilgach, dastlab ushbu blokning chap yuqori burchagidagi sozlash tugmasi yordamida uning ichidagi “строка” elementlari sonini 3 taga yetkazib olamiz. Shundan keyin uning o’ng tomonidagi 3 ta uyalarning 1- va 3-uyalariga yana “Встроенный/Текст” bo’limidagi dastlabki “” (bo’sh maydon) elementini olib o’tiladi va ularga tegishli matnlar kiritiladi. 2-uyaga esa, “Screen1/Текст1” bo’limidagi “Текст1.Текст ” bloki joylashtiriladi;
“Текст1.Текст ” bloki “Screen1/Текст1” bo’limida (yuqoridagi “соединить ” blokining 2-uyasiga joylashtiriladi, ushbu blok 2 marta qo’llanilgan);
“истина ” va “ложь” bloklari “Встроенный/Логика” bo’limida;
“вызов “Интернет1.Получить” bloki “Screen1/Интернет1” bo’limida joylashgan.
Ushbu bloklarning joylashuv algoritmi mazmuni va qisqacha vazifalariga to’xtalib o’tamiz.
“когда Кнопка1.Щелчок” bloki “Кнопка1” (“Ulash”) tugmasi bosilganda qanday amallar bajarilishi zarurligini anglatadi. Uning ichidagi “если … то … ” bloki yordamida “Switch1” kalitining uzilgan holatidan kelib chiqib, http-so’rov shakllantiriladi. Ya’ni, agar “Кнопка1” tugmasi bosilgan paytda “Switch1” kaliti uzilgan holda bo’lsa, http-server uchun “http://IP-manzil/gpio/1” so’rovi shakllantiriladi. Bu yerda IP-manzil sifatida, “Текст1” matn maydonidagi yozuv qabul qilinadi. Shu bilan birga “Switch1” kalitining holati ulangan holga o’tkaziladi. Aksincha, ya’ni agar “Кнопка1” tugmasi bosilgan paytda “Switch1” kaliti ulangan holda bo’lsa, hech qanday amal bajarilmaydi.
Xuddi shuningdek, “когда Кнопка2.Щелчок” bloki “Кнопка2” (“Uzish”) tugmasi bosilganda qanday amallar bajarilishi zarurligini anglatadi. Uning ichidagi “если … то … ” bloki yordamida “Switch1” kalitining ulangan holatidan kelib chiqib, http-so’rov shakllantiriladi. Ya’ni, agar “Кнопка2” tugmasi bosilgan paytda “Switch1” kaliti ulangan holda bo’lsa, http-server uchun “http://IP-manzil/gpio/0” so’rovi shakllantiriladi. Shu bilan birga “Switch1” kalitining holati uzilgan holga o’tkaziladi. Aksincha, ya’ni agar “Кнопка2” tugmasi bosilgan paytda “Switch1” kaliti uzilgan holda bo’lsa, hech qanday amal bajarilmaydi.
“Switch1” kaliti holati har safar o’zgarganda, “вызов “Интернет1.Получить” bloki yordamida yuqoridagi bloklar yordamida shakllantirilgan tegishli http-so’rov http-serverga yuboriladi.
Ma’lumki, raqamli pinga “1” (HIGH) qiymati yuborilsa, unga bog’langan svetodiod yoqilishi, aksincha “0” (LOW) qiymati yuborilsa, o’chishi kerak. Biroq, Wemos D1 mini platalaridagi raqamli 4-pinga ichki svetodiod inversiya holatida ulangani sababli, “1” signali uni o’chiradi, “0” signali esa yoqadi. Ushbu pinga tashqi svetodiod bog’lansa, hammasi tog’ri bajariladi.
Mobil ilovada boshqarishni boshlash uchun, dastlab undagi tegishli matn maydoniga Arduino IDE port monitoriga chiqarilgan mikrokontroller IP-manzilni to’g’ri kiritish kerak bo’ladi. Aks holda, ilovada xatolik yuz bergani haqidagi inglizcha xabarlar ko’rsatiladi.
AI Companion yordamchi vositasi
Har qanday dasturlash tilida bo’lganidek, MIT AI da dasturlash jarayonida ham oraliq natijalarni kuzatish (otladka qilish)ga ehtiyoj tug’iladi. Har bir o’zgarishdan keyin oraliq natijani ko’rish uchun apk fayl hosil qilish, uni smartfonga o’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’zgarishlarni ham) kuzatib borish uchun alohida “MIT AI2 Companion” (AI yordamchisi) nomli mobil ilova yaratilgan bo’lib, uni har doim “Play Market”dan yuklab olish mumkin. Uni smartfonda ishga tushirilgach dasturning quyidagi ko’rinishdagi oynasi hosil bo’ladi.

Shundan keyin MIT AI ning “Подключиться” menyusidagi “Помощник AI” elementi tanlansa, sahifada vaqtinchalik QR-kod va unga mos matnli kodni o’z ichiga olgan kichik oyna hosil bo’ladi. “MIT AI2 Companion” ilovasidagi matn maydoniga ushbu matnli kod kiritilib “connect with code” tugmasi bosilsa yoki ilova oynasidagi “scan QR code” tugmasini bosib, MIT AI oynasidagi QR-kod skanerlansa, Internet orqali ikki tomonlama aloqa o’rnatiladi. Aloqa faol bo’lgan paytda MIT AI akkauntidagi dasturga kiritilgan har qanday o’zgarishni smartfonda onlayn ravishda kuzatib borish mumkin bo’ladi!
MIT AI akkauntidagi oraliq natijalarni kuzatib borishning boshqa variantlari ham bor. Masalan, MIT AI akkaunti faol bo’lgan kompyuter bilan smartfon o’rtasida USB-port orqali ham aloqa o’rnatish mumkin. Shuningdek, kompyuterda mobil qurilma emulyatori dasturini o’rnatib ham natijalarni u orqali kuzatish mumkin. Biz ushbu usullarga to’xtalmaymiz. Zarurat bo’lsa, bu usullardan foydalanish bilan bog’liq ma’lumotlarni dasturning yordam tizimidan va Internet tarmog’ining boshqa saytlaridan izlab topish mumkin.
Takomillashtirilgan mobil ilova
Yuqoridagi sketch orqali Wemos D1 mini platasi ichki svetodiodi va unga parallel bo’lgan raqamli D4 piniga bog’langan releni (yoki rele modulini) boshqaruvchi, muallif tomonidan yaratilgan tayyor mobil ilovani (yuqoridagi ilovaning takomillashtirilgan variantini) ushbu havola orqali yuklab olish mumkin.
Mobil ilovaning ushbu varianti orqali nafaqat releni ulab-uzish, balki, releni boshqarishning “Trigger” hamda “Impuls”rejimlarini tanlash, shuningdek zarurat tug’ilsa, relega yuboriladigan raqamli signalni inversiyalash ham ko’zda tutilgan. Bunda ba’zi rele modullarining inversiya rejimida ishlashga mo’ljallab ishlab chiqarilishi hisobga olingan. Dasturning keyingi seanslari uchun qo’llanilayotgan IP-manzil smartfon xotirasida saqlab qolinishi ham ko’zda turilgan va uni har safar qayta kiritishga zarurat qolmaydi.
(materialning ushbu qismi to’ldirish jarayonida)
Ilovaning imkoniyatlarini yanada oshirish, shuningdek yuqoridagi sketchda keltirilgan veb-sahifani hosil qilivchi HTML-kodga bir qator o’zgartirishlar kiritish orqali, xususan, uning dizaynini o’zgartirish (bezak berish) orqali sahifaning, undagi matn hamda tugmalarning tashqi ko’rinishini tushunarli va tartibli ko’rinishga keltirish mumkin. Biroq bu vazifalar ushbu darsning maqsadidan chetga chiqib ketadi, shuning uchun ularni o’quvchining ixtiyoriga qoldiramiz.
Mustahkamlash uchun topshiriqlar
1. Oxirgi yaratilgan mobil ilovani (1-variant) va sketchni (2-variant) shunday o’zgartiringki, mikrokontrollerga yuborilgan signal (1-variantda) yoki relega kiruvchi signal (2-variantda) inversiya (qarama-qarshi) rejimida bo’lsin. Ya’ni “ulash” tugmasi yordamida “LOW”, “uzish” tugmasi yordamida “HIGH” signali yuborilsin.
2. MIT App Inventor blokli dasturlash vositasi yordamida 2 ta va undan ortiq sondagi yuklamalarni boshqaruvchi mobil ilovani yarating.
3. Sketchni o’zgartirmagan holda oxirgi yaratilgan mobil ilovaga ixtiyoriy qo’shimcha funksiya qo’shing.