{"id":123,"date":"2023-05-15T15:28:30","date_gmt":"2023-05-15T10:28:30","guid":{"rendered":"http:\/\/yarat.uz\/?p=123"},"modified":"2025-03-19T15:27:05","modified_gmt":"2025-03-19T10:27:05","slug":"sd-karta-bilan-ishlash","status":"publish","type":"post","link":"https:\/\/yarat.uz\/?p=123","title":{"rendered":"Xotira vositalari bilan ishlash [18+]"},"content":{"rendered":"<p style=\"text-align: center;\"><strong>EEPROM-xotira bilan ishlash<\/strong><\/p>\n<div style=\"text-align: justify;\">Nazariy darsda EEPROM-xotira haqida yetarlicha ma&#8217;lumot berilgan. Shuning uchun, to&#8217;g&#8217;ridan-to&#8217;g&#8217;ri ularga oid misollarni ko&#8217;rib chiqishga o&#8217;tamiz.<\/div>\n<div style=\"text-align: justify;\"><\/div>\n<div><em>Misollar:<\/em><\/div>\n<pre><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><strong>PROGMEM-xotira bilan ishlash<\/strong><\/p>\n<p style=\"text-align: justify;\">Progmem-xotira bilan ishlash bo&#8217;yicha ma&#8217;lumotlar nazariy darsda keltirilgan. Shuning uchun to&#8217;g&#8217;ridan-to&#8217;g&#8217;ri amaliy misollarga o&#8217;tamiz.<\/p>\n<p>Progmem-xotiradan <strong>oddiy sonlarni o&#8217;qish<\/strong>:<\/p>\n<pre><code><\/code><\/pre>\n<p><em>Natija:<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4151 aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem1.jpg\" alt=\"\" width=\"901\" height=\"352\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem1.jpg 901w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem1-300x117.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem1-768x300.jpg 768w\" sizes=\"auto, (max-width: 901px) 100vw, 901px\" \/><\/p>\n<p><strong>Bir o&#8217;lchovli massivni\u00a0o&#8217;qish<\/strong>ga misol:<\/p>\n<pre><code><\/code><\/pre>\n<p><em>Natija:<\/em><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4150 aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem2.jpg\" alt=\"\" width=\"901\" height=\"352\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem2.jpg 901w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem2-300x117.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem2-768x300.jpg 768w\" sizes=\"auto, (max-width: 901px) 100vw, 901px\" \/><br \/>\n<strong>Ikki o&#8217;lchovli massivni o&#8217;qish<\/strong>ga misol:<\/p>\n<pre><code><\/code> Natija: <img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4152 aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem3.jpg\" alt=\"\" width=\"901\" height=\"352\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem3.jpg 901w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem3-300x117.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem3-768x300.jpg 768w\" sizes=\"auto, (max-width: 901px) 100vw, 901px\" \/><\/pre>\n<p style=\"text-align: justify;\">Bir nechta turli o&#8217;chamli massivlarni bir massiv, ya&#8217;ni <strong>massivlarning massivi<\/strong>\u00a0 (<strong>havolalar jadvali<\/strong>) ko&#8217;rinishida ham saqlash va o&#8217;qish mumkin. Ikki o&#8217;lchovli massivdan farqli jihati &#8211; massivlarning massividagi har bir massiv mustaqil o&#8217;lchamga ega bo&#8217;lishi mumkin!<b> <\/b>Misol:<\/p>\n<pre><code><\/code><\/pre>\n<p><em>Natija:<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4153 aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem4.jpg\" alt=\"\" width=\"901\" height=\"352\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem4.jpg 901w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem4-300x117.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem4-768x300.jpg 768w\" sizes=\"auto, (max-width: 901px) 100vw, 901px\" \/><\/p>\n<p style=\"text-align: justify;\">PROGMEM da saqlash samarali bo&#8217;lgan yana bir qiymat turi &#8211; <strong>qator<\/strong> (<strong>char*<\/strong> &#8211; matn yoki belgilar massivi sifatida) hisoblanadi (agar dastur davomida o&#8217;zgartirlmaydigan qator bo&#8217;lsa). Uning oddiy massiv sifatida ifodalanishi quyidagicha:<\/p>\n<div class=\"enlighter\">\n<div class=\"\">\n<div><strong><span class=\"enlighter-k5\">char<\/span><span class=\"enlighter-text\"> qator<\/span><span class=\"enlighter-g1\">[]<\/span><\/strong><span class=\"enlighter-text\"><strong> =<\/strong> <\/span><span class=\"enlighter-s0\">&#8220;Bu &#8211; belgilar massivi&#8221;<\/span><span class=\"enlighter-text\">;<\/span><\/div>\n<\/div>\n<\/div>\n<p style=\"text-align: justify;\">PROGMEM matnni, xuddi yuqoridagidek, belgilar massivi sifatida saqlash imkonini beradi. Lekin, u bilan ishlash oddiy matn va belgilar massivi bilan ishlashdan farq qiladi, chunki dastur uchun <strong>const char*<\/strong> ko&#8217;rinishidagi qator sifatida qaraladi. Shuning uchun biz ham, qulaylik uchun PROGMEM ga saqlanadigan belgili qatorni <strong>PGM-qator<\/strong> deb yuritamiz.<\/p>\n<p style=\"text-align: justify;\">PGM-qatorni oddiy belgili qatordan farqlash uchun maxsus sun&#8217;iy &#8220;qiymat turi&#8221; qo&#8217;llaniladi, u <strong>PGM_P<\/strong> (batafsil: <a href=\"http:\/\/avr-libc.narod.ru\/group__avr__pgmspace.html\">bu yerda<\/a> tanishing) kabi ifodalanadi va makros sifatida <strong>const char*<\/strong> ifodasi o&#8217;rniga ishlatiladi. Ya&#8217;ni, sketchda\u00a0<strong>const char*<\/strong> ko&#8217;rsatilishi oddiy o&#8217;zgaruvchi tezkor xotiraga saqlanishini, <strong>PGM_P<\/strong> esa o&#8217;zgaruvchi qiymati PROGMEM ga saqlanishini bildiradi.<\/p>\n<p style=\"text-align: justify;\">PGM-qator faqat global e&#8217;lon qilinadi. Quyida PGM-qatorni e&#8217;lon qilish va uni o&#8217;qishga misol keltirilgan:<\/p>\n<p style=\"text-align: justify;\"><code><\/code><\/p>\n<p style=\"text-align: justify;\"><em>Natija:<\/em> <img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4159 aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem5.jpg\" alt=\"\" width=\"901\" height=\"486\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem5.jpg 901w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem5-300x162.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem5-768x414.jpg 768w\" sizes=\"auto, (max-width: 901px) 100vw, 901px\" \/><br \/>\nXuddi yuqoridagi massivlar massividek, PGM-qarotlar massivini ham hosil qilish muhim ahamiyatga ega. Buning uchun dastlab PGM-qatorni, so&#8217;ngra ularga ko&#8217;rsatkich sifatida ularning massivini yaratiladi.<\/p>\n<p style=\"text-align: justify;\">PGM-qator matnini dastur davomida o&#8217;zgartirish yoki undan bironta funksiyaning argumenti sifatida foydalanishga to&#8217;g&#8217;ri kelsa, undan tezkor xotiraga nusxa olish mumkin.<\/p>\n<p style=\"text-align: justify;\"><em>PGM-qatorlar massivi bo&#8217;yicha umumiy misol:<\/em><\/p>\n<p style=\"text-align: justify;\"><code> <em>Natija: <img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4160 aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem6.jpg\" alt=\"\" width=\"901\" height=\"352\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem6.jpg 901w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem6-300x117.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/progmem6-768x300.jpg 768w\" sizes=\"auto, (max-width: 901px) 100vw, 901px\" \/> <\/em><\/p>\n<p style=\"text-align: justify;\"><em>Eslatma. Bibliotekalardagi ayrim funksiyalar (masalan, ESP8266 bibliotekasi) PGM-qatorlar bilan ishlay oladi. Bu imkoniyatdan ham dasturlash paytida foydalanish mumkin.<\/em><\/p>\n<p style=\"text-align: center;\"><strong>ESP mikrokontrollerlari SPIFFS fayl tizimi bilan ishlash<\/strong><\/p>\n<p style=\"text-align: justify;\">SPIFFS fayl tizimi haqida nazariy darsda dastlabki ma&#8217;lumotlar keltirilgan. Quyiroqda ushbu fayl tizimi yordamida mikrokontroller flesh-xotirasining (misollar davomida ushbu xotira sohasini shunchaki &#8220;xotira&#8221; deb yuritamiz) tizim uchun ajratilgan qismidan foydalanish bo&#8217;yicha misollar bilan tanishamiz.<\/p>\n<p style=\"text-align: justify;\"><strong>1-misol. <\/strong>Ushbu misolda mikrokontroller xotirasining fayl tizimi uchun ajratilgan qismida fayllar ustidagi asosiy operatsiyalarni bajarilish, natijalarni port monitorida ko&#8217;rsatib borish sketchini ko&#8217;rib chiqamiz. Xususan, quyidagi operatsiyalar bajariladi va natijasi portga chiqariladi:<br \/>\n&#8211; fayl tizimini formatlash (faqat 1 marta, dastur ishga tushgan paytda &#8211; zarurat bo&#8217;lsa);<br \/>\n&#8211; fayl tizimi haqida asosiy ma&#8217;lumotlarni ko&#8217;rsatish;<br \/>\n&#8211; bosh papkadagi fayllar haqida ma&#8217;lumot beriladi;<br \/>\n&#8211; yangi matnli fayl yaratish;<br \/>\n&#8211; fayl nomini o&#8217;zgartirish;<br \/>\n&#8211; faylni o&#8217;chirish (zarurat bo&#8217;lsa).<\/p>\n<p><em>Sketch:<\/em><\/p>\n<pre><code><\/code><\/pre>\n<p><em>Natija:<\/em><\/p>\n<p>Fayl tizimini formatlash jarayoni taxminan 50 sekund davom etganini ko&#8217;rish mumkin.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5051\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/SPIFFS_port.png\" alt=\"\" width=\"899\" height=\"619\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/SPIFFS_port.png 899w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/SPIFFS_port-300x207.png 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/SPIFFS_port-768x529.png 768w\" sizes=\"auto, (max-width: 899px) 100vw, 899px\" \/><\/p>\n<p style=\"text-align: justify;\"><strong>2-misol. <\/strong>Ushbu misolda mikrokontrollerning SPIFFS fayl tizimi bilan ishlash uchun sketch yordamida FTP-server hosil qilamiz hamda ayrim FTP-mijoz ilovalaridan foydalanganib unga bog&#8217;lanish jarayonini ko&#8217;rib chiqamiz. Buning uchun &#8220;<a href=\"https:\/\/github.com\/nailbuster\/esp8266FTPServer\">ESP8266FtpServer.h<\/a>&#8221; bibliotekasi yordamida yaratilgan &#8220;FTPServerSample&#8221; namunaviy sketchini ochib, o&#8217;zimizga moslashtiramiz (ushbu sketch ESP8266 va ESP32 platalariga moslashtirilgan).<\/p>\n<p><em>&#8220;FTPServerSample&#8221; namunaviy sketchi:<\/em><\/p>\n<pre><code><\/code><\/pre>\n<p><em>Natija:<\/em><\/p>\n<p>Dastur ishga tushgach, port monitorida yaratilgan FTP-serverning IP-manzili, login va parol eslatib o&#8217;tiladi. Shundan so&#8217;ng, ixtiyoriy FTP-mijoz dasturi yordamida unga bog&#8217;lanib, fayllar bilan ishlashni boshlashimiz mumkin.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5037\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp-server3.png\" alt=\"\" width=\"897\" height=\"389\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp-server3.png 897w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp-server3-300x130.png 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp-server3-768x333.png 768w\" sizes=\"auto, (max-width: 897px) 100vw, 897px\" \/><\/p>\n<p style=\"text-align: justify;\">FTP-mijoz dasturida imkon qadar flesh-xotira sig&#8217;imidan oshib ketadigan fayllar yozilganda yoki almashinuv tezligi yuqori bo&#8217;lganda xatoliklar yuzaga kelishi mumkin! Agar fayllar bilan ishlash jarayonida server ishlamay qolsa, mikrokontrollerni qayta ishga tushirish zarur.<\/p>\n<p style=\"text-align: justify;\">Kompyuterda Windows uchun &#8220;Total Commander&#8221; dasturini ishga tushirib, &#8220;FTP&#8221; menyusi &#8220;\u0421\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u0441 FTP-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c&#8230;&#8221; buyrug&#8217;ini tanlaymiz va yangi bog&#8217;lanish parametrlarini (server IP-manzili, foydalanuvchi logini va parolini) quyidagi rasmdagi kabi kiritamiz. Asosiy parametrlar (bog&#8217;lanish nomidan tashqari) sketchda ko&#8217;rsatilganlari bilan bir xil bo&#8217;lishi kerak.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5039\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp-server1.png\" alt=\"\" width=\"894\" height=\"665\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp-server1.png 894w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp-server1-300x223.png 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp-server1-768x571.png 768w\" sizes=\"auto, (max-width: 894px) 100vw, 894px\" \/><\/p>\n<p style=\"text-align: justify;\">Bog&#8217;lanish bajarilgach, faol panelda FTP-server (mikrokontroller xotirasi) asosiy papkasidagi fayllar ro&#8217;yxati (1-marta ishga tushganda bo&#8217;sh bo&#8217;ladi) ko&#8217;rinadi.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5038\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp-server2.png\" alt=\"\" width=\"891\" height=\"629\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp-server2.png 891w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp-server2-300x212.png 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp-server2-768x542.png 768w\" sizes=\"auto, (max-width: 891px) 100vw, 891px\" \/><\/p>\n<p style=\"text-align: justify;\">Smartfonda esa, &#8220;Total Commander&#8221; mobil ilovasi ishga tushirilgach asosiy papkada &#8220;FTP (\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0444\u0430\u0439\u043b\u043e\u0432)&#8221;, keyin &#8220;\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435&#8230;&#8221; buyruqlari yordamida yangi FTP-bog&#8217;lanish parametrlarini (ixtiyoriy sarlavha, IP-manzil, login, parol, passiv rejim) o&#8217;rnatamiz.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5041\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp_mobile1-473x1024.jpg\" alt=\"\" width=\"236\" height=\"512\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp_mobile1-473x1024.jpg 473w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp_mobile1.jpg 591w\" sizes=\"auto, (max-width: 236px) 100vw, 236px\" \/>\u00a0 \u00a0<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5040 alignnone\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp_mobile2-473x1024.jpg\" alt=\"\" width=\"236\" height=\"512\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp_mobile2-473x1024.jpg 473w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp_mobile2.jpg 591w\" sizes=\"auto, (max-width: 236px) 100vw, 236px\" \/><\/p>\n<p>Shundan so&#8217;ng, yaratilgan bog&#8217;lanishni tanlab, faollashtiramiz va fayllar ustidagi amallarni bajarishimiz mumkin.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5042 size-large alignnone\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp_mobile3-1024x473.jpg\" alt=\"\" width=\"640\" height=\"296\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp_mobile3-1024x473.jpg 1024w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp_mobile3-300x139.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp_mobile3-768x355.jpg 768w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/ftp_mobile3.jpg 1280w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p style=\"text-align: center;\"><strong>SD\/MicroSD kartalari bilan ishlash<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3457 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/sd_tf_cards.jpg\" alt=\"\" width=\"500\" height=\"452\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/sd_tf_cards.jpg 500w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/sd_tf_cards-300x271.jpg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3455 size-full aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/sd_tf_cards2-e1723490001123.webp\" alt=\"\" width=\"617\" height=\"569\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/sd_tf_cards2-e1723490001123.webp 617w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/sd_tf_cards2-e1723490001123-300x277.webp 300w\" sizes=\"auto, (max-width: 617px) 100vw, 617px\" \/><\/p>\n<p style=\"text-align: justify;\"><strong>1-misol.<\/strong> Ushbu misolda, &#8220;SD.h&#8221; bibliotekasidan foydalanib, matnli faylni yaratish, uni ochish va unga biron matnni saqlab qo&#8217;yish sketchini yaratamiz. Bunda, Arduino IDE ning &#8220;ReadWrite&#8221; (&#8220;\u0424\u0430\u0439\u043b\/\u041f\u0440\u0438\u043c\u0435\u0440\u044b\/SD\/ReadWrite&#8221;) namunaviy sketchidan foydalanamiz.<\/p>\n<p><em>Kerakli materiallar:<\/em><\/p>\n<p><em>1) Wemos D1 mini platasi, USB-kabel, o&#8217;tkazgichlar<\/em>;<br \/>\n<em>2) SD-modul;<br \/>\n3) SD\/MicroSD-karta;<br \/>\n<\/em><\/p>\n<p><em>Ulanish sxemasi:<\/em><\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3452 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/wemos_micro_sd_bb-e1723490297552.jpg\" alt=\"\" width=\"396\" height=\"752\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/wemos_micro_sd_bb-e1723490297552.jpg 396w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/wemos_micro_sd_bb-e1723490297552-158x300.jpg 158w\" sizes=\"auto, (max-width: 396px) 100vw, 396px\" \/><br \/>\n<em>&#8220;ReadWrite&#8221; sketchi (qisqartirilgan):<\/em><\/p>\n<pre><code><\/code><\/pre>\n<p><em>Skrinshot:<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3672\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/sd_read_write.jpg\" alt=\"\" width=\"897\" height=\"355\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/sd_read_write.jpg 897w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/sd_read_write-300x119.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/sd_read_write-768x304.jpg 768w\" sizes=\"auto, (max-width: 897px) 100vw, 897px\" \/><\/p>\n<p style=\"text-align: justify;\"><strong>2-misol. <\/strong>&#8220;\u0424\u0430\u0439\u043b\/\u041f\u0440\u0438\u043c\u0435\u0440\u044b\/SD&#8221; menyusidagi <strong>&#8220;listfiles&#8221;<\/strong> sketchi yordamida SD-kartada mavjud bo&#8217;lgan elementlar (papka va fayllar) ro&#8217;yxatini port monitoriga chiqarish mumkin. Ushbu misolda shu sketchni ko&#8217;rib chiqamiz. Kerakli komponentlar va bog&#8217;lanish sxemasi o&#8217;zgarmaydi.<\/p>\n<p><em>Sketch:<\/em><\/p>\n<pre><code><\/code><\/pre>\n<p><em>Skrinshot:<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3665 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/sd_listfiles.jpg\" alt=\"\" width=\"600\" height=\"214\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/sd_listfiles.jpg 600w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/sd_listfiles-300x107.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p style=\"text-align: justify;\"><strong>3-misol.<\/strong> Navbatdagi namunaviy sketch ham oldingisidan katta farq qilmaydi. &#8220;Datalogger&#8221; namunaviy sketchi asosida yaratilgan ushbu sketch yordamida A0 analog piniga ulangan termistor ko&#8217;rsatkichlarini ma&#8217;lum davriylikda SD-kartadagi &#8220;datalog.txt&#8221; matnli fayliga yozishni ko&#8217;rib chiqamiz.<\/p>\n<p style=\"text-align: justify;\"><em>Wemos D1 mini platasida analog pin soni faqat 1 ta bo&#8217;lgani sababli, qulaylik uchun faqat shu pindan foydalanish bilan cheklanamiz. Lekin sketchga tegishli o&#8217;zgartirishlar kiritish orqali va raqamli pinlardan foydalanib, turli raqamli datchiklar ko&#8217;rsatkichlarini ham SD-kartadagi matnli faylga yozishni tashkil qilish mumkin.<\/em><\/p>\n<p><em>Kerakli materiallar:<\/em><\/p>\n<p><em>1) Wemos D1 mini platasi, USB-kabel, o&#8217;tkazgichlar<\/em>;<br \/>\n<em>2) SD-modul;<br \/>\n3) SD\/MicroSD-karta;<br \/>\n4) Termistor (R1) va rezistor (R2, 10 kOm) juftligi.<br \/>\n<\/em><\/p>\n<p><em>Ulanish sxemasi:<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3481 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/wemos_micro_sd_sensor_bb.jpg\" alt=\"\" width=\"346\" height=\"600\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/wemos_micro_sd_sensor_bb.jpg 346w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/wemos_micro_sd_sensor_bb-173x300.jpg 173w\" sizes=\"auto, (max-width: 346px) 100vw, 346px\" \/><\/p>\n<p><em>&#8220;Datalogger&#8221; sketchi (takomillashtirilgan):<\/em><\/p>\n<pre><code><\/code><\/pre>\n<p><em>1-skrinshot (Port monitoriga chiqarilgan datchik ko&#8217;rsatkichlari nusxasi):<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3482 size-full aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/datalog.jpg\" alt=\"\" width=\"976\" height=\"600\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/datalog.jpg 976w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/datalog-300x184.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/datalog-768x472.jpg 768w\" sizes=\"auto, (max-width: 976px) 100vw, 976px\" \/><\/p>\n<p><em>2-skrinshot (&#8220;datalog.txt&#8221; fayliga saqlangan datchik ko&#8217;rsatkichlari):<\/em><\/p>\n<p style=\"text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3485 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/datalog_txt.jpg\" alt=\"\" width=\"602\" height=\"402\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/datalog_txt.jpg 602w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/datalog_txt-300x200.jpg 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/p>\n<p style=\"text-align: justify;\">Yuqoridagilardan tashqari, &#8220;\u0424\u0430\u0439\u043b\/\u041f\u0440\u0438\u043c\u0435\u0440\u044b\/SD&#8221; menyusidagi &#8220;<strong>Files<\/strong>&#8221; sketchi yordamida SD-kartada yangi fayl yaratish va uni o&#8217;chirib tashlash mumkin. Bundan tashqari, fayldagi yozuvni o&#8217;qish va undagi raqamlarga mos ravishda tashqi qurilmalar (relelar) holatini matnli fayldagi shablon asosida boshqarish ham mumkin. Biz ular haqida to&#8217;xtalib o&#8217;tirmaymiz, ya&#8217;ni ularni mustaqil o&#8217;rganish uchun qoldiramiz.<\/p>\n<p style=\"text-align: justify;\"><strong>4-misol.<\/strong> Navbatdagi bosqichda Arduino UNO platasi yordamida SD-kartada joylashgan &#8220;WAV&#8221; formatidagi musiqa faylini plataga ulangan spiker (dinamik) orqali eshittirish jarayonini ko&#8217;rib chiqamiz. Buning uchun yuqoridagi bibliotekalardan tashqari, &#8220;wav&#8221; formatli tovush fayllari bilan ishlovchi &#8220;<a href=\"https:\/\/github.com\/TMRh20\/TMRpcm\">TMRpcm.h<\/a>&#8221; bibliotekasidan foydalanamiz (<em>bibliotekadan faqat AVR arxitekturali mikrokontrollerlarda foydalanish mumkin. Boshqa mikrokontrollerlar uchun tegishli bibliotekalardan foydalanishga to&#8217;g&#8217;ri keladi. Masalan, ESP32-S3 platalari uchun <a href=\"https:\/\/github.com\/schreibfaul1\/ESP32-audioI2S\">maxsus biblioteka<\/a> yordamida <a href=\"https:\/\/microkontroller.ru\/esp32-projects\/internet-radio-na-esp32-i-module-max98357a\/\">MP3-pleyer yoki Internet-radio<\/a> loyihalarini ham yaratish mumkin. Biroq, bunday loyihalar bilan ishlashni o&#8217;quvchilarning ixtiyoriga qoldiramiz). <\/em><\/p>\n<p style=\"text-align: justify;\"><em>Tovush spikeri to&#8217;g&#8217;ridan-tog&#8217;ri UNO platasiga ulangan taqdirda tovush balandligi juda past bo&#8217;lishi mumkin. Uning balandligini oshirish uchun maxsus tovush kuchaytirish moduli yoki oddiy tranzistorli kuchaytirgich sxemasidan foydalanish mumkin.\u00a0<\/em><\/p>\n<p style=\"text-align: justify;\">Arduino (AVR) platasi takt chastotasining pastligi va tezkor xotirasi kamligi sababli, u yuqori sifatli tovush fayllarini o&#8217;qish imkoniyatiga emas, lekin u yordamida quyidagi talablarga javob beradigan &#8220;wav&#8221; formatidagi tovush faylini eshitish mumkin (&#8220;wav&#8221; formatiga o&#8217;tkazishda <a href=\"https:\/\/www.sdcard.org\/downloads\/formatter_4\/\">SD formatter<\/a> utilitasidan yoki <a href=\"https:\/\/audio.online-convert.com\/ru\/convert-to-wav\">onlayn konverter<\/a>dan ham foydalanish mumkin):<\/p>\n<ul>\n<li>sekundiga sempllar soni (diskretizatsiya chastotasi) &#8211; 16000 gerts;<\/li>\n<li>kanallar soni &#8211; 1 ta (mono);<\/li>\n<li>sempldagi bitlar soni &#8211; 8.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Tovushni eshittirish funksiyasi formati: <strong>&lt;obyekt_nomi&gt;.play(fayl_nomi, vaqt<\/strong><strong>).<\/strong> Masalan:<br \/>\n<strong>player.play(&#8220;wav\/sound.wav&#8221;,30);<\/strong> \/\/ &#8220;wav&#8221; papkasidagi &#8220;sound.wav&#8221; tovush faylini 30-sekunddan boshlab eshittirish<\/p>\n<p style=\"text-align: justify;\"><em>Kerakli materiallar:<\/em><\/p>\n<p><em>1) Arduino UNO platasi, USB-kabel, o&#8217;tkazgichlar<\/em>;<br \/>\n<em>2) SD-modul va SD\/MicroSD-karta;<br \/>\n3) Audio spiker (dinamik).<br \/>\n<\/em><\/p>\n<p><em>Ulanish sxemasi (SD-modul\/UNO: CS\/4, MOSI\/11, MISO\/12, CLK\/13, GND\/GND, 5V\/5V):<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3662 size-full aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/uno_sd_wav_player_bb.jpg\" alt=\"\" width=\"459\" height=\"600\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/uno_sd_wav_player_bb.jpg 459w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/uno_sd_wav_player_bb-230x300.jpg 230w\" sizes=\"auto, (max-width: 459px) 100vw, 459px\" \/><\/p>\n<p><em>Sketch:<\/em><\/p>\n<pre><code><\/code><\/pre>\n<p><em>Video (Spikerni UNO ga 1 ta KT315 tranzistorli oddiy kuchaytirgich sxemasi orqali ulangan):<\/em><\/p>\n<div class=\"epyt-video-wrapper\"><iframe loading=\"lazy\"  id=\"_ytid_46271\"  width=\"800\" height=\"450\"  data-origwidth=\"800\" data-origheight=\"450\"  data-relstop=\"1\" src=\"https:\/\/www.youtube.com\/embed\/Z17oDn8DoDc?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=0&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;hl=ru_RU&#038;theme=dark&#038;color=red&#038;controls=1&#038;\" class=\"__youtube_prefs__  epyt-is-override  no-lazyload\" data-vol=\"25\"  title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/div>\n<p style=\"text-align: justify;\"><strong>5-misol.<\/strong> Endigi misolda &#8220;<strong>DFPlayer mini<\/strong>&#8221; nomli MP3\/WMA\/WAV audiopleyer moduli yordamida turli xil formatlardagi tovush fayllarini eshittirish uchun mo&#8217;ljallangan namunaviy &#8220;<strong>GetStarted<\/strong>&#8221; sketchini ko&#8217;rib chiqamiz. Sketch &#8220;DFPlayer mini&#8221; ga o&#8217;rnatilgan MicroSD-kartadagi barcha audiofayllarning har birini navbat bilan 10 sekunddan eshittirishga mo&#8217;ljallangan. Ro&#8217;yxat tugagach, yana boshidan boshlanadi.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3684 size-medium alignnone\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dfplayer-mini-mp3-module-300x239.jpg\" alt=\"\" width=\"300\" height=\"239\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dfplayer-mini-mp3-module-300x239.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dfplayer-mini-mp3-module.jpg 600w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3691 size-medium alignright\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dfplayer-mini-mp3-module2-300x180.jpg\" alt=\"\" width=\"300\" height=\"180\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dfplayer-mini-mp3-module2-300x180.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dfplayer-mini-mp3-module2.jpg 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p style=\"text-align: center;\"><em>&#8220;DFPlayer mini&#8221; audiopleyeri<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3689 size-medium\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dfplayer_mini_pinout_front-scaled-2-300x180.jpg\" alt=\"\" width=\"300\" height=\"180\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dfplayer_mini_pinout_front-scaled-2-300x180.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dfplayer_mini_pinout_front-scaled-2.jpg 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3690 size-medium alignright\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dfplayer_mini_pinout_back-scaled-1-300x180.jpg\" alt=\"\" width=\"300\" height=\"180\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dfplayer_mini_pinout_back-scaled-1-300x180.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/dfplayer_mini_pinout_back-scaled-1.jpg 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p style=\"text-align: center;\"><em>Modul pinlari joylashuvi va nomlanishi<\/em><\/p>\n<p style=\"text-align: justify;\">Ushbu modul Arduino bilan birgalikda yoki mustaqil qurilma sifatida sifatida ham foydalanishga mo&#8217;ljallangan. Mustaqil qurilma sifatida foydalanishning ham 2 xil rejimi bor. Soddalashtirilgan (&#8220;IO mode&#8221;) va kengaytirilgan (&#8220;ADKEY mode&#8221;) rejimlar. Ushbu rejimlarda ishlash uchun modulning pinlari vazifalarini bilish zarur bo&#8217;ladi:<\/p>\n<table>\n<thead>\n<tr>\n<th><strong>Pin<\/strong><\/th>\n<th><strong>Vazifasi<\/strong><\/th>\n<th><strong>Izohlar<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>VCC<\/td>\n<td>Kiruvchi kuchlanish<\/td>\n<td>Kiruvchi kuchlanish &#8216;+&#8217; kontakti. DC3.2~5.0V; DC4.2V<\/td>\n<\/tr>\n<tr>\n<td>RX<\/td>\n<td>UART kirish<\/td>\n<td>RX kirish<\/td>\n<\/tr>\n<tr>\n<td>TX<\/td>\n<td>UART chiqish<\/td>\n<td>TX chiqish<\/td>\n<\/tr>\n<tr>\n<td>DAC_R<\/td>\n<td>O&#8217;ng audio chiqish<\/td>\n<td>Dinamik yoki naushnikka o&#8217;ng audio chiqish<\/td>\n<\/tr>\n<tr>\n<td>DAC_L<\/td>\n<td>Chap audio chiqish<\/td>\n<td>Dinamik yoki naushnikka chap audio chiqish<\/td>\n<\/tr>\n<tr>\n<td>SPK2<\/td>\n<td>Dinamikka &#8216;-&#8216; chiqishi<\/td>\n<td>Dinamikka kuchaytirgichdan &#8216;-&#8216; chiqish kontakti<\/td>\n<\/tr>\n<tr>\n<td>GND<\/td>\n<td>Kiruvchi kuchlanish &#8216;-&#8216;<\/td>\n<td>Kiruvchi kuchlanish &#8216;-&#8216; kontakti<\/td>\n<\/tr>\n<tr>\n<td>SPK1<\/td>\n<td>Dinamikka &#8216;+&#8217; chiqishi<\/td>\n<td>Dinamikka 3W kuchaytirgichdan &#8216;+&#8217; chiqish kontakti<\/td>\n<\/tr>\n<tr>\n<td>IO1<\/td>\n<td>1-trigger (Soddalashtirilgan boshqaruv 1-pini)<\/td>\n<td>Qisqa bosish &#8211; oldingi trekni eshittirish, uzun bosish \u2013 tovushni pasaytirish (IO rejimida qo&#8217;llaniladi)<\/td>\n<\/tr>\n<tr>\n<td>GND<\/td>\n<td>GND<\/td>\n<td>Kiruvchi kuchlanish &#8216;-&#8216; kontakti<\/td>\n<\/tr>\n<tr>\n<td>IO2<\/td>\n<td>2-trigger (Soddalashtirilgan boshqaruv 2-pini)<\/td>\n<td>Qisqa bosish &#8211; keyingi trekni eshittirish, uzun bosish \u2013 tovushni balandlatish (IO rejimida qo&#8217;llaniladi)<\/td>\n<\/tr>\n<tr>\n<td>ADKEY1<\/td>\n<td>Kengaytirilgan boshqaruv 1-pini<\/td>\n<td>Turli qiymatli rezistorlar va tugmalar juftligi asosida boshqaruv 1-pini (ADKEY rejimida qo&#8217;llaniladi)<\/td>\n<\/tr>\n<tr>\n<td>ADKEY2<\/td>\n<td>Kengaytirilgan boshqaruv 2-pini<\/td>\n<td>Turli qiymatli rezistorlar va tugmalar juftligi asosida boshqaruv 2-pini (ADKEY rejimida qo&#8217;llaniladi)<\/td>\n<\/tr>\n<tr>\n<td>USB+<\/td>\n<td>USB+ DP<\/td>\n<td>USB port kirish\/chiqish &#8220;DP&#8221; kontakti<\/td>\n<\/tr>\n<tr>\n<td>USB-<\/td>\n<td>USB- DM<\/td>\n<td>USB port kirish\/chiqish &#8220;DM&#8221; kontakti<\/td>\n<\/tr>\n<tr>\n<td>BUSY<\/td>\n<td>Pleyer bandligi (holati)<\/td>\n<td>Low \u2013 ulangan, High \u2013 uzilgan<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3693 aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/df-player-mini-adkey-control.jpg\" alt=\"\" width=\"800\" height=\"338\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/df-player-mini-adkey-control.jpg 800w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/df-player-mini-adkey-control-300x127.jpg 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/df-player-mini-adkey-control-768x324.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p style=\"text-align: center;\"><em>ADDKEY rejimida boshqaruv (segment &#8211; trekni anglatadi)<\/em><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3694 aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/df-player-mini-io-mode.jpg\" alt=\"\" width=\"600\" height=\"330\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/df-player-mini-io-mode.jpg 600w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/df-player-mini-io-mode-300x165.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p style=\"text-align: center;\"><em>IO rejimida boshqaruv (IO1, IO2 tugmalari vazifasi yuqoridagi jadvalda keltirilgan).<\/em><\/p>\n<p style=\"text-align: justify;\">Arduino yordamida boshqaruvda RX va TX pinlaridan foydalaniladi. Ushbu rejimda modulning barcha imkoniyatlaridan to&#8217;liq foydalanish imkoniyati mavjud va ular dastur yordamida yanada kengaytirilishi mumkin. Moduli bilan ishlash uchun ko&#8217;plab bibliotekalar mavjud, biz &#8220;DFRobotDFPlayerMini.h&#8221; bibliotekasidan foydalanamiz. Biblioteka o&#8217;rnatilganidan keyin, uni qo&#8217;llashga mo&#8217;ljallangan namunaviy sketchlar &#8220;<strong>\u0424\u0430\u0439\u043b\/\u041f\u0440\u0438\u043c\u0435\u0440\u044b\/DFRobotDFPlayerMini<\/strong>&#8221; menyisida ko&#8217;rinadi.<\/p>\n<p style=\"text-align: justify;\"><em>Kerakli materiallar:<\/em><\/p>\n<p><em>1) Arduino UNO platasi, USB-kabel, o&#8217;tkazgichlar<\/em>;<br \/>\n<em>2) &#8220;DFPlayer mini&#8221; moduli va MicroSD-karta (32 GB gacha);<br \/>\n3) Audio spiker (dinamik);<br \/>\n4) Rezistor 1 kOm (2 ta).<\/em><\/p>\n<p><em>Bog&#8217;lanish sxemasi:<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3674 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/uno_dfplayer_auto_bb.jpg\" alt=\"\" width=\"454\" height=\"600\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/uno_dfplayer_auto_bb.jpg 454w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/uno_dfplayer_auto_bb-227x300.jpg 227w\" sizes=\"auto, (max-width: 454px) 100vw, 454px\" \/><\/p>\n<p><em>&#8220;GetStarted&#8221; sketchi (soddalashtirilgan ko&#8217;rinishi):<\/em><\/p>\n<pre><code><\/code><\/pre>\n<p><em>Video:<\/em><\/p>\n<div class=\"epyt-video-wrapper\"><iframe loading=\"lazy\"  id=\"_ytid_79693\"  width=\"800\" height=\"450\"  data-origwidth=\"800\" data-origheight=\"450\"  data-relstop=\"1\" src=\"https:\/\/www.youtube.com\/embed\/niaI7QCg5NM?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=0&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;hl=ru_RU&#038;theme=dark&#038;color=red&#038;controls=1&#038;\" class=\"__youtube_prefs__  epyt-is-override  no-lazyload\" data-vol=\"25\"  title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/div>\n<p style=\"text-align: justify;\">Yuqorida aytilganidek, DFPlayer mini bilan ishlashda bir nechta boshqa bibliotekalardan ham foydalanish mumkin. Dragon Knight muallifligidagi &#8220;DFPlayer.h&#8221; bibliotekasidan foydalanish bo&#8217;yicha ma&#8217;lumotlarni ushbu <a href=\"https:\/\/github.com\/Dragon-Knight\/DFPlayer?ysclid=m019ul70vt602823481\">havola<\/a> (biblioteka fayllari manzili) orqali olish, uning imkoniyatlarini yuqoridagi bibliotekaniki bilan solishtirish mumkin.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><strong>RFID-xotira bilan ishlash<\/strong><\/p>\n<p style=\"text-align: justify;\">Arduinoda RFID qurilmalari bilan ishlashda SPI interfeysidan foydalaniladi.<\/p>\n<p style=\"text-align: center;\">\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-4096\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/09\/rfid_reader.webp\" alt=\"\" width=\"640\" height=\"352\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/09\/rfid_reader.webp 970w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/09\/rfid_reader-300x165.webp 300w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/09\/rfid_reader-768x423.webp 768w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p style=\"text-align: center;\"><strong>RFID-kalit va RFID-qabul qilgich moduli<\/strong><\/p>\n<p style=\"text-align: justify;\"><strong>RFID-qabul qilgich moduli<\/strong> (bundan keyin qulaylik uchun <strong>RFID-modul<\/strong> deb ataymiz) &#8211; RFID-kalit xotirasini o&#8217;qish va olingan ma&#8217;lumotni qayta ishlash qurilmasiga yuboruvchi yoki RFID-kalitga yangi ma&#8217;lumotlarni yozuvchi qurilma. Biz Arduino loyihalarini yaratishda MFRC522 chipi asosidagi &#8220;RFID-RC522&#8221; deb nomlangan RFID-modulidan foydalanamiz.<\/p>\n<p style=\"text-align: justify;\"><strong>RFID-kalit, RFID-karta<\/strong> (&#8220;RFID-\u043c\u0435\u0442\u043a\u0430&#8221;, &#8220;\u043c\u0435\u0442\u043a\u0430&#8221;, bundan keyin <strong>RFID-kalit<\/strong> deyilganda ularning har ikkisi ham tushunililishi mumkin) &#8211; kuchsiz radiouzatkich bilan ta&#8217;minlangan va kichik hajmdagi xotiraga ega bo&#8217;lgan, undan foydalanuvchi shaxsni identifikatsiyalash uchun foydalaniladigan elektron qurilma. Ularndan foydalanish uchun uni shunchaki RFID-qabul qilgich moduliga yaqinlashtirish kifoya.<\/p>\n<p style=\"text-align: justify;\">RFID-kalit, agar u qayta yozish imkoniyatiga ega bo&#8217;lsa, bir vaqtning o&#8217;zida uzatkich va qabul qilish rejimlarida ishlashi mumkin. Bir rejimdan boshqasiga o&#8217;tkazish RFID-qabul qilgich moduli tomonidan bajariladi. Unutmaslik kerakki, har qanday RFID-kalitga ham yangi ma&#8217;lumotni (kodni) yozishning imkoni bo&#8217;lmaydi. Buning uchun kalit qayta yozishga mo&#8217;ljallangan bo&#8217;lishi kerak.<\/p>\n<p style=\"text-align: justify;\"><strong>RFID-kalit elektr ta&#8217;minoti<\/strong> uning elektromagnit maydon elementi yordamida hosil qilingan kuchsiz elektr energiyasi hisobidan amalga oshiriladi, bunday energiya hosil bo&#8217;lishi uchun esa, kalitni RFID-modulga yaqinlashtirish yetarli. Demak, <strong>RFID-kalit hech qanday tashqi elektr manbaiga ulanmaydi!<\/strong><\/p>\n<p style=\"text-align: justify;\">MIFARE protokolidagi &#8220;MIFARE Classic 1K&#8221; kaliti xotirasi quyidagi strukturaga ega bo&#8217;ladi:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4098 size-medium aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/09\/mifare-212x300.png\" alt=\"\" width=\"212\" height=\"300\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/09\/mifare-212x300.png 212w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/09\/mifare.png 680w\" sizes=\"auto, (max-width: 212px) 100vw, 212px\" \/><\/p>\n<p style=\"text-align: justify;\">MFRC522 modulini turli Arduino platalariga to&#8217;g&#8217;ri ulash bo&#8217;yicha <a href=\"https:\/\/github.com\/miguelbalboa\/rfid\/tree\/master\">ma&#8217;lumotlar<\/a>:<\/p>\n<table>\n<tbody>\n<tr>\n<td>MFRC522<\/td>\n<td>Arduino Uno<\/td>\n<td>Arduino Mega<\/td>\n<td>Arduino Nano v3<\/td>\n<td>Arduino Leonardo\/Micro<\/td>\n<td>Arduino Pro Micro<\/td>\n<\/tr>\n<tr>\n<td>RST<\/td>\n<td>9<\/td>\n<td>5<\/td>\n<td>D9<\/td>\n<td>RESET\/ICSP-5<\/td>\n<td>RST<\/td>\n<\/tr>\n<tr>\n<td>SDA(SS)<\/td>\n<td>10<\/td>\n<td>53<\/td>\n<td>D10<\/td>\n<td>10<\/td>\n<td>10<\/td>\n<\/tr>\n<tr>\n<td>MOSI<\/td>\n<td>11 (ICSP-4)<\/td>\n<td>51<\/td>\n<td>D11<\/td>\n<td>ICSP-4<\/td>\n<td>16<\/td>\n<\/tr>\n<tr>\n<td>MISO<\/td>\n<td>12 (ICSP-1)<\/td>\n<td>50<\/td>\n<td>D12<\/td>\n<td>ICSP-1<\/td>\n<td>14<\/td>\n<\/tr>\n<tr>\n<td>SCK<\/td>\n<td>13 (ICSP-3)<\/td>\n<td>52<\/td>\n<td>D13<\/td>\n<td>ICSP-3<\/td>\n<td>15<\/td>\n<\/tr>\n<tr>\n<td>3.3V<\/td>\n<td>3.3V<\/td>\n<td>3.3V<\/td>\n<td>3,3V<\/td>\n<td>3,3V<\/td>\n<td>3,3V<\/td>\n<\/tr>\n<tr>\n<td>GND<\/td>\n<td>GND<\/td>\n<td>GND<\/td>\n<td>GND<\/td>\n<td>GND<\/td>\n<td>GND<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify;\">Umuman olganda, Arduino yordamida MFRC522 chipi asosidagi RFID-qabul qilgich (RFID kalitni o&#8217;qish moduli) orqali RFID-kalitlarni o&#8217;qish va ularning UID kodlarini aniqlash, ularga asoslanib kalitlar yordamida yuklamani boshqarish, shuningdek, qayta yozish ruxsat etilgan kalitga yangi UID kodi va boshqa ma&#8217;lumotlarni yozish yoki kalitlarni nusxalash kabi amallarni bajarish mumkin.<\/p>\n<p style=\"text-align: justify;\">Biroq, unga ma&#8217;lumot yozish uchun RFID-kalitning strukturasi, &#8220;Xavfsizlik bloki&#8221; (&#8220;Sector trailer&#8221;) va uning &#8220;A&#8221; hamda &#8220;B&#8221; kalitlari, &#8220;Ruxsat etish bitlari&#8221; (&#8220;Access bits&#8221;) kabi bir qator tushunchalar bilan yaqindan tanishib chiqish talab etiladi. Shundan so&#8217;ng, RFID-kalitlarga ma&#8217;lumot yozish, ularni nusxalash kabi murakkab vazifalarni bajarish uchun &#8220;ReadAndWrite&#8221;, &#8220;rfid_write_personal_data&#8221;, &#8220;RFID-Cloner&#8221; kabi namunaviy sketchlaridan foydalanish mumkin.<\/p>\n<p style=\"text-align: justify;\">Biz esa, amaliy mashg&#8217;ulotlarda faqat RFID-kalitning UID kodini aniqlash va uning asosida Arduino platasiga ulangan svetodiodni boshqarish, shuningdek, UID kodni o&#8217;zgartirish, kalitga foydalanuvchi ma&#8217;lumotini saqlab qo&#8217;yish va uni o&#8217;qish jarayonlarini ko&#8217;rib chiqish bilan cheklanamiz.<\/p>\n<p style=\"text-align: justify;\">Misollarda Arduino IDE ichki bibliotekalari ro&#8217;yxatidagi (Miguel Balboa muallifligidagi) <a href=\"https:\/\/github.com\/miguelbalboa\/rfid\">MFRC522<\/a> bibliotekasidan foydalanamiz.<\/p>\n<p style=\"text-align: justify;\"><strong>1-misol.<\/strong> Dastlab RFID-kalitni va undagi ma&#8217;lumotlarni o&#8217;qish uchun bibliotekaning <strong>&#8220;<\/strong><strong>Dumpinfo&#8221;<\/strong> namunaviy sketchidan foydalanamiz. Keyinchalik Arduino yuklamasini RFID yordamida boshqarish uchun ko&#8217;p hollarda kalitning UID kodini aniqlashning o&#8217;zi yetarli bo&#8217;ladi. Bunday kod kalitni modulga yaqinlashtirgan zahoti ko&#8217;rsatiladi. RFID-kalitdagi batafsil ma&#8217;lumotlarni olish uchun esa, kalitni oxirgi ma&#8217;lumot ko&#8217;rsatilgunga qadar moduldan uzoqlashtirmasdan ushlab turilishi kerak, aksincha xatolik yuz bergani haqidagi <em>&#8220;Timeout in communication&#8221;<\/em> yozuvi ko&#8217;rsatiladi.<\/p>\n<p><em>Kerakli materiallar:<\/em><\/p>\n<p><em>1) Arduino UNO, maket platasi, USB-kabel, o&#8217;tkazgichlar;<br \/>\n2) RC522 RFID-moduli va RFID-kalitlar.<br \/>\n<\/em><\/p>\n<p><em>Bog&#8217;lanish sxemasi:<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4095 \" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/09\/rfid_arduino-e1725558705868.jpg\" alt=\"\" width=\"656\" height=\"339\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/09\/rfid_arduino-e1725558705868.jpg 588w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/09\/rfid_arduino-e1725558705868-300x155.jpg 300w\" sizes=\"auto, (max-width: 656px) 100vw, 656px\" \/><\/p>\n<p><em>&#8220;Dumpinfo&#8221; sketchi:<\/em><\/p>\n<pre><code><\/code><\/pre>\n<p style=\"text-align: justify;\"><em>Natija (RFID-kalitni modul yaqinida barcha ma&#8217;lumotlar o&#8217;qilguncha ushlab turish kerak):<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4117 size-full\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/rfid_data1.jpg\" alt=\"\" width=\"600\" height=\"473\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/rfid_data1.jpg 600w, https:\/\/yarat.uz\/wp-content\/uploads\/2024\/05\/rfid_data1-300x237.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<div class=\"epyt-video-wrapper\"><iframe loading=\"lazy\"  id=\"_ytid_30416\"  width=\"800\" height=\"450\"  data-origwidth=\"800\" data-origheight=\"450\"  data-relstop=\"1\" src=\"https:\/\/www.youtube.com\/embed\/MkwxrKbjgZw?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=0&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;hl=ru_RU&#038;theme=dark&#038;color=red&#038;controls=1&#038;\" class=\"__youtube_prefs__  epyt-is-override  no-lazyload\" data-vol=\"25\"  title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/div>\n<p style=\"text-align: justify;\"><strong>2-misol.<\/strong> Endi yuqoridagi sketch yordamida aniqlangan RFID-kalit kodlaridan foydalanib, raqamli 2-pinga ulangan svetodiodini boshqarish jarayonini ko&#8217;rib chiqamiz. Buning uchun, yuqoridagi sketchga kichik o&#8217;zgartirishlar kiritamiz.<\/p>\n<p><em>Kerakli materiallar:<\/em><\/p>\n<p><em>1) Arduino UNO, maket platasi, USB-kabel, o&#8217;tkazgichlar;<br \/>\n2) RC522 RFID-moduli va RFID-kalitlar.<br \/>\n<\/em><\/p>\n<p><em>Bog&#8217;lanish sxemasi:<\/em><\/p>\n<p><em>&#8220;Dumpinfo&#8221; sketchi o&#8217;zgartirilgan varianti:<\/em><\/p>\n<pre><code><\/code><\/pre>\n<p><em>Natija:<\/em><\/p>\n<div class=\"epyt-video-wrapper\"><iframe loading=\"lazy\"  id=\"_ytid_33377\"  width=\"800\" height=\"450\"  data-origwidth=\"800\" data-origheight=\"450\"  data-relstop=\"1\" src=\"https:\/\/www.youtube.com\/embed\/ElX4y87k728?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=0&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;hl=ru_RU&#038;theme=dark&#038;color=red&#038;controls=1&#038;\" class=\"__youtube_prefs__  epyt-is-override  no-lazyload\" data-vol=\"25\"  title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/div>\n<p style=\"text-align: justify;\"><strong>3-misol.<\/strong> Endi &#8220;ChangeUID&#8221; namunaviy sketchi yordamida RFID-kalit UID kodini o&#8217;zgartirishga harakat qilib ko&#8217;ramiz. O&#8217;zgartirish muvaffaqiyatli bo&#8217;lishi kalit himoyalanmagan bo&#8217;lishi kerak!<\/p>\n<p><em>Kerakli materiallar va\u00a0<\/em><em>bog&#8217;lanish sxemasi yuqoridagi 1-misoldagi bilan bir xil.<\/em><\/p>\n<p><em>&#8220;ChangeUID&#8221; sketchi:<\/em><\/p>\n<pre><code><\/code><\/pre>\n<p><em>Natija (kalit UID kodini o&#8217;zgartirishdan himoyalanganligi sababli, o&#8217;zgartirilmadi):<\/em><\/p>\n<div class=\"epyt-video-wrapper\"><iframe loading=\"lazy\"  id=\"_ytid_85028\"  width=\"800\" height=\"450\"  data-origwidth=\"800\" data-origheight=\"450\"  data-relstop=\"1\" src=\"https:\/\/www.youtube.com\/embed\/qxT_C3-AP0c?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=0&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;hl=ru_RU&#038;theme=dark&#038;color=red&#038;controls=1&#038;\" class=\"__youtube_prefs__  epyt-is-override  no-lazyload\" data-vol=\"25\"  title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/div>\n<p style=\"text-align: justify;\"><strong>4-misol.<\/strong> Ushbu misolda &#8220;ReadAndWrite&#8221; namunaviy sketchini qisman o&#8217;zgartirib va qisqartirib, RFID-kalitning 1-sektori 4-blokiga foydalanuvchi ma&#8217;lumotini saqlab qo&#8217;yish va uni o&#8217;qish jarayolarini ko&#8217;rib chiqamiz. Original sketchda foydalanuvchi ma&#8217;lumoti 16 lik (HEX) formatidagi kodlar ko&#8217;rinishda keltirilgan. Biz qulaylik uchun, tushunarli bo&#8217;lgan matn ko&#8217;rinishida belgilab olamiz. Sketch kodi faqat qisman izohlanadi.<\/p>\n<p><em>Kerakli materiallar va\u00a0<\/em><em>bog&#8217;lanish sxemasi yuqoridagi 1-misoldagi bilan bir xil.<\/em><\/p>\n<p><em>&#8220;ReadAndWrite&#8221; sketchi tahrirlangan varianti:<\/em><\/p>\n<pre><code><\/code><\/pre>\n<p><em>Natija:<\/em><\/p>\n<div class=\"epyt-video-wrapper\"><iframe loading=\"lazy\"  id=\"_ytid_43820\"  width=\"800\" height=\"450\"  data-origwidth=\"800\" data-origheight=\"450\"  data-relstop=\"1\" src=\"https:\/\/www.youtube.com\/embed\/-zLZsDK3cHM?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=0&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;hl=ru_RU&#038;theme=dark&#038;color=red&#038;controls=1&#038;\" class=\"__youtube_prefs__  epyt-is-override  no-lazyload\" data-vol=\"25\"  title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/div>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><em><strong>Topshiriq. <\/strong><\/em><\/p>\n<p style=\"text-align: justify;\"><em>Yuqoridagi 5-sketchni takomillashtirib, MP3-pleyer yarating. Ya&#8217;ni, uni &#8220;DFPlayer mini&#8221; moduliga o&#8217;rnatilgan MicroSD-kartadagi audiofayllarni tugmalar yordamida eshittirish, ularni tanlash, tovush balandligini regulirovka qilishga moslashtiring. Sxema taxminan quyidagi ko&#8217;rinishda bo&#8217;lishi kerak:<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3677 aligncenter\" src=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/uno_dfplayer_control_bb.jpg\" alt=\"\" width=\"551\" height=\"600\" srcset=\"https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/uno_dfplayer_control_bb.jpg 551w, https:\/\/yarat.uz\/wp-content\/uploads\/2023\/05\/uno_dfplayer_control_bb-276x300.jpg 276w\" sizes=\"auto, (max-width: 551px) 100vw, 551px\" \/><\/p>\n<p><em>Video:<\/em><\/p>\n<div class=\"epyt-video-wrapper\"><iframe loading=\"lazy\"  id=\"_ytid_47403\"  width=\"800\" height=\"450\"  data-origwidth=\"800\" data-origheight=\"450\"  data-relstop=\"1\" src=\"https:\/\/www.youtube.com\/embed\/GXmvYlDR73I?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=0&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;hl=ru_RU&#038;theme=dark&#038;color=red&#038;controls=1&#038;\" class=\"__youtube_prefs__  epyt-is-override  no-lazyload\" data-vol=\"25\"  title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/div>\n<p>Videoda tugmalar o&#8217;rniga o&#8217;tkazgich kontaktlaridan foydalanilgan.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>EEPROM-xotira bilan ishlash Nazariy darsda EEPROM-xotira haqida yetarlicha ma&#8217;lumot berilgan. Shuning uchun, to&#8217;g&#8217;ridan-to&#8217;g&#8217;ri ularga oid misollarni ko&#8217;rib chiqishga o&#8217;tamiz. Misollar: &nbsp; PROGMEM-xotira bilan ishlash Progmem-xotira bilan ishlash bo&#8217;yicha ma&#8217;lumotlar nazariy darsda keltirilgan. Shuning uchun to&#8217;g&#8217;ridan-to&#8217;g&#8217;ri amaliy misollarga o&#8217;tamiz. Progmem-xotiradan oddiy sonlarni o&#8217;qish: Natija: Bir o&#8217;lchovli massivni\u00a0o&#8217;qishga misol: Natija: Ikki o&#8217;lchovli massivni o&#8217;qishga misol: Natija: Bir [&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-123","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\/123","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=123"}],"version-history":[{"count":78,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/123\/revisions"}],"predecessor-version":[{"id":5055,"href":"https:\/\/yarat.uz\/index.php?rest_route=\/wp\/v2\/posts\/123\/revisions\/5055"}],"wp:attachment":[{"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yarat.uz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}