Mundarija:

Yog 'robot: Ekzistensial inqirozli Arduino robot: 6 qadam (rasmlar bilan)
Yog 'robot: Ekzistensial inqirozli Arduino robot: 6 qadam (rasmlar bilan)

Video: Yog 'robot: Ekzistensial inqirozli Arduino robot: 6 qadam (rasmlar bilan)

Video: Yog 'robot: Ekzistensial inqirozli Arduino robot: 6 qadam (rasmlar bilan)
Video: DUNYODAGI ENG BALAND VA QO'RQINCHLI ATRAKSIONLAR | ENG DAXSHATLI ATRAKSIONLAR | Qizqarli Fakt | 2024, Iyul
Anonim
Image
Image

Bu loyiha "Rik va Morti" animatsion serialiga asoslangan. Epizodlarning birida Rik robot qiladi, uning yagona maqsadi sariyog 'olib kelishdir. Bruface (Bryussel muhandislik fakulteti) talabalari sifatida bizda mexatronika loyihasi bo'yicha topshiriq bor, u taklif qilingan mavzuga asoslangan robotni yasaydi. Loyihaning vazifasi quyidagicha: faqat sariyog 'beradigan robot yasang. Bu ekzistensial inqirozga olib kelishi mumkin. Albatta, Rik va Morti epizodidagi robot juda murakkab robot va ba'zi soddalashtirishlarni amalga oshirish kerak:

Sariyog 'olib kelishning yagona maqsadi bo'lgani uchun, boshqa muqobil variantlar bor. Robotni sariyog 'bilan qiyoslashning o'rniga, uni kerakli odamga etkazishdan oldin, robot har doim yog'ni olib yurishi mumkin. Asosiy g'oya, sariyog'ni kerakli joyga olib boradigan arava yasashdir.

Yog 'tashishdan tashqari, robot qayerga moy olib kelish kerakligini bilishi kerak. Epizodda Rik robotga qo'ng'iroq qilish va buyruq berish uchun o'z ovozidan foydalanadi. Bu qimmat ovozni aniqlash tizimini talab qiladi va murakkab bo'ladi. Buning o'rniga, stolda bo'lganlarning hammasi tugmachani oladi: bu tugma ishga tushirilgach, robot bu tugmani topib, unga qarab harakat qila oladi.

Xulosa qilish uchun robot quyidagi talablarga javob berishi kerak:

  • Bu xavfsiz bo'lishi kerak: to'siqlardan qochib, stolning yiqilishining oldini olishi kerak;
  • Robot kichkina bo'lishi kerak: stolda joy cheklangan va hech kim sariyog 'xizmat qiladigan, lekin stolning yarmiga teng robotni xohlamaydi;
  • Robotning ishlashi stolning o'lchamiga yoki shakliga bog'liq emas, shuning uchun uni turli jadvallarda ishlatish mumkin;
  • Bu stolda kerakli odamga sariyog 'olib kelishi kerak.

1 -qadam: Asosiy tushuncha

Yuqorida aytib o'tilgan talablar turli xil texnikalar yordamida bajarilishi mumkin. Qabul qilingan asosiy dizayn haqidagi qarorlar bu bosqichda tushuntiriladi. Ushbu g'oyalar qanday amalga oshirilishi haqida batafsil ma'lumotni keyingi bosqichlarda topish mumkin.

O'z vazifasini bajarish uchun robot belgilangan joyga etib borguncha harakatlanishi kerak. Robotning qo'llanishini hisobga olsak, "yurish" harakati o'rniga g'ildirakni ishlatish yaxshiroqdir. Stol tekis sirt bo'lgani uchun va robot juda yuqori tezlikka chiqa olmaydi, shuning uchun ikkita harakatlanuvchi g'ildirak va bitta g'ildirakli to'p - boshqarishning eng oddiy va eng oson echimi. Harakatlanadigan g'ildiraklar ikkita dvigatel bilan quvvatlanishi kerak. Dvigatellar katta momentga ega bo'lishi kerak, lekin ular yuqori tezlikka erishishning hojati yo'q, shuning uchun uzluksiz servo motorlar ishlatiladi. Servo dvigatellarning yana bir afzalligi - Arduino -dan foydalanishning soddaligi.

