12+
Robototexnika asoslari fanidan laboratoriya mashg’ulotlari

Бесплатный фрагмент - Robototexnika asoslari fanidan laboratoriya mashg’ulotlari

O’quv qo’llanma

Введите сумму не менее null ₽, если хотите поддержать автора, или скачайте книгу бесплатно.Подробнее

Объем: 252 бумажных стр.

Формат: epub, fb2, pdfRead, mobi

Подробнее

ANNOTASIYA

Mazkur o`quv qo`llanma, O`zbekiston Respublikasi oliy o`quv yurtlarining «Texnologik ta’lim» kafedralarida uzoq yillar davomida to`planilgan tajribalar va rivojlangan xorijiy mamlakatlar oliy o`quv yurtlarining keyingi yillarda qo`llayotgan «Robototexnika asoslari» fanining dasturlaridan foydalanildi. Qo`llanmaga kiritilgan har bir laboratoriya ishida qat’iy ketma-ketlikka rioya qilingan. Dastlab ishning maqsadi, so`ngra ish to`g`risida qisqa va aniq nazariy ma’lumot bayon etiladi. Bu o`rinda shuni takidlash kerakki, mualliflar talabalarning vaqtini tejash maqsadida imkon boricha ishning nazariyasini uning tavsifida yetarli darajada to`la yoritishga harakat qilgan. Laboratoriya mashg`ulotlarni bajarishda, mos ravishda ilg`or pedagogik texnologiyalardan foydalanish usullari namuna sifatida yoritilgan. Talaba yanada chuqurroq va atroflicha keng nazariy bilimlarni qo`llanmada hamda, har bir laboratoriya ishi uchun tavsiya etilgan darslik va o`quv qo`llanmalardan ham o`zlashtirishi mumkin.

ANNOTATION

`This textbook has been used over many years of experience in the physics and technical faculties of technical universities of the Republic of Uzbekistan, and in recent years, the «Fundamentals of Robotics» programs of advanced domestic and foreign countries have been used. Each laboratory included in the application is strictly followed. The initial goal of the work is to briefly and clearly summarize the work. It should be noted that the author has adequately described labor theory in its description to save time. The laboratory was described as a model for the proper use of educational technology in the implementation of exercises. The student can also apply broader theoretical knowledge, as well as provide textbooks and study guides recommended for each laboratory.

АННОТАЦИЯ

Данное учебное пособие использовалось на многолетнем опыте на физика-технических факультетах технических вузов Республики Узбекистан, а также в последние годы были использованы программы по «Основы робототехника» передовых отечественных и зарубежных стран. Каждая лаборатория, включенная в заявку, строго соблюдается. Первоначально целью работы является краткое и четкое подведение итогов работы. Следует отметить, что автор адекватно описал теорию труда в ее описании, чтобы сэкономить время. Лаборатория была описана как модель для правильного использования педагогических технологий при выполнении упражнений. Студент также может применять более широкие теоретические знания, а также редоставлять учебники и учебные пособия, рекомендуемые для каждой лабораторной работы.

KIRISH

O`zbekiston Respublikasida kadrlar tayyorlash milliy dasturi asosida, Oliy O`quv yurtlarining asosiy vazifasi har tomonlama yetuk, raqobatbardosh, jamiyat hayotiga moslashgan va o`z kasbi bo`yicha fanni yuqori saviyada o`zlashtirgan kadrlar tayyorlashdan iboratdir.

Hozirgi paytda davlat andozalari (standartlari) asosida barcha yo`nalishlar bo`yicha bakalavrlar tayyorlash uchun o`quv rejalari va fanlarning namunaviy dasturlari ishlab chiqilmoqda. Unda halqaro umum ta’lim andozalarining qo`llanilishi yoshlarni o`qitishda o`zbek xalqining boy ma’naviy merosidan, hamda jahonning ilg`or tajribalaridan keng foydalanish imkonini beradi.

Mazkur o`quv qo`llanma, O`zbekiston Respublikasi texnika oliy o`quv yurtlarining «Texnologik ta’lim» kafedralarida uzoq yillar davomida to`planilgan tajribalar va mamlakatimiz hamda rivojlangan xorijiy mamlakatlar oliy o`quv yurtlarining keyingi yillarda qo`llayotgan «Robototexnika asoslari» fanining dasturlaridan foydalanildi.

Talabalarning «Robototexnika asoslari» fanini o`zlashtirish uchun o`qitishning ilg`or va zamonaviy usullaridan foydalanish, yangi informatsion pedagogik texnologiyalarni tadbiq qilish muhim ahamiyatga egadir. Laboratoriya darslarida mos ravishda ilg`or pedagogik texnologiyalardan foydalaniladi. Texnika yo`nalishdagi institut va universitetning barcha ixtisosliklari bo`yicha talabalarga tavsiya etilayotgan o`quv qo`llanma muallifning ko`p yillik ish tajribasi samarasidir. Muallif qo`llanmani tayyorlashda, birinchidan, talabalarni hozirgi zamon «Robototexnika asoslari» yutuqlarini hisobga olgan holda tayyorlangan laboratoriya mashg`ulotlari bo`yicha o`zbek tilidagi zamonaviy qo`llanma bilan ta‟minlashni, ikkinchidan, bo`lajak texnologiya o’qituvchilarini «Robototexnika asoslari» fanining qonun, hodisa va jarayonlarni chuqurroq o`rganishlarga, ularning tajriba o`tkazish, o`lchashlarning oddiy uslublarini o`zlashtirishi va o’quv jarayonida qo’llanilishiga ko`maklashishni o`z oldiga maqsad qilib qo`ydi.

Qo`llanmaga kiritilgan har bir laboratoriya ishida qat’iy ketma-ketlikka rioya qilingan. Dastlab ishning maqsadi, so`ngra ish to`g`risida qisqa va aniq nazariy ma’lumot bayon etiladi. Bu o`rinda shuni ta’kidlash kerakki, muallif talabalarning vaqtini tejash maqsadida imkon boricha ishning nazariyasini uning tavsifida yetarli darajada to`la yoritishga harakat qilgan. Laboratoriya mashg`ulotlarni bajarishda, mos ravishda ilg`or pedagogik texnologiyalardan foydalanish usullari namuna sifatida yoritilgan.

Har bir ishni bajarish uchun zarur qurol va asboblarning nomlari, ishni bajarilish tartibi hamda talaba o`zini tekshirib ko`rishi uchun nazorat savollari keltirilgan.

1 — LABORATORIYA ISHI. ARDUINO QURILMASI BILAN TANISHISH. ILK DASTUR UCHUN TUSHUNCHALAR

Ishning maqsadi:

Arduino qurilmalari bilan tanishish, uning turlari va parametrlarini o’rganish, Arduino uchun dastur tushunchalari o’rganiladi.

Kerakli asbob va materiallar:

1. Arduino platasi.

2. Arduino programmasi.

3.Kompyuter.

4. USB kabel.

5.Ulovchi simlar.

6. Xavfsizlik texnikasi qoidalari bo’yicha yo‘riqnoma.

NAZARIY MA’LUMOT

Arduino qurilmasi bilan tanishish. Ilk dastur uchun tushunchalar

1.1. Arduino nima

Arduino — bu ochiq kodli platforma bo`lib elektron loyihalarni yaratish uchun ishlatiladi. Arduino dasturlashtiriladigan elektron platadan va kompyuter kodini yozish hamda dasturni plataga yuklash uchun foydalaniladigan dasturiy ta`minot IDE (Integrated Development Environment, ya`ni, o`zbekchada «Integratsiyalashgan rivojlanish muhiti», — Integratsiya (lot. integratio-tiklash, toʻldirish) dan iborat.

Arduino platformasi elektronika bilan endigina shug`ullanayotgan o`rganuvchilar hamda ushbu sohadagi tajribali mutaxassislar tomonidan turli loyihalar tayyorlashda foydalanib kelinmoqda. Arduino platasiga yangi kodni yuklash uchun USB kabelidan foydalaniladi. Bundan tashqari, Arduino IDE C++ tilining soddalashtirilgan versiyasidan foydalaniladi, bu esa dasturlashni o`rganishni osonlashtiradi.