To'siqlarni aniqlash masofani o'lchaydigan ultratovush sensori yordamida amalga oshirilishi mumkin, o'lchov yo'nalishini tanlash uchun servo dvigatelga biriktirilgan. Qirralarni LDR sensorlar yordamida aniqlash mumkin. LDR datchiklaridan foydalanish uchun LED yoritgichi ham, LDR sensori ham bo'lishi kerak. LDR sensori aks ettirilgan yorug'likni o'lchaydi va uni qandaydir masofa sensori sifatida ko'rish mumkin. Xuddi shu printsip infraqizil nurda ham mavjud. Raqamli chiqishga ega bo'lgan ba'zi infraqizil yaqinlik sensorlar mavjud: yaqin yoki yaqin emas. Aynan mana shu robot qirralarni aniqlash uchun kerak. Ikkita hasharot antennasi va bitta ultratovushli sensorlar kabi joylashtirilgan 2 ta chekka sensorni birlashtirib, robot to'siqlar va qirralarning oldini olishi kerak.

Tugmachani aniqlashni IQ sensorlar va LEDlar yordamida ham amalga oshirish mumkin. IR -ning afzalligi shundaki, u ko'rinmas, shuning uchun undan foydalanish stolda o'tirganlarni bezovta qilmaydi. Lazerlardan ham foydalanish mumkin edi, lekin kimdir lazerni boshqa odamning ko'ziga yo'naltirsa, yorug'lik ko'rinadigan va xavfli bo'ladi. Bundan tashqari, foydalanuvchi robotdagi datchiklarni faqat nozik lazer nurlari bilan nishonga olishi kerak bo'ladi, bu juda zerikarli bo'ladi. Robotni ikkita IQ sensori bilan jihozlash va tugmachani IQ chiroq bilan qurish orqali, IQ nurining intensivligini kuzatib, robot qaysi yo'nalishda harakat qilish kerakligini biladi. Hech qanday tugma bo'lmasa, robot chiroqlardan biri tugmachalardan birining signalini olmaguncha aylana oladi.

Sariyog 'robotning yuqori qismiga joylashtiriladi. Bu bo'linma quti va qutini ochish uchun harakatlanuvchi qopqoqdan iborat bo'lishi mumkin. Qopqoqni ochish va ultratovush sensorini siljitish uchun biz ikkita dvigatelga muhtojmiz, buning uchun uzluksiz servo dvigatellar ko'proq moslashtirilgan, chunki dvigatellar ma'lum bir pozitsiyani egallashi va shu pozitsiyani saqlab turishi kerak.

Loyihaning qo'shimcha xususiyati - tashqi muhit bilan robot ovozi bilan muloqot qilish edi. Ovozli signal oddiy va shu maqsadda moslashtirilgan, lekin uni istalgan vaqtda ishlatish mumkin emas, chunki juda katta yutuq.

Loyihaning asosiy qiyinchiliklari kodlashga bog'liq, chunki mexanik qismi juda sodda. Robotning tiqilib qolishi yoki istalmagan ishni oldini olish uchun ko'p holatlarni hisobga olish kerak. Biz hal qilishimiz kerak bo'lgan asosiy muammolar - to'siq tufayli IQ signalini yo'qotish va tugmachaga kelganda to'xtash!

2 -qadam: materiallar

Mexanik qismlar

  • 3D printer va lazerni kesish mashinasi

    • PLA 3D bosib chiqarish uchun ishlatiladi, lekin siz ABS -dan foydalanishingiz mumkin
    • 3 mm qayinli kontrplakdan yasalgan plastinka lazer bilan kesish uchun ishlatiladi, chunki u keyinchalik osonlikcha o'zgartirishlar kiritishga imkon beradi, pleksiglasdan ham foydalanish mumkin, lekin uni lazer bilan kesib bo'lmaganda uni o'zgartirish qiyinroq.
  • Boltlar, yong'oqlar, yuvish mashinalari

    Ko'pgina komponentlar M3 tugmachali murvat, kir yuvish mashinasi va yong'oq yordamida birlashtiriladi, lekin ularning ba'zilari M2 yoki M4 murvatini o'rnatishni talab qiladi. Boltlarning uzunligi 8-12 mm oralig'ida

  • 25 mm va 15 mm PCB oralig'i
  • 2 mos keladigan g'ildirakli servo motorlar
  • 1-2 mm diametrli qalin metall simlar

Elektron qismlar

  • Mikrokontroller

    1 arduino UNO kengashi

  • Servo motorlar

    • 2 ta katta servo dvigatellar: Feetech 6Kg 360 daraja doimiy
    • 2 ta mikro servo dvigatel: Feetech FS90
  • Sensorlar

    • 1 Ultrasonik sensor
    • 2 ta IR yaqinlik sensori
    • 2 ta IR fotodiod
  • Batareyalar

    • 1 9V batareya ushlagichi + batareya
    • 1 ta 4AA batareya ushlagichi + batareyalar
    • 1 9V batareya qutisi + batareya
  • Qo'shimcha komponentlar

    • Ba'zi o'tish simlari, simlar va lehim plitalari
    • Ba'zi rezistorlar
    • 1 IQ LED
    • 3 ta kalit
    • 1 ta signal
    • 1 tugma
    • 1 Arduino 9V batareya ulagichi

3 -qadam: elektronikani sinab ko'rish

Elektronni sinovdan o'tkazish
Elektronni sinovdan o'tkazish
Elektronni sinovdan o'tkazish
Elektronni sinovdan o'tkazish

Tugmani yaratish:

Tugma oddiygina kalit, infraqizil LED va 220 V kuchlanishli ketma -ket 9V batareya bilan quvvatlanadi. Bu ixcham va toza dizayn uchun 9V batareya to'plamiga joylashtirilgan.

Infraqizil qabul qilish modullarini yaratish:

Ushbu modullar teshikli lehim taxtalari yordamida ishlab chiqariladi, keyinchalik ular vintlar bilan robotga biriktiriladi. Ushbu modullarning sxemalari umumiy sxemalarda tasvirlangan. Printsip infraqizil nurning intensivligini o'lchashdir. O'lchovlarni yaxshilash uchun ma'lum bir qiziqish yo'nalishiga e'tiborni qaratish uchun kollimatorlardan foydalanish mumkin.

Loyihaning turli talablari elektron qurilmalar yordamida bajarilishi kerak. Nisbatan past murakkablikni saqlab qolish uchun qurilmalar soni cheklangan bo'lishi kerak. Ushbu bosqichda barcha qismlarni alohida tekshirish uchun simlar sxemasi va har bir kod mavjud:

  • Uzluksiz Servo dvigatellari;
  • Ultrasonik sensor;
  • Uzluksiz Servo dvigatellari;
  • Buzzer;
  • IR tugmachasining yo'nalishini aniqlash;
  • Yaqinlik sensorlar yordamida qirralarni aniqlash;

Bu kodlar dastlab komponentlarni tushunishga yordam beradi, lekin keyingi bosqichlarda disk raskadrovka qilish uchun ham juda foydali. Agar biror muammo yuzaga kelsa, barcha komponentalarni alohida sinab ko'rish orqali xato aniqlanishi mumkin.

4 -qadam: 3D bosma va lazerli kesilgan qismlar dizayni

3D bosma va lazerli kesilgan qismlar dizayni
3D bosma va lazerli kesilgan qismlar dizayni
3D bosma va lazerli kesilgan qismlar dizayni
3D bosma va lazerli kesilgan qismlar dizayni
3D bosma va lazerli kesilgan qismlar dizayni
3D bosma va lazerli kesilgan qismlar dizayni

Lazer bilan kesilgan qismlar

O'rnatish, agar kerak bo'lsa, elektronikaga oson kirishni ta'minlaydigan ochiq dizaynga ega bo'lish uchun tenglikni ajratgichlar bilan biriktirilgan uchta asosiy gorizontal plitalardan yasalgan.