Arduino mikrokontrolleriga yuklanadigan dastur qurilmalarni ma`lum bir algoritmga asosan boshqariladi yoki arifmetik amallarni bajaradi. Arduino dasturlash tilini tushunish juda oson, chunki bu platforma havaskorlar uchun yaratilgan. Arduino mikrokontrolleriga ko`rsatmalar to`plamini yuborish orqali kerakli vazifalarni berishingiz mumkin.

Arduinoda professional bo`lmagan foydalanuvchilar ham turli xil elektron qurilmalarni (avtomatlashtirishva robototexnika tizimlari) yaratishlari mumkin. Arduino asosidagi qurilmalar turli sensorlardan signallarni qabul qilish va turli actuator (Aktuator — bu mexanizm yoki tizimni harakatlantirish va boshqarish uchun mo’ljallangan mashinaning tarkibiy qismlarni boshqarish imkoniyatiga ega.

Yozilgan dastur Arduinoda mustaqil ishlashi mumkin yoki kompyuter hamda mobil qurilmalar bilan o`zaro aloqada bo`ladi.

Kompaniya asoschilari — Arduino platasini ishlab chiquvchilari italiyalik Massimo Banzi, Devid Kuartil, Tom Igo, Janluka Martino va Devid Mellislardir. Arduinoning nomlanishi ular uchrashgan Italyadagi bardan olingan. Arduino maxsus ochiq platforma sifatida ishlab chiqilgan, bo’lib, faqat tovar nomi patentlangan.

Arduino o`zining protsessoriga va xotirasiga ega bo`lgan kichik plata bo`lib, atrof-muhit bilan chambarchas bog`liqdir. Arduino platasida barcha turdagi komponentlar (sensorlar, matorlar, aktuatorlar va kengaytirish platalarini ulash mumkin bo`lgan o`nlab pinlar mavjud. 1.1-rasmda Arduino UNO platasi keltirilgan.

1.1-rasm.Arduino UNO platasi

Dasturlash uchun mo`ljallangan Arduino IDE dasturiy ta`minotida dasturlash tajribasiga ega bo`lmagan o`rganuvchi ham bu dasturni tushuna oladi. Arduino sizga ushbu sohada professional ko`nikmalar va ko`plab g`oyalarni amalga oshirish imkonini beradi.

Ushbu bo’limda o`z loyihalaringizni yaratish uchun turli sensorlar va qurilmalarni Arduinoga ulash bo`yicha ko`plab qo`llanmalar mavjud. bo’limni o`qish jarayonida Arduino nima ekanligi hamda sensorlar va qurilmalar bo`yicha tushunchaga ega bo`lib borasiz. Agar Arduino nima ekanligini va nima uchun kerakligi haqida ko`proq bilmoqchi bo`lsangiz, unda ushbu bo’limdagi amalga oshirilishi mumkin bo`lgan turli loyihalar bilan tanishishingiz kerak.

Omad tilaymiz va ajoyib Arduino olamiga xush kelibsiz!

1.2. Robototexnikada algoritmlarning turlari

Robotlashgan loyihalar uchun harakat algoritmini yaratish ijodiy fikrlashni talab qiladi, shuning uchun algoritmni faqat odam yaratishi yoki o`zgartirishi mumkin. Robotlar esa ko`rsatmalarni bajaradi. Robototexnikaning uchta qonunining algoritmlarini ishlab chiqish ko`p vaqt talab qiladigan vazifa bo`lib, robotlarga keng ko`lamli vazifalarni bajarishga imkon beradi.

Robototexnikaning uchta qonuni:

1. Robot insonga shikast yetkaza olmaydi yoki harakatsizlik orqali insonga zarar yetkazishi mumkin emas.

2. Robot odamlar tomonidan berilgan buyruqlarga bo’ysunishi kerak, agar bunday buyruqlar birinchi qonunga zid bo’lmasa.

3. Robot o’z mavjudligini himoya qilishi kerak, agar bunday himoya birinchi yoki Ikkinchi qonunga zid bo’lmasa.

Isaak Asimov

Dunyodagi barcha jarayonlar qonunlar va qoidalarga bo`ysunadi, olimlar tomonidani bugungi kunda juda ko`p formulalar va algoritmlar yozilgan bo`lib, ular orqali ko`plab harakatlarni hisoblashingiz va takrorlashingiz mumkin. Algoritm tushunchasi 783—850 yillarda yashab ijod qilgan vatandoshimiz matematik Muhammad ibn Muso al-Xorazmiy nomidan kelib chiqqan. Al-Xorazmiy yaratgan qo`llanmada keltirilgan o`nlik sanoq sistemasida arifmetik amallarni bajarish qoidalari soddaligi tufayli yevropada ham o`nlik sanoq sistemasi qo’llanishiga turtki bo’ldi. Bu qoidalar tarjimasida bir qoida «Al-Xorazmiy aytadiki» deb boshlangan va bora-bora talaffuz tufayli «algoritm» tarzida ifodalanib kelgan.

1.2-rasm. Vatandoshimiz matematik Muhammad ibn Muso al-Xorazmiy

1.3.Algoritm nima?

Algoritm — bu masalani hal qilish yoki hisoblash uchun ishlatiladigan ketma-ketlik (protsedura). Algoritmlar apparati yoki dasturiy ta`minotga asoslangan tartiblarda harakatlarni bosqichma-bosqich bajaradigan ko`rsatmalarning aniq ro`yxati sifatida ishlaydi.

Algoritmlar IT (o`zb-AKT-axborot komunikatsion texnologiyalarning barcha sohalarida keng qo`llaniladi. Matematika va informatika fanlarida algoritm odatda takrorlanuvchi muammoni hal qiladigan kichik ketma- ketlikka (protseduraga) ishora qiladi. Algoritmlar ma`lumotlarni qayta ishlashni amalga oshirish uchun spetsifikatsiya sifatida ham qo`llaniladi va avtomatlashtirilgan tizimlarda katta rol o`ynaydi.

Algoritm raqamlar to`plamini saralash yoki ijtimoiy tarmoqlarda foydalanuvchi kontentini tavsiya qilish kabi murakkabroq vazifalar uchun ishlatilishi mumkin. Algoritmlar odatda dastlabki kiritish va ma`lum bir hisoblashni tavsiflovchi ko`rsatmalar bilan boshlanadi. Hisoblash amalga oshirilganda, jarayonning chiqish natijasi ko’rinadi.

1.4. Algoritmlar qanday ishlaydi?

Algoritmlar tabiiy tillar, dasturlash tillari, psevdokod, sxemalar va boshqaruv jadvallari sifatida ifodalanishi mumkin. Tabiiy tildagi iboralar noaniqroq bo’lgani uchun kamdan-kam uchraydi. Dasturlash tillari odatda kompyuter tomonidan bajariladigan algoritmlarni ifodalash uchun ishlatiladi. Algoritmlar ko`rsatmalar to`plami bilan birga dastlabki kiritishdan foydalanadi. Kirish — bu qaror qabul qilish uchun zarur bo`lgan dastlabki ma`lumotlar va raqamlar yoki so`zlar shaklida ifodalanadi. Kirish ma`lumotlari arifmetik va qaror qabul qilish jarayonlarini o`z ichiga olishi mumkin bo`lgan ko`rsatmalar yoki hisob-kitoblar to`plami orqali amalga oshiriladi. Chiqish algoritmning oxirgi bosqichi bo`lib, ma`lumot sifatida ifodalanadi.

Misol uchun, qidiruv algoritmi qidiruv so`rovini kirish sifatida qabul qiladi va uni so`rovga tegishli indikatorlarni ma`lumotlar bazasi orqali qidirish bo`yicha ko`rsatmalar to`plami orqali boshqaradi. Avtomatlashtirish dasturlari algoritmlarning yana bir misoli sifatida ishlaydi, chunki avtomatlashtirish vazifalarni bajarish uchun bir qator qoidalarga amal qilinadi. Ko`pgina algoritmlar avtomatlashtirish dasturini tashkil qiladi va ularning barchasi berilgan jarayonni avtomatlashtirish uchun ishlaydi.

1.5. Ilk dastur uchun tushunchalar

pinMode (13, OUTPUT);

Portlarning biridan foydalanish uchun Arduinoga INPUT (kirish) yoki OUTPUT (chiqish) ni e’lon qilishda pinMode () funksiyasidan foydalanamiz.

digitalWrite (13, HIGH);

Chiqish sifatida portni ishlatish uchun, unga HIGH (5 Volt), yoki LOW (0 Volt) buyruqni berish kerak.

Arduinoda svetodiodni yoqish uchun dastur:

void setup () {

pinMode (8, OUTPUT); // 8-pinni chiqish sifatida e`lon qilish

}

void loop () {

digitalWrite (8,HIGH); //Svetodiodni yoqing

delay (1000); //1 soniya kuting

digitalWrite (8,LOW); //Svetodiodni o`chiring

delay (1000); //1 soniya kuting

}

Natijada nimani ko‘ramiz:

Arduinoga programma kodni yuklaganimizdan so’ng yorug‘lik diodini miltillashini ko‘ramiz. Agar qurilma ishlamasa sxema va programma to‘g‘ri uklanganligini tekshiring va xatolikni toping va yana bir ishlatib ko‘ring.

ISHNI BAJARISH TARTIBI

1. O`qituvchi tomonidan berilgan Arduino UNO platasi bilan tanishing.

2. Arduino UNO platasidagi raqamli pinlarni o’rganing.

3. Arduino UNO platasidagi analog pinlarni o’rganing.

4. Arduino UNO platasidagi quvvatlantirish manbaini o’rganing.

5. Quvatlantirish manbaining kuchlanishini o`lchang.

6. Robototexnikaning uchta qonuni o’rganing.

7.Arduino qurilmasi bo’yicha internetdan ma’lumot oling.

8.Ilk dastur uchun tushunchalarni o’rganing.

7. Hamma tajribani kamida 3 marta bajaring.

NAZORAT SAVOLLARI

1. Arduino nima?

2. Arduino platasini ishlab chiquvchi asoschilari kimlar?

3. Algoritm nima?

4. Arduino versiyalarini sanang?

5. Robototexnikaning uchta qonuni aytib bering.

6. Isaak Asimov qonunini aytib bering.

7. Muhammad ibn Muso al-Xorazmiy algoritm tushunchasi haqida ayting.

8. Algoritmlar qanday ishlaydi?

9. Arduino UNO platasini tushuntiring.

10.pinMode nima?

2 — LABORATORIYA ISHI. SVETODIODNI ALGORITM BILAN DASTURLASH

Ishning maqsadi:

Svetodiod, uni Arduinoga ulash sxemasi, algoritm bilan dasturlashni o’rganish.

Kerakli asbob va materiallar:

1. Arduino platasi.

2. Arduino programmasi.

3.Kompyuter.

4. USB kabel.

5.Ulovchi simlar.

6. Svetodiod.

7. Xavfsizlik texnikasi qoidalari bo’yicha yo’riqnoma.

NAZARIY M A’LUMOT

2.1. Svetodiodni Arduinoga ulash sxemasi va dasturi

Ushbu bo`limda svetodiodni rezistor orqali Arduino UNO-ga qanday ulashni ko`rib chiqamiz. Svetodiodni miltillashi — bu mikrokontroller bilan ishlashni boshlash uchun eng oddiy dastur. Quyida svetodiod va rezistorli sxemani yig`ish, Arduino UNO-da svetodiodni miltillashi uchun dastur, uni Arduino UNO platasiga yuklash qoidalari va izohlar bo`yicha batafsil ko`rsatma keltirilgan.

Svetodiodlar — ko`rsatkich va yoritish uchun xizmat qiluvchi yarim o`tkazgichli indikatorlardir. Ular anod (+) va katod (-) ga ega va doimiy tokning yo`nalishini sezadi (2.1-rasm). Agar svetodiodni noto`g`ri ulasangiz, u holda to`g`ridan to`g`ri tok o`tmaydi va u yonmaydi. Svetodiod noto`g`ri ulangan bo`lsa, ishlamay qolishi mumkin. Anod (svetodiodning uzun oyog`i) manbaning plyusga ulanadi. Katod (svetodiodning kalta oyog`i) manbaning minusga ulanadi.

Boshlashda svetodiodni Arduino mikrokontrollerining raqamli chiqishiga ulash orqali amaliyot taxtasida oddiy sxemani yig`amiz (Arduino platasi yonidagu uyachalar kirish va chiqishlar pin deb ham ataladi). Dastur (Arduino uchun dastur deb ataladigan) yuklab olish orqali Arduino UNO platasidan qanday foydalanish va u bilan ishlashni o’rganamiz.

Qurilmalarni ishonchli yig`ish uchun bosilgan (pechat) elektron platalar yaratish ko`p vaqt talab etadi. Elektr zanjirlarini tez yig`ish uchun amaliyot taxtasi (2.2-rasm) ishlatiladi. Amaliyot taxtasidagi plastmassa qatlami ostida oddiy printsipga muvofiq yotqizilgan mis plitalar — relslar (yo`llar) mavjud.

Svetodiodlarning uzun oyog`i anod bo`lib, u har doim manbaning plyusga ulanadi hamda kalta oyog`i katod bo`lib u minusga ulanadi.

Nima uchun LED Arduinoga rezistor bilan ulanadi? Gap shundaki, svetodiodda yuqori toklarga chidamsiz kristal bor. Rezistor tokni cheklash uchun mo`ljallangan bo’lib svetodiodga ziyon yetmaydi. Katta tok svetodiod uchun zararli, kichikroq tok (rezistorning ulanishi tufayli) uzoq muddat ishlashini ta`minlaydi. Svetodiodni Arduinoga rezistor ulash uchun 13-portdan foydalaning.

2.2-rasm. Amaliyot taxtasining tashqi va ichki ko’rinishi

Arduino IDE dasturini so`nggi versiyasini tps://www.arduino.cc/en/software rasmiy veb-saytidan yuklab oling.

Dasturlar Arduino platasi kompyuterdan quvvatlanib USB kabeli yordamida yuklab olinadi. Agar elektron qurilmaning avtonom ishlashi kerak bo`lsa, u holda plata akkumulyator yoki 7—12V quvvat manbai bilan quvvatlanadi. Manba qo`llanilganda, platadagi indikator LED yonadi.

Arduino IDE da plata va portni tanlashda quyidagi ketma-ketlikni bajaring:

1-qadam. «Инструменты Плата» asosiy menyusiga o`ting. Agar Arduino platasi to`g`ri aniqlanmasa, kerakli turni tanlang, masalan, Arduino UNO.

2-qadam. «Инструменты -> Порт» menyusida ulanish portini (COM1 dan tashqari) o`rnating, chunki Arduinoni shaxsiy kompyuterga ulashda virtual COM porti yaratiladi.

Yuqoridagi ishlar bajarilgandan so’ng, 2.3-rasmda keltirilgan sxemaga asosan svetodiodni yoqish uchun Arduinoga ulanadi.

2.3-rasm. Arduinoga svetodiodni ulash sxemasi

2.2.Arduinoda svetodiodni yoqish uchun dastur

void setup () {

pinMode (7, OUTPUT); // 7-pinni chiqish sifatida e`lon qilish

}

void loop () {

digitalWrite (7,HIGH); //Svetodiodni yoqing

delay (1000); //1 soniya kuting

digitalWrite (7,LOW); //Svetodiodni o`chiring

delay (1000); //1 soniya kuting

}

Dasturda svetodiodlar ulangan port raqamlarini o`zgartirishingiz mumkin. Shu bilan birga, sxemada qancha svetodiod ishlatsangiz, pinMode buyruqlari shuncha marta yozilishi kerak.

Dasturni mikrokontrollerga yuklab olishdan oldin koddagi xatolarni tekshirish kerak (kompilyatsiya qilinadi). Agar xato topilsa, Arduino IDEning pastki oynasida xabar keladi. Har qanday holatda, dastur yuklashda, dastur birinchi navbatda tekshiriladi.

Dasturni mikrokontrollerga yuklab olishdan oldin dastur kompyuterda saqlanishi kerak. Ko`rsatilgan oynada «Загрузка» tugmasini bosilganda yuklab olish boshlanadi.

Tushuntirish: setup () funksiyasi (protsedurasi) mikrokontroller ishga tushirilganda bir marta amalga oshiriladi, mikrokontroller portlari va boshqa sozlamalarni sozlash uchun foydalaniladi; setupni amalga oshirgandan so`ng, cheksiz bajariladigan loop () funksiyasi (protsedurasi) boshlanadi. Biz buni svetodiodni doimiy ravishda yonib-o`chishi uchun ishlatiladi; setup va loop funksiyalari (protseduralari) har qanday dasturda mavjud bo`lishi kerak. delay (); belgilangan mikrosekundlarda dasturni to`xtatadi.

2.3. Arduino UNOda miltillovchi LED (2.3.rasm)

unsigned long joriyTime; //vaqt o`zgaruvchisi

boolean ledState = 0; // svetodiod holati o`zgaruvchisi

void setup () {

pinMode (7, OUTPUT); //7-pinni chiqish sifatida e`lon qilish

}

void loop () {

if (millis () — joriyTime> 500) // necha millisekund o`tganligini tekshiring

{

joriyTime = millis ();

led State=!ledState; //svetodiod holatini teskarisiga o`zgartiring

digitalWrite (9, ledState);

}}

Tushuntirishlar: Har 500 millisekundda boolean o`zgaruvchisining holati ledState=!ledState buyrug`i yordamida teskarisiga o`zgartiriladi.

2.4. Svetodiodlarni Arduinoga ulash sxemasi va dasturi

Miltillovchi svetodiodlar bilan yanada murakkab dastur Arduinodagi svetofor bo`lib, u yerda uch yoki undan ortiq svetodiodni yoqish va o`chirishni tartibga solish kerak. Elektr sxemasini yig`gandan so`ng, mikrokontrollerga quyidagi kodni yuklang.

2.4-rasm. Arduinoga 2 ta svetodiodni ulash sxemasi

void setup () {

pinMode (12, OUTPUT); //12-pinni chiqish sifatida e`lon qilish pinMode (10, OUTPUT); //10-pinni chiqish sifatida e`lon qilish

}

void loop () {

digitalWrite (12, HIGH); //svetodiodni yoqing

digitalWrite (10, LOW); //svetodiodni o`chiring

delay (1000); // 1 soniya kuting

digitalWrite (12,LOW); //svetodiodni o`chiring

digitalWrite (10, HIGH); //svetodiodni yoqing

delay (1000); //1 soniya kuting

}

Tushuntirish: Svetodiodlarni yoqish/o`chirish navbat bilan sodir bo`ladi;

Bir vaqtning o`zida kiritish koddagi satrlarni almashtirish orqali amalga oshirilishi mumkin.

Ushbu bo`limda Arduino UNO yoki NANOda miltillovchi svetodiodni qanday bajarishni ko`rib chiqdik va yakunda svetodiodni delay yoki millis yordamida miltillashini o`rgandik.

2.5.Arduinoda LEDni asta sekin yonishi

Arduinoda PWM (IKM) yordamida LEDni asta sekin yoqish (2.3.rasm) ushbu sahifada muhokama qilinadi. LEDni qanday ulashni (IKM) ko`rib chiqing, keling, PWM (Pulse Width Modulation, o`zbekcha-Impuls kengligi modulyatsiyasi) nima ekanligini ko`rib chiqaylik. Shuningdek, C++ dasturlash tilidagi for siklini batafsil ko`rib chiqamiz, bu konstruksiyaga kiritilgan buyruqlarni takrorlash uchun ishlatiladi.

Arduinoda LEDni yorqinligini boshqarish nima ekanligini ko`rish uchun oddiy dasturdan foydalanamiz. Buning uchun for siklidan foydalanishingiz mumkin. Ushbu konstruksiyaning sarlavhasi uch qismdan iborat: for (initialization; condition; increment (boshlash; shart; o`sish)) — initialization bir marta amalga oshiriladi, keyin condition sharti tekshiriladi, agar shart to`g`ri bo`lsa, u holda increment ortadi va shart rost bo`lguncha sikl takrorlanadi.