Oxirgi yig'ish uchun ajratgichlar va boshqa komponentlarni burab qo'yish uchun bu plitalar kerakli teshiklarni kesib olishi kerak. Asosan, barcha uchta plastinkada bir xil joylardagi ajratgichlar uchun teshiklar va har bir plastinkada mos ravishda elektronika uchun maxsus teshiklar o'rnatilgan. E'tibor bering, o'rta plastinkada o'rtada simlar o'tadigan teshik bor.

Kichkina qismlar katta servo o'lchamlari bo'yicha kesiladi, ularni montajga mahkamlaydi.

3D bosilgan qismlar

Lazerni kesishdan tashqari, ba'zi qismlarni 3D bosib chiqarish kerak bo'ladi:

  • Ultrasonik sensorni qo'llab -quvvatlaydi, bu uni bitta mikro servo motorli qo'l bilan bog'laydi
  • Kastor g'ildiragi va ikkita IQ sensori uchun tayanch. IQ sensorlar uchun bo'lakning quti shaklidagi uchlarining o'ziga xos dizayni, IQ signalini chiqaruvchi tugma va IQ sensorlar orasidagi aralashuvni oldini olish uchun ekran vazifasini bajaradi, ular faqat er yuzida bo'layotgan voqealarga e'tibor qaratishlari kerak.
  • Qopqoqni ochadigan mikro servo dvigatelni qo'llab -quvvatlash
  • Va nihoyat, qopqog'ini ochadigan mikro servo dvigatel bilan to'qnashuvni oldini olish orqali, ish burchagi kattaroq bo'lishi uchun ikkita bo'lakdan yasalgan qopqoqning o'zi:

    • Pastki qismi yuqori plastinkaga o'rnatiladi
    • Yuqori qismi pastki qismga menteşe bilan bog'langan va qalin metall sim yordamida servo tomonidan harakatga keltiriladi. Biz robotga bosh berib, unga ozgina shaxsiyat qo'shishga qaror qildik.

Barcha qismlar ishlab chiqilgan va fayllar ishlatilgan mashinalar uchun to'g'ri formatda eksport qilinganidan so'ng, ularni qismlarga aylantirish mumkin. Shuni yodda tutingki, 3D bosib chiqarish juda ko'p vaqtni oladi, ayniqsa qopqoqning yuqori qismining o'lchamlari bilan. Barcha qismlarni chop etish uchun sizga bir yoki ikki kun kerak bo'lishi mumkin. Lazerni kesish bir necha daqiqaga to'g'ri keladi.

Barcha SOLIDWORKS fayllarini ziplangan papkada topish mumkin.

5 -qadam: O'rnatish va simlarni ulash

Image
Image
O'rnatish va ulash
O'rnatish va ulash
O'rnatish va ulash
O'rnatish va ulash
O'rnatish va ulash
O'rnatish va ulash

O'rnatish pastdan yuqoriga qarab, komponentlarni bir -biriga ulash va vintlashdan iborat bo'ladi.

Pastki plastinka

Pastki plastinka 4AA batareya to'plami, servo dvigatellar, bosilgan qism (plastinka ostiga to'pni mahkamlash), ikkita datchik sensori va 6 ta erkak-urg'ochi oralig'i bilan yig'ilgan.

O'rta plastinka

Keyinchalik, ikkita plastinka orasidagi servo motorlarni siqib, o'rta plastinka o'rnatilishi mumkin. Bu plastinka, uning ustiga boshqa bo'shliqlar to'plamini qo'yish orqali o'rnatilishi mumkin. Ba'zi kabellar markaziy teshikdan o'tishi mumkin.

Ultrasonik modul Arduino, 9V batareya to'plami (arduino quvvatlantiruvchi) va robotning old qismidagi ikkita infraqizil qabul qiluvchi modul bilan o'rta plastinkada o'rnatiladigan uzluksiz servoga ulanishi mumkin. Ushbu modullar teshikli lehim taxtalaridan yasalgan va plastinkaga vintlar bilan biriktirilgan. Ushbu modullarning sxemalari umumiy sxemalarda tasvirlangan.

Yuqori plastinka

Yig'ishning bu qismida kalitlar o'rnatilmagan, lekin robot hamma narsani qila oladi, faqat qopqoqni talab qiladigan harakatlardan tashqari, bu bizga uchburchakni to'g'rilash, harakat kodini moslashtirish va osonlik bilan sinovdan o'tkazish imkonini beradi. arduino portlariga kirish.

Bularning barchasiga erishilganda, yuqori plastinka ajratgichlar bilan o'rnatilishi mumkin. Oxirgi komponentlar - ikkita kalit, tugma, servo, signal va qopqoq tizimi, nihoyat, yig'ishni tugatish uchun yuqori plastinkaga o'rnatilishi mumkin.

Sinash va to'g'rilash kerak bo'lgan oxirgi narsa - bu qopqoqni to'g'ri ochish uchun servo burchagi.

Chekka datchiklarining ostonasi har xil stol usti uchun potentsiometr (tekis tornavida yordamida) bilan moslashtirilishi kerak. Oq stol, masalan, jigarrang stolga qaraganda pastroq polga ega bo'lishi kerak. Sensorlarning balandligi kerakli chegaraga ta'sir qiladi.

Ushbu bosqich oxirida montaj tugaydi va oxirgi qolgan qismi etishmayotgan kodlardir.

6 -qadam: Kodlash: Hammasini bir joyga to'plash

Robotning ishlashi uchun zarur bo'lgan barcha kodlar yuklab olinadigan ziplangan faylda. Eng asosiysi - robotning sozlash va funktsional tsiklini o'z ichiga olgan "asosiy" kod. Boshqa funktsiyalarning aksariyati pastki fayllarda yozilgan (ziplangan papkada ham). Ushbu kichik fayllar Arduino-ga yuklashdan oldin asosiy skript bilan bir xil papkada ("asosiy" deb nomlangan) saqlanishi kerak.

Avval robotning umumiy tezligi "eslatish" o'zgaruvchisi bilan aniqlanadi. Bu "eslatish" - bu robot qaysi tomonga burilganini eslaydigan qiymat. Agar "eslatish = 1" bo'lsa, robot chapga burilgan edi, agar "eslatish = 2" bo'lsa, robot o'ngga burilgan/edi.

int tezligi = 9; // Robotning umumiy tezligi

int xatırlatma = 1; // Dastlabki yo'nalish

Robotni sozlashda dasturning har xil pastki fayllari ishga tushiriladi. Ushbu kichik fayllarda dvigatellar, datchiklar va boshqalarni boshqarishning asosiy funktsiyalari yozilgan. R2D2 () funktsiyasini faollashtirib, robot "Star Wars" filmining franshizasidagi R2D2 robotiga o'xshash shovqin chiqaradi. u boshlanadi. Bu erda r2D2 () funktsiyasi buzzerning juda katta oqim olishiga yo'l qo'ymaslik uchun o'chirilgan.

// O'rnatish @ reset // ----------------