Yuqoridagi ko`rsatmaga asosanPWM yordamida LEDning yorqinligini o`zgartiramiz, LED asta-sekin yonadi va keyin o`chadi. LEDlar yoki masofadan boshqarish pulti bilan boshqariladigan tungi chiroqlar dekorativ yoritish uchun ishlatilishi mumkin. LEDni pin 6 analog portiga ulang va quyidagi dasturni yuklang.

2.6. Arduinoda LEDni yorqinligini boshqarish dasturi

#define LED_PIN 6//6-pin uchun nom bering

void setup () {

pinMode (LED_PIN, OUTPUT); //6-pinni chiqish sifatida ishga tushiring

}

void loop () {

// LEDni yorqinligini boshqarish

// 7-pinning boshlang`ich qiymati i=0, agar i <=255 bo`lsa, i ga bitta qo`shing

for (int i=0;i <=255;i++) {

analogWrite (LED_PIN, i);

delay (5); //effekt uchun kechikishni o`rnating

}

//LEDning asta sekin o`chishi

//6-pinning boshlang`ich qiymati i=255, agar i> =255 bo`lsa, i dan bittasini ayiring

for (int i=255;i> =0;i — ) {analogWrite (LED_PIN, i);

delay (5); // effekt uchun kechikish belgilang

}

}

Tushuntirish: for sikli i <=255 yoki i> =0 sharti rost boʻlguncha takrorlanadi. for sikli uchun ushbu qiymatlar qavs ichida yozilishi kerak — (boshlash; shart; o`sish). for tsikli konstruksiyasi jingalak qavslar {} orasiga joylashtirilishi kerak.

2.7.Arduinoga LEDlarni ketma-ket ulanishi

Ushbu bo`limda ketma-ket bir nechta LEDlarni yoqamiz. Oldingi bo`limlarda LEDlarni qanday boshqarishni o`rganganingizdan so`ng, Arduinoda LEDlarni ketma-ket qanday yoqishni aniqlash qiyin bo`lmaydi. Bundan tashqari, for siklini konstruksiyadagi operatsiyalarni takrorlash uchun xizmat qiladi va loop siklida o`ziga xos sikl vazifasini bajaradi.

Ushbu vazifani bajarish uchun avvalgi bo`limlardagi oddiy dasturdan foydalaniladi. Dasturda barcha LEDlarni ma`lum tezlikda ketma-ket yoqishni va keyin ularni ketma-ket o`chirishni belgilash kerak (2.5-rasm). Shu bilan birga for siklidan ham foydalanish mumkin, bu vazifani sezilarli darajada osonlashtiradi. Birinchidan, bu sikl yordamida LEDlar sonini belgilash mumkin.

byte i; //raqamli chiqishlar uchun o`zgaruvchini o`rnating

byte LedMax = 13; //maksimal chiqishlar soni (LEDlar ulangan raqamlar)

// 2 dan 13 gacha pinlarni chiqish sifatida o`rnatish

for (i=2; i <LedMax; i++) {

pinMode (i, OUTPUT);}}

2.5-rasm. Arduinoda 12ta LEDni ketma-ket ulash sxemasi

Misol uchun:

Tajribada 2 dan 13 gacha bo`lgan barcha pinlarni chiqish sifatida yozish o`rniga, bitta for siklidan foydalandik. Shuni aytish joizki, Arduinoning barcha chiqishlaridan LEDlarni ketma-ket yoqish yoki LED shkalasini ulash mumkin emas. Amalda, buning uchun 74HC165 smenali registr yoki Arduino mikrokontrolleri uchun M5450B7 LED drayverining oddiyroq versiyasi ishlatiladi.

2.8. LEDning ketma-ketlik dasturi

Amaliyot taxtasida LEDlar sxemasini yarating yoki LED shkalasini Arduinoga ulang. LED shkalasida o`rnatilgan rezistorlar to`g`ri o`rnatilganiga e`tibor bering, aks holda diodlari kuyishi mumkin. Sxemani yig`gandan so`ng, quyidagi LED ketma-ketlik dasturni Arduino IDEga nusxalang va uni plataga yuklang.

Dastur:

byte i; // raqamli chiqishlar uchun o`zgaruvchi

byte LedMin = 2; //LEDning birinchi pini

byteLedMax = 13; //LEDning oxirgi pini

void setup () {

// chiqish sifatida 2-pindan 13-pingacha o`rnating

for (i=LedMin; i <=LedMax; i++) {

pinMode (i, OUTPUT);}

}

void loop () {

//LEDlarni ketma-ket 2 dan 13 pingacha yoqing

for (i=LedMin; i <=LedMax; i++) {

digitalWrite (i, HIGH);delay (50);}

//LEDlarni 11 dan 2 pingacha ketma-ket o`chiring

for (i=LedMax; i> =LedMin; i — ) {

digitalWrite (i, LOW); delay (50);}

}

Tushuntirish:

1. Dasturdagi sikl navbatma-navbat ishlaydigan ikkita for tsiklini o`z ichigaoladi;

2. byte tipidagi o`zgaruvchi 8 bitli belgilanmagan raqamni 0 dan 255 gacha saqlash mumkin.

Quyidagi misolda Arduinoda LEDlarni o`chirishning ketma-ketligi o`zgartirildi (2.6-rasm). Buning uchun ikkinchi for siklida barcha shartlar takrorlanadi, faqat LED pinlarining holati siklda HIGH dan LOWgacha o`zgaradi. Kod bayt tipidagi global o`zgaruvchilardan foydalaniladi, shuning uchun ularni Arduino tilidagi mahalliy o`zgaruvchilardan farqli ravishda dasturning istalgan joyida chaqirish mumkin.

2.9. LEDni ketma-ket o`chirish dasturi

byte i; //raqamli chiqishlar uchun o`zgaruvchini o`rnating

byteLedMin = 2; //LEDningbirinchi pini

byteLedMax = 11; //LEDning oxirgi pini

void setup () {

// chiqish sifatida 2-pindan 11-pingacha o`rnating

for (i=LedMin; i <=LedMax; i++) {

pinMode (i, OUTPUT);}

}

void loop () {

//LEDlarni ketma-ket 2 dan 11 pingacha yoqing

for (i=LedMin; i <=LedMax; i++) {

digitalWrite (i, HIGH); delay (50);

}

//2 dan 11 pingacha bo`lgan LEDlarni ketma-ket o`chiring for (i=LedMin; i <=LedMax; i++) {

digitalWrite (i, LOW); delay (50);

}

}

Kod uchun tushuntirishlar:

1.for sikli i> LedMin yoki i <LedMax sharti to`g`ri bo`lgunga qadar takrorlanadi.

2.Agar dasturdan delay (50) ni olib tashlasa, LEDlarning ketma-ketligiga ta`siri bo`lmaydi.

ISHNI BAJARISH TARTIBI

1. Svetodiod turlari, parametrlari va ranglari bilan tanishiladi.

2. Amaliyot taxtasiga sxemalar yig`iladi.

3. Amaliyot taxtasining tashqi va ichki ko’rinishi o’rganiladi.

4. Arduinoga svetodiodni ulash sxemasi o’rganiladi.

5. Arduinoda svetodiodni yoqish uchun dastur yoziladi.

6. Sxema kompyuterga ulanadi va dastur yuklanadi.

7. Sxema va dastur ishga tushiriladi.

8. Agar sxema va dastur ishlasa, ular tekshiriladi va ishga tushiriladi.

NAZORAT SAVOLLARI

1. Svetodiod turlari, parametrlari va ranglarini tushuntiring.

2. Amaliyot taxtasining vazifasi nima?

3. Arduinoga svetodiodni ulash sxemasi tushuntiring.

4. Arduinoda svetodiodni yoqish uchun dasturini tushuntiring.

5. Qanday qilib sxema va dastur ishga tushiriladi?

6. Agar sxema va dastur ishlamasa qanday qilib tushiriladi?

3 — LABORATORIYA ISHI. ANALOG WRITE FUNKSIYASI BILAN TANISHISH. RGB SVETODIODI ORQALI TURLI RANGLARNI DASTUR YORDAMIDA HOSIL QILISH

Ishning maqsadi:

Analog write funksiyasi bilan tanishish, RGB svetodiodi orqali turli ranglarni dastur yordamida hosil qilish.

Kerakli asbob va materiallar:

1. Arduino platasi.

2. Arduino programmasi.

3.Kompyuter.

4. USB kabel.

5.Ulovchi simlar.

6.RGB svetodiod.

7. Xavfsizlik texnikasi qoidalari bo’yicha yo‘riqnoma.

NAZARIY M A’LUMOT

3.1.Arduino raqamli va analog pinlari

Ushbu bo`limda Arduinoda analog va raqamli, hamda PWM (pulse-width modulation), o`zbek tilida IKM (impuls kengligi modulyatsiyasi), rus tilida ШИМ (широтно-импульсная модуляция) pinlarini va analog signalni raqamliga qanday o`zgarishini ko’rib o’tamiz.

Analog signal — vaqt o`tishi bilan doimiy ravishda o`zgaradi. Tabiatdagi barcha ma`lumotlar analog-suvdagi to`lqinlar, simli tebranishlar va boshqalar. Dastlab, odam analog qurilmalar yordamida ma`lumotni (tovushlar, tasvirlar, videolar) yozib oldi. Ammo analog signallar shovqin va uning ta`siriga sezgir.

3.1.rasm. Signallarning ko’rinishi

Raqamli signal — bir va nol (signal bor yoki yo`q) ko`rinishida uzatiladi, kompyuterlar va raqamli texnologiyalar uchun uni amalga oshirish osonroq

(3.1-rasm).

Arduino Nano, Arduino UNO, Arduino Mega 2560larning pinlarini bir necha turga bo`lish mumkin, farqi turli platalardagi pinlar sonida bo`ladi. Misol uchun, Arduino Mega 2560-da plata o`lchami va mikrokontrollerning ishlashi tufayli UNO yoki Nanoga qaraganda sezilarli darajada ko`proq raqamli va analog portlar mavjud. Aslida, pinlarni dasturlashning xarakteristikalari va usullari bir-biridan farq qilmaydi.

3.2-rasm. Arduino UNO

1. Quvvat pinlari — quvvat portlari, ularning ishlash rejimini dasturlash yoki o`zgartirish mumkin emas. Ular 5V yoki 3,3V stabillashtirilgan kuchlanishni beradi, Vin quvvat manbaidan kuchlanishni beradi va GND umumiy minus

(3.2- rasm).

Arduinoni quvvatlantirish bir necha yo`l bilan amalga oshiriladi:

a) USB kabel orqali quvvatlantirish;

b) Plataga ulangan ba`zi komponentlarni alohida quvvatlantirildi;

c) Tashqi manbadan quvvatlantirish.

3.2. Arduino platasini quvvatlantirish

Arduino platasini quvvatlantirish uchun turli xil variantlar mavjud. Birinchisi, Arduino platangizni USB kabeli yordamida kompyuterga ulanadi.

Shuningdek, Arduino platasida servo matorlardan foydalanganda 7—12V kuchlanish bilan quvvatlantirish uchun DC quvvat ulagichidan foydalaniladi. USB kabelidan keladigan quvvat kamroq. Bu plata va kompyuter o`rtasidagi aloqa uchun juda yaxshi, lekin ba`zi matorlarni quvvatlantirish uchun yetarli bo`lmaydi.

Arduino platangizni quvvatlantirishning keyingi usuli bor. Arduinodagi quvvat Vin pindan platani 7—12V kuchlanish bilan ta`minlash uchun foydalanish mumkin. Tashqi quvvat manbaidan foydalanish va uni to`g`ridan-to`g`ri plataga ulash kerak, agar Vindan foydalanganda, uni tashqi quvvat manbaiga ulab, GNDni ham to`g`ri ishlatish kerak.

Komponentlarni Arduino UNOda quvvatlantirish

1.Har doim tashqi komponentni Arduino UNO platasiga ulaganda, avval uni GNDga ulash kerak. Keyin uni yoqish uchun bir nechta turli pinlardan foydalaniladi. Ular orasida 3,3V va 5V kuchlanishli pinlar mavjud.

Esda tutingki, Arduino UNO 5V kuchlanishda ishlaydi. Shunday qilib, agar 3,3V komponentni 5V quvvat manbaiga ulansa, komponentga zarar yetkazish mumkin. Buning ikkita varianti mavjud: Arduinodan 3,3V quvvat manbaidan foydalanish, yoki kuchlanish qiymatini o`zgartirgich bilan 5V dan foydalaniladi. Rezistorlar yoki to`g`ridan-to`g`ri kuchlanishni o`zgartirish komponenti yordamida ular orasidagi kuchlanishni o`zgartirish, 5Vni 3,3V komponentiga osongina ulash mumkin.

2. Arduino UNOda raqamli pinlar-Arduino UNO platasida 0 dan 13 gacha bo`lgan 14 ta raqamli pin bor.

3. PWM pinlari — raqamli chiqish/kirish sifatida dasturlashtirilishi mumkin bo`lgan PWM modulyatsiyalangan portlar. Bu portlar Arduino platasida bilan belgilangan;

4. Analog kirish pinlari-sensorlardan analog signalni qabul qiluvchi portlar kirish sifatida ishlaydi. Arduino UNO platasida 6ta analog pinlar bo`lib ular A0-A5 gacha bo`ladi.Ushbu portlar raqamli kirish/chiqish sifatida ham dasturlashtirish mumkin. Ushbu pinlar PWM modulyatsiyasini qo`llab-quvvatlaydi.

pin rejimi pinMode () yordamida void setup protsedurasida tayinlanadi, masalan:

void setup () {

pinMode (10, OUTPUT); //10-pinni chiqish sifatida e`lon qilish

pinMode (A2, OUTPUT); //A2 pinini chiqish sifatida e`lon qilish

pinMode (12, INPUT); //12-pinni kirish sifatida e`lon qilish

pinMode (A1, INPUT); //A1 pinini kirish sifatida e`lon qilish

}

Tushuntirish

1. Svetodiodni 10 va A2 chiqish piniga ulash mumkin, bu dasturda buyruq chaqirilganda yoqiladi va o`chadi;

2. Pin 10 PWM signali uchun ishlatilishi mumkin, masalan, svetodiodni yoqish uchun. A2 pin esa faqat raqamli signalni (0 yoki 1) chiqarishi mumkin;

3. Raqamli sensor 12 va A1 kirishiga ulanishi mumkin va mikrokontroller ushbu pinlarda signal borligini tekshiradi (mantiqiy nol yoki bir);

4.Analog sensor A1 kirishiga ulanishi mumkin, shu bilan birga mikrokontroller nafaqat signalni oladi, balki signal xarakteristikasini ham o`rganadi.

PWM pinlari va analog pinlarini ajratganimizga sabab shuki, PWM pinlari analog signal yaratadi, ular servo, step mator boshqa qurilmalar ulanadi shu bilab birga turli xil xususiyatlarga ega signallarni yetkazib beradi. Analog pinlar (Analog In) analog sensorlarni ulash uchun ishlatiladi, ulardan kiruvchi signal o`rnatilgan ADC yordamida raqamli signalga aylanadi.

ADC nima? Analog signal har qanday miqdordagi qiymatlarni qabul qilishi mumkin. Raqamli signal esa faqat ikkita qiymatga ega: HIGH va LOW. Arduinoda analog signallarning qiymatini o`lchash uchun o`rnatilgan analog-raqamli konvertor (ADC) mavjud. ADC analog kuchlanishni raqamli qiymatga aylantiradi. Analog signalning qiymatini olish uchun ishlatiladigan funksiya analogRead (pin) dir. Ushbu funksiya analog kirish pinining kuchlanish qiymatini o`zgartiradi va mos yozuvlar qiymatiga nisbatan 0 dan 1023 gacha raqamli qiymatni qaytaradi. Aksariyat Arduino UNOda A5gacha, Arduino Mega-da A15gacha va Arduino Mini va Nanoda A7gacha pinlar mavjud. Pin raqami uning yagona parametridir.

PWM signalini chiqarish uchun analogWrite (pin, qiymat) funksiyasidan foydalaniladi. Qi ymat=0 bo`lsa, signal har doim o`chirilgan bo`ladi.

Qachonki qiymat=255 bo`lsa, signal har doim yoqilgan bo`ladi. PWM funksiyasi ko`plab Arduino platalarida 3, 5, 6, 9, 10 va 11 — pinlarda ishlaydi. Ko`pgina pinlarda PWM signalining chastotasi taxminan 490Gersni tashkil qiladi. UNO va shunga o`xshash platalarda 5 va 6-pinlar taxminan 980Gers chastotaga ega. Analog kirish qiymatini kerakli qurilmalar qiymatlariga moslashtirish uchun quyidagi funktsiyadan foydalanishingiz mumkin: map (qiymat, pastdan, yuqoridan, pastga, yuqoriga). Bu 0 dan 1023 gacha bo`lgan PWM chiqish signaligacha yani 0—255 oralig`ida bo`ladi. Bu funksiya beshta parametrga ega, birinchisi analog qiymat o`zgaruvchisidir, qolganlari esa mos ravishda (0, 1023, 0, 255).

3.3. Arduino UNOda PWM, analog, raqamli pinlar

PWM (PWM) pinlarlari (Analog chiqish) 3, 5, 6, 9, 10, 11.

Analog pinlarlari (Analog kirish/chiqish) A0, A1, A2, A3, A4, A5.

Raqamli pinlarlari (Raqamli kirish/chiqish) 0 dan 13 gacha barcha portlar, foydalanish mumkin:

A0 — A5 gacha Analog pinlarlari raqamli pin sifatida ishlatiladi, agar umumiy maqsadli portlar yetarli bo`lmasa, masalan, plataga 15 ta svetodiodni ulashn kerak bo’lsin. Bundan tashqari, Arduino UNO va Nano platalarida A4 va A5 portlari I2C protokoli (SDA va SCL pinlari) uchun ishlatiladi — ular A4 va A5 pinlari bilan parallel ishlaydi.

Agar chiqish kuchlanishini tartibga solmoqchi bo`lsangiz, "~" belgisi bilan belgilangan pinlarni ishlatishingiz kerak. Arduino UNO uchun bular 3, 5, 6, 9, 10, 11. Analog portlar yordamida 0 dan 5 Voltgacha bo`lgan har qanday kuchlanishni chiqarish mumkin va raqamli chiqishlarni faqat yoqish va o`chirish mumkin. Analog portlar PWM (pulse-width modulation), o`zbek tilida IKM (impuls kengligi modulyatsiyasi), rus tilida (широтно-импульснаямодуляция) dan foydalanadi, bu analog signalni simulyatsiya qiladi.

3.4.Arduinoda analog pinlarni raqamli sifatida ishlatish

Ko`p qurilmalarni ulashda umumiy maqsadli pinlar yetarli bo`lmasligi mumkin. Bunda dasturda analog pinlarni raqamli pinlar sifatida ishlatish mumkin.

void setup () {

pinMode (A3, OUTPUT); //A3 pinini raqamli chiqish sifatida e`lon qilish

pinMode (17, INPUT); //17-pinni raqamli kirish sifatida e`lon qilish

}

Raqamli signal va analog signal o`rtasidagi farqni tushunish uchun, LED va rezistorli sxemani amaliyot taxtasida o`rnating. Analog chiqishni~ 9 ga ulang. Chiqish portini in 9 ga ulang. Dasturni Arduino NANO yoki UNO platasiga yuklang.

Port 9 raqamli chiqish sifatida ishlashi mumkin. Agar digitalWrite funksiyasi analogWrite ga o`zgartirilsa, HIGH (1) va LOW (0) qiymatlari o`rniga 0 dan 255 gacha bo`lgan istalgan qiymatni qabul qiladi. Aynan shu oraliqda analog chiqishlardagi kuchlanish o`zgartiriladi. LEDni yoqish va o`chirish uchun dasturni yuklab oling.

3.5. Arduino UNOdagi analog portlar (A0-A5 pinlari)

Ushbu bo’limda Arduinoning analog A0-A5 portlarini ko`rib chiqamiz. Analog portlarning ishlash prinsipini tahlil qilinadi, ularga nima ulanishi mumkinligi ko`rib chiqiladi. Amaliyot taxtasidan foydalanib, boshqariladigan yorug`lik bilan yoritgich sxemasini yig`amiz, shunda potensiometr (o`zgaruvchan qarshilik) yordamida LEDning yorqinligini o`zgartirish mumkin bo`ladi. Arduino IDE tilida #define va analogRead direktivasini ko`rib chiqing.

3.3-rasm. Arduinoga potensiometrni ulash sxemasi

3.6. Arduinoda potensiometr uchun dastur

void setup () {

Serial.begin (9600);

pinMode (A0, INPUT); // potansiometrni A0 kirishiga ulang

}

void loop () {

int qiymat = analogRead (A0); // A0 portidan ma`lumotlarni o`qish

Serial.print («Potensiometr qiymati ->»);

Serial.println (qiymat);

}

3.7. Arduinoda analog kirishlar

Arduinoning Atmega mikrokontrolleri olti kanalli analog-raqamli konvertorni (ADC) o`z ichiga oladi. Konvertorning ruxsati 10bit bo`lib, 0 dan 1023 gacha qiymatlarni olish imkonini beradi. Arduino analog kirishlari vasifasi (Arduino UNOda (A0-A5) analog sensorlardan asosiy foydalanish qiymatlarni o`qish. Potensiyometr ko`rsatkichlarni olish uchun analog kirishdan foydalaniladi.

O`lchov bo`linmasining kichik qiymati deyarli har qanday miqdorning qiymatlarini katta aniqlik bilan olish imkonini beradi. Analog kiritishni o`qish uchun analogRead funksiyasidan foydalaning. Analog portlar digitalRead buyrug`i yordamida amalga oshirilishi mumkin, bu buyruq tugmachadan ma`lumotlarni o`qish uchun ishlatiladi. digitalWrite buyrug`i bilan esa LEDni boshqarishingiz mumkin.

3.8. Arduinoda analog signal va LED

int LED = 0; //LEDning dastlabki yorqinligi

int fade = 5; //LED yorqinligini o`zgartirish bosqichi

void setup () {

pinMode (9, OUTPUT); // chiqish ishlashi uchun Pin 9 dan foydalaning

}

void loop () {

//LED yorqinligini Pin 9ga o`rnating

analogWrite (9, LED);//har bir siklda berilgan so`ng miqdorini qo`shish orqali yorqinlikni o`zgartiring;

LED = LED + fade;//minimal va maksimal yorqinlikda o`chirish tartibini o`zgartiring;

if (LED == 0 || LED == 255) {

fade=-fade;

}

delay (20); //effektni pauza qilish

}

Tushuntirish:

1.AnalogWrite funksiyasi (pin, qiymat), bu yerda pin — signal qo`llaniladigan chiqish porti, qiymat-0 (to`liq o`chirilgan) va 255 (to`liq yoqilgan) orasidagi qiymat, LEDning yorqinligini yoki tezligini impuls kengligi modulyatsiyasi (PWM) yordamida boshqariladi.

2.LED o`zgaruvchi sikli har gal bajarilganda «0» boshlang`ich qiymatiga ega bo`ladi, fade ning berilgan qiymati LED qiymatiga qo`shiladi (bu dasturda fade =5).

LED o`zgaruvchisi maksimal qiymati 255 ga yetganda, fade -5 manfiy qiymatni oladi. Endi, har safar sikl bajarilganda, LED qiymatiga -5 qo`shiladi, ya`ni, har safar fade LEDdan ayriladi.

3.9. Arduinoda LEDning yorqinligini o`zgartirish

Ushbu bo’limda LEDning yorqinligini o`zgartiriladigan qurilmaning elektr sxemasini yig`amiz. Potensiometr yordamida 9-pinga ulangan LEDning yorqinligini o`zgartirishimiz mumkin. Potensiometrning ikki tarafdagi oyoqlari 5V va GND portlariga ulanadi, kuchlanish qiymati o`rta oyoqdan olinadi va Arduinoning A0 analog kirishiga ulanadi.

Elektr zanjirini ko`rsatilganidek yig`ing. Potensiometrning o`rta oyog`i kuchlanish ko`rsatkichlarini olish uchun A0 analog portiga ulanadi. Arduinoning 5V va GND portlariga ulash uchun, potensiometrni ikki tarafidagi oyoqlarini qay biriga ulanishi muhim emas. LEDning yorqinligini oshirish uchun faqat tugmachasining aylanish yo`nalishi o`zgartiriladi. Sxema tayyor bo`lgandan so`ng, Arduinoni kompyuterga ulab va dasturni yuklang.

3.4-rasm. Arduinoga LED va potensiometr ulash sxemasi

3.10. Arduinoda LED va potensiometr uchun dastur

#define LED_PIN 9 // LED bilan pinga nom bering

#define POT_PIN A0 // Potensiometr piniga nom bering

void setup () {

// LED pin chiqish

pinMode (LED_PIN, OUTPUT);

//potensiometrli pin kirish bo`ladi

pinMode (POT_PIN, INPUT);

// Serial port monitorini ishga tushiring

Serial.begin (9600);

}

void loop () {

//2 ta o`zgaruvchidan foydalanishimizni e`lon qilamiz — aylanish va yorqinlik

//o`zgaruvchilarda faqat butun sonlarni saqlaymiz (ing. «integer») int aylanish, yorqinlik;

//aylanish 0 dan 1023 gacha bo`lgan potensiometr qiymatlariga teng

aylanish = analogRead (POT_PIN);

// o`zgaruvchan brightness 4 ga bo`lingan aylanishga teng bo`ladi

//yorqinlik faqat butun son bo`lishi mumkin, kasr qismi o`chiriladi

//natijada yorqinlik o`zgaruvchisi 0 dan 255 gacha bo`lgan oraliqda bo`ladi

yorqinlik = aylanish / 4;

//yorqinlik=aylanish/4 formulasi bo`yicha hisoblangan kuchlanish

analogWrite (LED_PIN, yorqinlik);//aylanish qiymatini ketma-ket monitor portga yuboring

Serial.println (yorqinlik);

delay (500);

}

Tushuntirish: #define direktivasidan foydalanib, 9-pin raqamini LED_PIN nomi bilan almashtirdik, A0 analog kirishiga POT_PIN nomini berdik. Mahalliy o`zgaruvchi «aylanish» kuchlanishga mutanosib va 0 dan 1023 gacha (ADC ning minimal va maksimal qiymatlari) oralig`ida bo`ladi. «yorqinlik» o`zgaruvchisi esa 4 ga bo`lingan «aylanish”ga teng ya`ni 0 dan 255 gacha (analog kirishning minimal va maksimal qiymati).

3.11. #define direktivasi yordamida (RGB) LEDlarni boshqarish

Ushbu bo’limda turli xil ranglardagi RGB LEDni yoqish uchun Arduino platasidagi «impuls kengligi modulyasiyasi»(PWM) raqamli va analog chiqishlardan foydalanamiz. RGB LED chizig`idan foydalanish har qanday ranglar palitrasini yaratishga imkon beradi. Quyida RGB LED qurilmasi va RGB LED pinlari haqidagi ma`lumotlarni va C++ tilida #define direktivasi yordamida RGB LEDlarni boshqarishni ko`rib chiqamiz.

Barcha ranglarni palitrasini ko`rsatish uchun RGB sintezidan foydalangan holda uchta rang kifoya qiladi (Red — qizil, Green — yashil, Blue — ko`k). RGB palitrasi nafaqat grafik muharrirlarda, balki veb-saytlarni qurishda ham qo`llaniladi.

Ranglarni turli nisbatlarda aralashtirib, deyarli har qanday rangni olishingiz mumkin. RGB LEDlarning afzalliklari oddiy dizayn, kichik o`lchamlar va yuqori yorug`lik chiqishning samaradorligidir.

RGB LEDlar bir qobiqda turli rangdagi uchta kristalni birlashtiradi. RGB LED 4 ta pinga ega, yani — bitta umumiy (anod yoki katod eng uzun pinga ega) va uchta rangli pin.

Har bir rang chiqishiga rezistor ulanishi kerak. Arduinoga uch rangli LEDni ulaymiz va uni avval turli xil ranglarda miltillashtiramiz, so`ngra LEDimiz «impuls kengligi modulyasiyasi» yordamida turli xil ranglarda bir tekis yonishini ko’ramiz.

3.12. RGB LED ni boshqarish. Arduinoda RGB LEDlarni miltillashi uchun dastur

RGB LEDni quyidagi pinlarga ulang: Minus — GND, B–5 pin 6, G–pin 7,

R–pin 5. RGB LEDni ulab, sxemani Arduinoga o`rnatgandan so`ng, dasturni Arduinoga yuklang.

#define QIZIL 5 //5-pin QIZIL deb nomlandi

#define YASHIL 7 //7-pin YASHIL deb nomlandi

#define KOK 6 //6-pin KOK deb nomlandi

void setup () {

pinMode (QIZIL, OUTPUT); //chiqish uchun pin 5 dan foydalaning. pinMode (YASHIL, OUTPUT); //chiqish uchun pin 7 dan foydalaning

pinMode (KOK, OUTPUT); //chiqish uchun pin 6 dan foydalaning

}

void loop () {

digitalWrite (QIZIL, HIGH); //qizil chiroqni yoqing digitalWrite (YASHIL, LOW);

digitalWrite (KO`K, LOW);

delay (1000); // effektni pauza qilish

digitalWrite (QIZIL, LOW);

digitalWrite (YASHIL, HIGH);//yashil chiroqni yoqing digitalWrite (KOK, LOW);

delay (1000); //effektni pauza qilish

digitalWrite (QIZIL, LOW);

digitalWrite (YASHIL, LOW);

digitalWrite (KOK, HIGH); //ko`k chiroqni yoqing

delay (1000); //effektni pauza qilish

}

3.5-rasm. Arduinoga RGB LEDni ulash sxemasi.

Tushuntirish:

1.#define direktivasidan foydalanib, 5, 6 va 7 pinlarni QIZIL, KOKva YASHIL nomlari bilan almashtirdik. Bu dasturda chalkashmaslik va qaysi rangni o`z ichiga olganimizni tushunish uchun qulaylik uchun qilingan;

2.void loop () protsedurasida RGB-dagi barcha uchta rangni navbatma-navbat yoqamiz.

3.13.RGB LEDni bir tekis boshqarish. Bir tekis miltillovchi RGB LED uchun dastur

Arduinoda RGB LEDni boshqarish «PWM» analogli chiqishlari yordamida bajarilishi mumkin. Buning uchun LEDning oyoqlari analog chiqishlarga, masalan, 3, 6 va 9-pinlarga ulangan bo`lishi kerak. Mikrokontrollerning analog chiqishlariga turli xil PWM qiymatlarini qo`llang, buning uchun fordan foydalanamiz, uning yordamida dasturdagi kerakli buyruqlarni takrorlash mumkin.

#define QIZIL 3 //pin 3 uchun QIZIL deb nomlang

#define YASHIL 6 //6-pinga YASHIL nomini belgilang

#define KOK 9 //9-pinga KOK nomini belgilang

3.6-rasm. RGB LEDni bir tekis miltillash sxemasi

void setup () {

pinMode (QIZIL, OUTPUT); //chiqish uchun pin3 dan foydalaning

pinMode (YASHIL, OUTPUT);//chiqish uchun pin 6 dan foydalaning

pinMode (KOK, OUTPUT); //chiqish uchun pin 9 dan foydalaning

}

void loop () {

// bir tekis yoqish/o`chirish qizil rang uchun

for (int i = 0; i <= 255; i++) {analogWrite (QIZIL, i);

delay (2);

}

ffor (int i = 255; i> = 0; i — ) {analogWrite (QIZIL, i);

delay (2);

}

// bir tekis yoqish/o`chirish yashil rang uchun

for (int i = 0; i <= 255; i++) {analogWrite (YASHIL, i);

delay (2);

}

for (int i = 255; i> = 0; i — ) {analogWrite (YASHIL, i);

delay (2);

}

// bir tekis yoqish/o`chirish ko`k rang uchun

for (int i = 0; i <= 255; i++) {

analogWrite (KOK, i);

delay (2);

}

for (int i = 255; i> = 0; i — ) {analogWrite (KOK, i);

delay (2);

}}

Tushuntirish: 1. #define direktivasidan foydalanib 3, 6 va 9 pin raqamlarini QIZIL, YASHIL va KOK nomlari bilan almashtirdik. Bu dasturda chalkashmaslik va qaysi rangni tanlab olganimizni tushunishda qulaylik uchun qilingan. 2. 3, 6 va 9pinlardan analogWrite analog chiqishlari sifatida foydalandik.

3.14. Bir nechta RGB LED ranglarini bir tekisda boshqarish

#define QIZIL 3 //pin 3 uchun QIZIL deb nomlang

#define YASHIL 6 //6-pinga YASHIL nomini belgilang

#define KOK 9 // 9-pinga KOK nomini belgilang

void setup () {

pinMode (QIZIL, OUTPUT); //chiqish uchun pin 3 dan foydalaning

pinMode (YASHIL, OUTPUT); //chiqish uchun pin6 dan foydalaning

pinMode (KOK, OUTPUT); //chiqish uchun pin 9 dan foydalaning

}

void loop () {

// qizil va yashil ranglarni bir tekista almashtirish

for (int i = 0; i <= 255; i++) {

analogWrite (QIZIL, i);

analogWrite (YASHIL, i);

delay (2);

}

for (int i = 255; i> = 0; i — ) {

analogWrite (QIZIL, i); analogWrite (YASHIL, i);

delay (2);

}

// qizil va ko`k ranglar o`chib ketadi

for (int i = 0; i <= 255; i++) {

analogWrite (QIZIL, i);

analogWrite (KOK, i); delay (2);

}

for (int i = 255; i> = 0; i — ) {

analogWrite (QIZIL, i);

analogWrite (KOK, i); delay (2);

}}

Tushuntirish: Arduinodagi analog chiqishlar turli miqdorda oqim ishlab chiqarish uchun «impuls kengligi modulyatsiyasidan» foydalanadi. LEDdagi barcha uchta rangli kirishni 0 dan 255 gacha bo`lgan turli xil PWM signal qiymati bilan ta`minlay olamiz, bu esa RGB LEDni Arduinoda har qanday ranglar jilosini olish imkonini beradi.

ISHNI BAJARISH TARTIBI

1. Analog signalni o’rganiladi.

2. Raqamli signalni o’rganiladi.

3. Arduino UNO pinlarini o’rganiladi.

4. Arduino platasini qanday quvvatlantirilish o’rganiladi.

5 Arduino UNOda PWM, analog, raqamli pinlar o’rganiladi.

6. Arduinoda analog pinlarni raqamli sifatida ishlatish o’rganiladi.

7. Arduino UNOdagi analog portlar (A0-A5 pinlari) o’rganiladi.

8. Arduinoga potensiometrni ulash sxemasi va dasturi o’rganiladi.

9. Arduinoda analog kirishlar o’rganiladi.

10. Arduinoda analog signal va LED o’rganiladi.

11. Arduinoda LEDning yorqinligini o`zgartirish o’rganiladi.

12. Arduinoda led va potensiometr uchun dastur yoziladi.

13. #define direktivasi yordamida (RGB) LEDlarni boshqarish o’rganiladi.

14. Arduinoda RGB LEDlarni miltillashi uchun dastur yoziladi.

15. RGB LEDni bir tekis boshqarish o’rganiladi.

16. Bir tekis miltillovchi RGB LED uchun dastur yoziladi.

17. Bir nechta RGB LED ranglarini bir tekisda boshqarish o’rganiladi.

NAZORAT SAVOLLARI

1. Analog signalni tushuntiring.

2. Raqamli signalni tushuntiring.

3. Arduino UNO pinlarini aytib bering.

4. Arduino platasini qanday quvvatlantiriladi?

5 Arduino UNOda PWM, analog, raqamli pinlarni tushuntiring.

6. Arduinoda analog pinlarni qanday raqamli sifatida ishlatiladi?

7. Arduino UNOdagi analog portlar (A0-A5 pinlari) nima uchun ishlatiladi?

8. Arduinoga potensiometrni sxemaga qanday ulanadi?

9. Arduinoda analog kirishlar nechta?

10. Arduinoda LEDning yorqinligini qanday o`zgartiriladi?

12. Arduinoda LED va potensiometr uchun dastur qanday yoziladi?

13. #define direktivasi yordamida (RGB) LEDlar qanday boshqariladi?

13. Arduinoda RGB LEDlarni miltillashi uchun dasturtushuntiring.

14. RGB LEDni bir tekis boshqarishni tushuntiring.

15. Bir tekis miltillovchi RGB LED uchun dastur qanday yoziladi?

16. Bir nechta RGB LED ranglarini bir tekisda boshqarishni tushuntiring.

4 — LABORATORIYA ISHI. SERIAL FUNKSIYASI VA MONITOR PORTLAR BILAN ISHLASH

Ishning maqsadi:

Serial funksiasi va monitor portlar bilan ishlashni o’rganish

.

Kerakli asbob va materiallar:

1. Arduino platasi.

2. Arduino programmasi.

3.Kompyuter.

4. USB kabel.

5 Xavfsizlik texnikasi qoidalari bo’yicha yo‘riqnoma.

NAZARIY M A’LUMOT

4.1.Monitor port

Monitor port — bu Arduino mikrokontrollerini kompyuter yoki boshqa qurilmalar bilan ma`lumot almashishiga xizmat qiladigan funksiya (bajarilish, sodir bo`lish) bo`lib, u yordamida yozgan dasturlar qanday tartibda bajarilayotgani haqida ma`lumotlar chiqaradi.

Arduinodan kelgan ma`lumotlar Arduino sketchining (Arduinoda yozilgan dasturning nomi) Monitor portiga chiqadi. Monitor port-bu Arduino va kompyuter o`rtasida aloqa almashish oynasi bo`lib Arduinodan kelgan ma`lumotlar shu yerda chiqadi va shu yerdan Arduinoga ma`lumotlar jo`natiladi.

Yordamchi dastur uch qismga bo`lingan oynadan iborat. Yuqori qismida ma`lumotlarni kompyuterdan ketma-ket portga yuborishingiz mumkin bo`lgan kirish maydoni mavjud. Markaz ketma-ket portdan olingan ma`lumotlarni ko`rsatadi. Oynaning pastki qismida (yangi versiyalarda yuqori qismida) sozlamalar menyusi joylashgan. Arduino monitor porti bitta ketma-ket port bilan ishlashi mumkin, shuning uchun dastur yuklashda va Monitor portni ochishda xatolikka yo`l qo`ymaslik uchun aniqlangan COM portini tanlashingiz kerak.

Yordamchi dasturni ochish uchun Arduino IDE-ning yuqori o`ng burchagidagi belgini bosishingiz kerak, Ctrl + Shift + M tugmalar birikmasidan foydalaning yoki menyu panelidan tanlang: Tools (Инструменты) -> Serial Monitor (Monitor porta). Arduino uchun Monitor port tezligi 9600 bit/s ga o`rnatiladi, shuning uchun ko`plab dasturlarda bu tezlikdan foydalanadi. Agar dasturda va port monitor sozlamalarida ma`lumotlarni uzatish tezligi boshqacha bo`lsa, unda barcha ma`lumotlar ierogliflar (so`zlar ma`nosini raqamlar va belgilar bilan ifodalaydigan yozuv turi) ko`rinishida ko`rsatiladi.

4.1- rasm. COM portni tanlash

4.2. Monitor portga matnni qabul qilish va yuborish

Yordamchi dastur bilan ishlash uchun quyidagi buyruqlardan foydalaning: Serial.begin (); — buyruq ketma-ket portni ishga tushiradi

Serial. end (); — ketma-ket portni to`xtatadi va tozalaydi

Serial.print (); — ma`lumotlarni ketma-ket portga yuboradi

Serial.println (); — ushbu buyruqdan keying ma`lumot keyingi satrdan boshlanadi

Serial.read (); — ketma-ket portdan ma`lumotlarni qabul qiladi

Serial.parseInt (); — port monitoridan katta raqamlarni o`qish

4.3. Serial.begin () — buyruq

Arduino IDEda Monitor portni quyidagicha ochiladi: ma`lumotlarni Monitor portga chiqarish uchun birinchi Arduino bilan kompyuter o`rtasida aloqa o`rnatish kerak. Buning uchun void setup () ning ichiga Serial.begin () buyrug`ini yozishimiz kerak.

4.2-rasm. Monitor portni ochish
4.3-rasm. Monitor portni ma’lumotlar chiqarish oynasi

Serial.begin () — bu Arduino bilan biror qurilma o`rtasida aloqa o`rnatish uchun xizmat qiladigan buyruq.

4.4-rasm. Serial.begin () Arduino bilan qurilma o`rtasida aloqa o`rnatish uchun xizmat qiladigan buyruq

Serial.begin () ichida yozilgan «9600» ma`lumot almashish tezligi bo`lib, u 1sekundda 9600bit ma`lumot almashishini bildiradi. Bundan tashqari malumot almashish tezliklarining boshqa qiymatlari 300, 1200, 2400, 4800, 9600, 19200, 115200 va hokazo mavjud (4.5-rasm).

Arduino va kompyuter uchun eng ko`p ishlatiladigan ma’lumot almashish tezlik 9600 hisoblanadi. Qolaversa ko`plab qurilmalar ham 9600 tezilik bilan ma`lumot almashadi.

Monitor portga ma’lumot chiqarilganda Serial.begin () da berilgan tezlik bilan monitor portning tezligi bir xil bo`lish kerak aks xolda malumotlar to`liq yetib kelmasligi yoki umuman kelmasligi mumkin.

4.5-rasm. Serial.begin () da 1sekund ichida 9600 bit ma`lumot almashish
4.6-rasm. Serial.begin () da 1sekund 300, 1200, 2400, 4800, 9600, 19200, 115200 va hokazo bit ma’lumot almashish

Ma`lumotlarni monitor potrga chiqarish uchun esa Serial.print () buyrug`i ishlatiladi.

Serial.print (); -bu ma`lumotlarni monitor portga chiqarish buyrug`i bo`lib, ma`lumotlarni gorizontal ravishda chiqaradi (4.7-rasm).

4.7-rasm. Monitor portga ma`lumotlarni gorizontal ravishda chiqarishga misol

Monitor portga ma`lumotlarni vertikal holatda chiqarish uchun Serial.println (); buyrug`idan foydalanish kerak (4.8-rasm). So`zlarni serial portga chiqarish sonlarni ekranga chiqarishdan boshqacha bo`lib, chiqarilmoqchi bo`lgan so`z ikkita qo`shtirnoq ichida yoziladi. Misol uchun Assalomu alaykum so`zini chiqarish uchun Serial.println («Assalomu alaykum»); ko`rinishida yoziladi.

4.8-rasm. Monitor portga ma`lumotlarni vertikal ravishda chiqarish buyrug`iga misol
4.9-rasm. Monitor portga so`zlarni ekranga chiqarish

ISHNI BAJARISH TARTIBI

1. Monitor port haqida ma'lumot olinadi.

2. Monitor portga matnni qabul qilish va yuborish o'rganiladi.

3. Serial.begin () — buyruq o’rganiladi.

4. Serial.begin()da 1sekund 300, 1200, 2400, 4800, 9600, 19200, 115200 va hokazo bit ma`lumot almashish o'rganiladi.

5. Monitor portga ma`lumotlarni gorizontal ravishda chiqarish buyrug`i o’rganiladi.

6. Monitor portga ma`lumotlarni vertikal ravishda chiqarish buyrug`i o'rganiladi.

7. Hamma tajribalarni kamida 3 marta takrorlanadi.

NAZORAT SAVOLLARI

1. Monitor port haqida ma'lumot bering.

2. Monitor portga matnni qabul qilish va yuborish qanday qilib o'rganiladi?

3. Serial.begin() - buyruq nima?

4. Serial.begin()da 1sekunda necha bit ma`lumot almashinish mumkin?

5. Monitor portga ma`lumotlarni gorizontal ravishda chiqarish buyrug`ini tushuntiring.

6. Monitor portga ma`lumotlarni vertikal ravishda chiqarish buyrug`ini tushuntiring.

5 — LABORATORIYA ISHI. ZUMMER DASTUR YORDAMIDA TURLI XIL MUSIQA OHANGLARINI HOSIL QILISH

Ishning maqsadi:

Zummer dastur yordamida turli xil musiqa ohanglarini hosil qilish.

Kerakli asbob va materiallar:

1.Arduino platasi.

2. Arduino programmasi.

3.Kompyuter.

4. USB kabel.

5.Ulovchi simlar.

6.Zummer.

7. Xavfsizlik texnikasi qoidalari bo’yicha yo‘riqnoma.

NAZARIY M A'LUMOT

5.1.Zummer va uning parametrlari

Ushbu bo`limda sizlar bilan Arduino mikrokontrolleri orqali musiqalar yaratishni o’rganamiz.

Davr — bu haqida hamma eshitgan bo’lsa kerak (bolalik davri, talabalik davri o’quvchilik davri va hokazo)! Davr bu biror jarayon yoki hodisaning 1 marta to’liq bajarilishi uchun ketgan vaqt. Davrni T harfi bilan belgilaymiz va sekundlarda o’lchanadi.

Chastota — bu ma’lum vaqt davomida jarayonning davriy takrorlanishlar soniga aytiladi va u Hz (Gers) larda o’lchanadi va ν harfi bilan belgilanadi. 1 Hz deb shunday o’lchov birligiga aytiladiki bunda jarayon 1 sekundda 1 marta to’liq sodir bo’ladi ya’ni 1Hz=1/sekund. Nazariy jihatdan chastota davrga teskari proporsional bo’lib, quyidagiga teng.

Davr = 1 / Chastota

Zummer elektr signalini tovush signaliga(ya’ni tovush tebranishlariga aylantirib beruvchi qurilma.

Zummer 2 xil bo’ladi: (5.1-rasm)

1.     Aktiv zummer;

2.     Passiv zummer.

Aktiv zummer — tovush chiqarishda zummer ichida joylashgan ossilyatordan foydalanadi, shuning uchun o’zgarmas kuchlanishda ishlaydi.

5.1-rasm. Aktiv zummer

Passiv zummer — tovush chiqarishi uchun o’zgaruvchan signal kerak bo’ladi. O’zgaruvchan kiruvchi signal tovushni hosil qiladi.

Бесплатный фрагмент закончился.

Купите книгу, чтобы продолжить чтение.

Введите сумму не менее null ₽, если хотите поддержать автора, или скачайте книгу бесплатно.Подробнее