void setup () {initialize_IR_sensors (); boshlang'ich_ to'siqlar_ va_ qirralar (); initialize_movement (); boshlang'ich_lid (); boshlang'ich_buzzer (); // r2D2 (); int xatırlatma = 1; // boshlang'ich yo'nalish Boshlovchi (eslatish); }

Ishga tushirish (eslatish) funktsiyasi birinchi navbatda sozlashda chaqiriladi. Bu funksiya robotni orqaga burilishiga va tugmalardan birining IQ signalini izlashga majbur qiladi. Tugmani topgandan so'ng, dastur "kond" o'zgaruvchisini noto'g'ri holatga o'tkazib, boshlang'ich funktsiyasidan chiqadi. Robotning aylanishi paytida uning atrof -muhitini bilish kerak: u chekka va to'siqlarni aniqlashi kerak. Bu har safar aylanishni davom ettirishdan oldin tekshiriladi. Robot to'siq yoki chekkani aniqlagandan so'ng, bu to'siqlar yoki qirralarning oldini olish protokoli bajariladi. Ushbu protokollar keyingi bosqichda tushuntiriladi. Boshlang'ich funktsiyasi bitta o'zgaruvchiga ega, bu oldin muhokama qilingan eslatuvchi o'zgaruvchisi. "Starter" funktsiyasiga eslatish qiymatini berib, robot tugmani qidirish uchun qaysi tomonga burilishi kerakligini biladi.

// Boshlang'ich pastadir: orqaga buriling va tugmani qidiring // ------------------------------------ ----------------

void Boshlang'ich (int eslatish) {if (isedgeleft () || isedgeright ()) {// Kenarlarni aniqlangDetected (eslatish); } else {bool cond = true; while (cond == true) {if (buttonleft () == false && buttonright () == false && isButtonDetected () == rost) {kond = noto'g'ri; } else {if (eslatish == 1) {// Biz chapga burildik, agar (isobstacleleft ()) {stopspeed (); oldini olish (to'siq) (eslatish); } else if (isedgeleft () || isedgeright ()) {// Chegaralarni aniqlang edgeDetected (eslatish); } boshqa {burilish (tezlik); }} boshqa if (eslatish == 2) {if (isobstacleright ()) {stopspeed (); oldini olish (to'siq) (eslatish); } else if (isedgeleft () || isedgeright ()) {// Chegaralarni aniqlang edgeDetected (eslatish); } boshqa {burilish (tezlik); }}}}}}

Agar robot tugmachani topsa, birinchi boshlang'ich tsikli chiqib ketadi va robotning asosiy, funktsional tsikli boshlanadi. Bu asosiy tsikl juda murakkab, chunki har safar robot oldida to'siq yoki chekka bor yoki yo'qligini aniqlashi kerak, asosiy g'oya shundaki, robot tugmani har safar topib, uni yo'qotib qo'yadi. Ikkita IQ sensori yordamida biz uchta holatni ajrata olamiz:

  • chap va o'ng sensor tomonidan aniqlangan IQ nurlari orasidagi farq ma'lum bir chegaradan kattaroq va tugma bor.
  • IQ nuridagi farq ostonadan kichikroq va robot oldida tugma bor.
  • IQ nuridagi farq ostonadan kichikroq va robot oldida NO tugmasi yo'q.

Yo'l harakati tartibi quyidagicha: tugma aniqlanganda, robot aylanayotgan tomonga burilib (eslatuvchi o'zgaruvchisi yordamida) tugma tomon harakat qiladi va shu bilan birga biroz oldinga siljiydi. Agar robot juda uzoqqa burilsa, tugma yana yo'qoladi va shu vaqtda robot boshqa tomonga burilish kerakligini eslaydi. Bu biroz oldinga siljish paytida ham amalga oshiriladi. Shunday qilib, robot doimo chapga va o'ngga buriladi, lekin ayni paytda tugma tomon harakat qilmoqda. Har safar robot tugmachani topganda, u yo'qolguncha aylanaveradi, bu holda u boshqa yo'nalishda harakat qila boshlaydi. "turnleft ()" yoki "turnright ()", asosiy ko'chadan esa "moveleft ()" va "moveright ()" ishlatiladi. Chapga/o'ngga harakat qilish funktsiyalari nafaqat robotni burishga, balki uni oldinga siljitishga ham majbur qiladi.

/ * Funktsional tsikl ---------------------------- Bu erda faqat trekning tartibi bor */

int yo'qolgan = 0; // Yo'qotilgan bo'lsa = 0 tugma topiladi, yo'qolgan = 1 tugma yo'qoladi void loop () {if (isedgeleft () || isedgeright ()) {

agar (! isobstacle ()) {

oldinga siljish (tezlik); kechikish (5); } else {oldini olish_ to'siq (eslatish); } else {if (eslatish == 1 && yo'qolgan == 1) {// Biz chap tezlik bilan burilayotgandik (); if (! isobstacleright ()) {moveright (tezlik); // Tugmani topish uchun orqaga buriling} else {oldini_ to'siq (eslatish); } eslatish = 2; } else if (eslatish == 2 && yo'qolgan == 1) {stopspeed (); if (! isobstacleleft ()) {moveleft (tezlik); // Biz o'ngga burildik} boshqa {oldini_ to'siq (eslatish); } eslatish = 1; } else if (yo'qolgan == 0) {if (eslatish == 1) {// Biz chapga burildik, agar (! isobstacleleft ()) {moveleft (tezlik); // Biz o'ngga burildik} boshqa {stopspeed (); oldini olish (to'siq) (eslatish); } //} else if (eslatish == 2) {if (! isobstacleright ()) {moveright (tezlik); // tugmani topish uchun orqaga buriling} else {stopspeed (); oldini olish (to'siq) (eslatish); }}} kechikish (10); yo'qolgan = 0; }} //}}

Endi ikkita eng murakkab tartib haqida bir oz tushuntirish beriladi:

Qirralardan saqlaning

Qirralarning oldini olish protokoli "harakat" pastki faylida yozilgan "edgeDetection ()" funktsiyasida aniqlangan. Bu protokol robot faqat manzilga yetganda chekka bilan to'qnash kelishi kerakligiga asoslanadi: tugma. Robot chekkani aniqlagandan so'ng, birinchi navbatda, chekkadan xavfsiz masofada bo'lish uchun biroz orqaga qaytishdir. Bu bajarilgach, robot 2 soniya kutadi. Agar kimdir shu ikki soniya ichida robotning old qismidagi tugmachani bossa, robot bu yog'ni xohlagan kishiga etib kelganini biladi va sariyog 'bo'lagini ochib, sariyog'ini taqdim etadi. Bu vaqtda kimdir robotdan sariyog 'olishi mumkin. Bir necha soniyadan so'ng robot kutishdan charchaydi va sariyog 'qopqog'ini yopadi. Qopqoq yopilgandan so'ng, robot boshqa tugmachani qidirish uchun boshlang'ich pastadirini bajaradi. Agar robot belgilangan joyga etib borishdan oldin chekkaga duch kelsa va robotning old qismidagi tugma bosilmasa, robot sariyog 'qopqog'ini ochmaydi va darhol boshlang'ich pastadirini bajaradi.

To'siqlardan qoching

Avoid_obstacle () funktsiyasi ham "harakat" pastki faylida joylashgan. To'siqlardan qochishning eng qiyin tomoni shundaki, robot juda katta ko'r nuqtaga ega. Ultrasonik sensor robotning old tomoniga joylashtirilgan, ya'ni u to'siqlarni aniqlay oladi, lekin u qachon o'tib ketganini bilmaydi. Buni hal qilish uchun quyidagi printsip qo'llaniladi: Robot to'siqqa duch kelganida, u boshqa tomonga burilish uchun reming o'zgaruvchisidan foydalanadi. Shunday qilib, robot to'siqni urishdan saqlaydi. Robot ultratovush sensori boshqa to'siqni aniqlamaguncha burilishda davom etadi. Robot aylanayotganda, to'siq aniqlanmaguncha hisoblagich kuchaytiriladi. Bu hisoblagich to'siq uzunligining taxminiy qiymatini beradi. Oldinga siljish va bir vaqtning o'zida hisoblagichni pasaytirish orqali to'siqdan qochish mumkin. Hisoblagich 0 ga yetgandan so'ng, tugmani boshqa joyga ko'chirish uchun Starter funktsiyasidan yana foydalanish mumkin. Albatta, robot boshlang'ich funktsiyasini to'siqqa duch kelgunga qadar eslagan tomonga burish orqali bajaradi (yana eslatuvchi o'zgaruvchini ishlatib).

Endi siz kodni to'liq tushunganingizdan so'ng, uni ishlatishni boshlashingiz mumkin!

Eshiklarni atrof -muhitga moslashtirishga ishonch hosil qiling (masalan, oq jadvallarda IK aks etishi yuqori) va turli parametrlarni ehtiyojlaringizga moslashtiring. Bundan tashqari, turli modullarning quvvatlanishiga katta e'tibor berilishi kerak. Servo dvigatellar Arduino 5V portidan quvvat olmasligi muhim ahamiyatga ega, chunki ular katta oqim oladi (bu mikrokontrollerga zarar etkazishi mumkin). Agar datchiklar uchun servolarni quvvatlantiradigan quvvat manbai ishlatilsa, ba'zi o'lchov muammolariga duch kelish mumkin.

Tavsiya: