Мазмұны:

Май роботы: экзистенциалды дағдарысы бар Arduino роботы: 6 қадам (суреттермен)
Май роботы: экзистенциалды дағдарысы бар Arduino роботы: 6 қадам (суреттермен)

Бейне: Май роботы: экзистенциалды дағдарысы бар Arduino роботы: 6 қадам (суреттермен)

Бейне: Май роботы: экзистенциалды дағдарысы бар Arduino роботы: 6 қадам (суреттермен)
Бейне: Ежедневные новости Crypto Pirates — вторник, 19 января 2022 г. — последнее обновление новостей о криптовалютах 2024, Шілде
Anonim
Image
Image

Бұл жоба «Рик пен Морти» анимациялық сериясына негізделген. Эпизодтардың бірінде Рик робот жасайды, оның жалғыз мақсаты - май әкелу. Брюсфейдің (Брюссель инженерлік факультеті) студенттері ретінде бізде мехатроника жобасына тапсырма бар, ол ұсынылған тақырыпқа негізделген робот құрастырады. Бұл жобаның міндеті: тек сары майға қызмет ететін робот жасаңыз. Ол экзистенциалды дағдарысқа ұшырауы мүмкін. Әрине, Рик пен Морти эпизодындағы робот - бұл өте күрделі робот, және кейбір жеңілдетулер жасау қажет:

Сары май әкелудің жалғыз мақсаты болғандықтан, балама нұсқалар бар. Роботты майды ұстап алудың орнына, оны керекті адамға әкелместен, робот майды үнемі алып жүре алады. Негізгі идея - майды қажет жерге жеткізетін арба жасау.

Майды тасымалдаудан басқа, робот майды қайда әкелу керектігін білуі керек. Эпизодта Рик өз дауысын пайдаланып, роботқа қоңырау шалып, бұйрық береді. Бұл қымбат дауысты тану жүйесін қажет етеді және күрделі болады. Оның орнына үстелге отырғандардың бәрі түймені алады: бұл түйме іске қосылғаннан кейін робот бұл түймені тауып, оған қарай жылжи алады.

Қайталау үшін робот келесі талаптарды орындауы керек:

  • Ол қауіпсіз болуы керек: ол кедергілерден аулақ болып, үстелдің құлауына жол бермеуі керек;
  • Робот кішкентай болуы керек: үстелдегі орын шектеулі және ешкімге сары маймен қызмет ететін робот қажет емес, бірақ оның көлемі үстелдің жартысына тең;
  • Роботтың жұмысы үстелдің өлшеміне немесе формасына байланысты болмайды, сондықтан оны әр түрлі үстелдерде қолдануға болады;
  • Ол майды дастархан басындағы дұрыс адамға әкелуі керек.

1 -қадам: Негізгі түсінік

Жоғарыда аталған талаптарды әр түрлі әдістерді қолдану арқылы орындауға болады. Негізгі дизайн туралы шешімдер осы қадамда түсіндіріледі. Бұл идеялардың қалай жүзеге асатыны туралы толығырақ келесі қадамдарда білуге болады.

Өз міндетін орындау үшін робот белгіленген жерге жеткенше қозғалуы қажет. Роботтың қолданылуын ескере отырып, оны «жүру» қозғалысының орнына дөңгелектерді қолданған дұрыс. Үстел тегіс бет болғандықтан және робот өте жоғары жылдамдыққа жете алмайтындықтан, екі доңғалақ пен бір дөңгелек шар - басқарудың ең қарапайым және қарапайым шешімі. Іске қосылған дөңгелектер екі қозғалтқышпен қоректенуі керек. Қозғалтқыштарда үлкен момент болуы керек, бірақ олар жоғары жылдамдыққа жетудің қажеті жоқ, сондықтан үздіксіз серво қозғалтқыштары қолданылады. Серво қозғалтқыштарының тағы бір артықшылығы - Arduino -мен қолданудың қарапайымдылығы.

Кедергілерді анықтау қашықтықты өлшейтін ультрадыбыстық сенсордың көмегімен, өлшеу бағытын таңдау үшін серво қозғалтқышына бекітілген. LDR сенсорларының көмегімен жиектерді анықтауға болады. LDR сенсорларын қолдану үшін жарықдиодты және LDR сенсоры бар құрылғы қажет болады. LDR сенсоры шағылған жарықты өлшейді және оны қашықтық сенсоры ретінде қарастыруға болады. Дәл осындай принцип инфрақызыл сәуледе де бар. Сандық шығысы бар кейбір жақын инфрақызыл сенсорлар бар: жабу немесе жабу. Дәл осы роботтың шеттерін анықтау үшін қажет. Екі жәндік антеннасы мен бір іске қосылған ультрадыбыстық датчик сияқты орналастырылған 2 шеткі датчиктерді біріктіру арқылы робот кедергілер мен шеттерден аулақ болуға тиіс.

Түймені анықтауды IR сенсорлары мен жарықдиодты көмегімен де жасауға болады. Инфрақызыл қондырғының артықшылығы - оның көрінбеуі, бұл оны үстелдегі адамдарға кедергі жасамайды. Лазерді де қолдануға болады, бірақ сол кезде жарық көзге көрініп тұрады, ал егер біреу лазерді басқа адамның көзіне қаратса, қауіпті болады. Сондай -ақ, пайдаланушы роботтағы сенсорларды тек жұқа лазер сәулесімен бағыттауы керек еді, бұл өте тітіркендіргіш еді. Роботты екі ИҚ сенсорымен жабдықтап, ИК-тетігімен түймені құрастыру арқылы робот ИК-жарығының интенсивтілігіне сүйене отырып, қай бағытта жүру керектігін біледі. Түйме болмаған кезде, робот светодиодтардың бірі түймелердің бірінен сигнал алғанша бұрыла алады.

Сары май роботтың жоғарғы жағындағы бөлімге салынған. Бұл бөлік қораптан және қорапты ашу үшін іске қосылған қақпақтан тұруы мүмкін. Қақпақты ашу және ультрадыбыстық сенсорды жылжыту үшін кедергілерді сканерлеу және анықтау үшін бізге екі қозғалтқыш қажет, және бұл үшін үздіксіз серво қозғалтқыштары бейімделген, себебі қозғалтқыштар белгілі бір позицияда жүруі және сол позицияны сақтауы қажет.

Жобаның қосымша ерекшелігі робот дауысымен сыртқы ортамен қарым -қатынас жасау болды. Дыбыстық сигнал қарапайым және осы мақсатқа бейімделген, бірақ оны кез келген уақытта қолдануға болмайды, себебі қазіргі кездегі ұтыс жоғары.

Жобаның негізгі қиындықтары кодтауға негізделген, себебі механикалық бөлігі өте қарапайым, роботтың кептеліп қалуын немесе қажетсіз нәрсені жасамау үшін көптеген жағдайларды ескеру қажет. Біз шешуі керек негізгі мәселелер - кедергіден IR сигналын жоғалту және ол түймені басқанда тоқтайды!

2 -қадам: материалдар

Механикалық бөлшектер

  • 3D принтер және лазерлік кесу машинасы

    • PLA 3D басып шығару үшін қолданылады, бірақ сіз ABS -ді де пайдалана аласыз
    • Лазерлік кесу үшін 3 мм қайыңнан жасалған фанера пайдаланылады, себебі ол кейін оңай өзгертуге мүмкіндік береді, сонымен қатар плексиглассаны қолдануға болады, бірақ оны лазермен кескеннен кейін оны өзгерту қиынға соғады.
  • Болттар, жаңғақтар, шайбалар

    Құрамдас бөліктердің көпшілігі M3 түймелер, шайбалар мен гайкалар көмегімен біріктіріледі, бірақ олардың кейбіреулері M2 немесе M4 болттарын орнатуды қажет етеді. Бұрандалардың ұзындығы 8-12 мм диапазонында

  • ПХД аралықтары, 25 мм және 15 мм
  • Дөңгелектері сәйкес келетін 2 серво қозғалтқышы
  • Диаметрі шамамен 1-2 мм болатын қалың металл сым

Электронды бөлшектер

  • Микроконтроллер

    1 arduino UNO тақтасы

  • Серво қозғалтқыштары

    • 2 үлкен серво қозғалтқышы: Feetech үздіксіз 6Kg 360 градус
    • 2 микросерво қозғалтқышы: Feetech FS90
  • Сенсорлар

    • 1 Ультрадыбыстық сенсор
    • 2 IR жақындық сенсоры
    • 2 ИҚ фотодиодтары
  • Батареялар

    • 1 9В батарея ұстағыш + батарея
    • 1 4АА батарея ұстағыш + батареялар
    • 1 9В батарея қорабы + батарея
  • Қосымша компоненттер

    • Кейбір секіретін сымдар, сымдар мен дәнекерлеу табақтары
    • Кейбір резисторлар
    • 1 IR жарық диоды
    • 3 қосқыш
    • 1 дыбыстық сигнал
    • 1 түйме
    • 1 Arduino - 9В батарея қосқышы

3 -қадам: электрониканы тексеру

Электрониканы сынау
Электрониканы сынау
Электрониканы сынау
Электрониканы сынау

Батырманың жасалуы:

Түйме 9В батареямен жұмыс істейтін қосқыш, инфрақызыл жарық диод және 220 Ом сериялы резистор арқылы жасалған. Бұл жинақы және таза дизайн үшін 9В аккумуляторлық жинаққа салынған.

Инфрақызыл қабылдағыш модульдерін құру:

Бұл модульдер тесік арқылы дәнекерлеу тақталарымен жасалған, олар кейін роботқа бұрандалармен бекітіледі. Бұл модульдердің схемалары жалпы схемада бейнеленген. Принципі - инфрақызыл сәуленің қарқындылығын өлшеу. Өлшеуді жақсарту үшін белгілі бір қызығушылық бағытына шоғырлану үшін коллиматорларды (шөгілетін түтіктерден жасалған) қолдануға болады.

Жобаның әр түрлі талаптары электронды құрылғыларды қолдану арқылы орындалуы қажет. Салыстырмалы түрде төмен күрделілікті сақтау үшін құрылғылардың санын шектеу керек. Бұл қадамда барлық бөлшектерді бөлек тексеруге арналған сымдар схемасы мен әрбір код бар:

  • Үздіксіз серво қозғалтқыштары;
  • Ультрадыбыстық сенсор;
  • Үздіксіз сервистік қозғалтқыштар;
  • Зуммер;
  • IR түймесінің бағытын анықтау;
  • Жақындық сенсорларымен жиектерді анықтау;

Бұл кодтар бастапқыда компоненттерді түсінуге көмектеседі, бірақ ол кейінгі кезеңдерде отладтау үшін өте пайдалы. Егер белгілі бір мәселе туындаса, барлық компоненттерді бөлек тестілеу арқылы қатені оңай табуға болады.

4 -қадам: 3D басып шығарылған және лазермен кесілген кесектер дизайны

3D басып шығарылған және лазерлік кесінділер дизайны
3D басып шығарылған және лазерлік кесінділер дизайны
3D басып шығарылған және лазерлік кесінділер дизайны
3D басып шығарылған және лазерлік кесінділер дизайны
3D басып шығарылған және лазерлік кесінділер дизайны
3D басып шығарылған және лазерлік кесінділер дизайны

Лазерлік кесінділер

Қажет болған жағдайда электроникаға оңай қол жеткізуді қамтамасыз ететін ашық конструкцияны алу үшін құрастыру ПХД аралықтармен бекітілген үш негізгі көлденең пластиналардан жасалған.

Бұл тақталар аралық бөлшектерді және соңғы құрастыру үшін басқа компоненттерді бұрау үшін қажетті тесіктерді кесуі керек. Негізінде, барлық үш пластинаның аралықтар үшін бір жерде тесіктері бар және әр пластинада электрониканың арнайы тесіктері бекітілген. Орташа пластинаның ортасында сымдарды өткізуге арналған тесік бар екенін ескеріңіз.

Кішкене бөліктер үлкен серво өлшемдеріне сәйкес жинауға бекітіледі.

3D басып шығарылған бөліктер

Лазерлік кесуден басқа, кейбір бөліктерді 3D басып шығару қажет болады:

  • Ультрадыбыстық сенсордың тірегі, ол оны бір микросерво қозғалтқышының қолына қосады
  • Кастор дөңгелегі мен екі ИК жиегінің сенсоры. Инфрақызыл сенсорларға арналған қорапша пішінді ұштардың ерекше дизайны инфрақызыл информация сигналын шығаратын түйме мен инфрақызыл сенсорлар арасындағы кедергілерді болдырмайтын экран болып табылады, олар тек жерде болып жатқан нәрсеге назар аударуы қажет.
  • Қақпақты ашатын микросерво қозғалтқышының тірегі
  • Соңында қақпақты ашатын микросерво қозғалтқышының соқтығысуын болдырмай, үлкен жұмыс бұрышына ие болу үшін екі бөліктен жасалған қақпақтың өзі:

    • Төменгі жағы үстіңгі тақтаға бекітіледі
    • Ал төменгі жағы топсамен бекітілген және қалың металл сыммен серво арқылы іске қосылады. Біз роботқа басын бере отырып, оның жеке басын қосуды жөн көрдік.

Барлық бөліктер құрастырылғаннан кейін және файлдар қолданылатын машиналар үшін дұрыс форматта экспортталғаннан кейін, бөліктерді жасауға болады. 3D басып шығару көп уақытты қажет ететінін біліңіз, әсіресе қақпақтың жоғарғы бөлігінің өлшемдері. Барлық бөліктерді басып шығару үшін сізге бір немесе екі күн қажет болуы мүмкін. Лазермен кесу - бұл бірнеше минут.

Барлық SOLIDWORKS файлдарын қысылған қалтадан табуға болады.

5 -қадам: монтаждау және сымдар

Image
Image
Құрастыру және сымдар
Құрастыру және сымдар
Құрастыру және сымдар
Құрастыру және сымдар
Құрастыру және сымдар
Құрастыру және сымдар

Құрастыру төменнен жоғарыға қарай компоненттерді біріктіру мен бұраудың қоспасы болады.

Төменгі тақта

Төменгі тақта 4АА аккумуляторлық батареямен, сервоқозғалтқыштармен, басылған бөлікпен (допты пластинаның астына бекіту), екі жиекті датчиктермен және 6 еркек-әйелдік аралықпен жиналған.

Орташа табақша

Әрі қарай, ортаңғы тақтаны орнатуға болады, екі пластинаның арасындағы серво қозғалтқыштарын қысады. Бұл пластинаны оның үстіне басқа аралықтар жиынтығын қою арқылы бекітуге болады. Кейбір кабельдерді орталық тесік арқылы өткізуге болады.

Ультрадыбыстық модуль Arduino, 9V аккумуляторлық батареясы (arduino-ды қуаттандыратын) және роботтың алдыңғы жағындағы екі инфрақызыл қабылдағыш модульмен бірге ортаңғы тақтаға бекітілген үздіксіз сервоға қосылуы мүмкін. Бұл модульдер тесік дәнекерлеу тақталарымен жасалған және пластинаға бұрандалармен бекітілген. Бұл модульдердің схемалары жалпы схемада бейнеленген.

Үстіңгі тақта

Жинаудың бұл бөлігінде қосқыштар бекітілмеген, бірақ робот қақпақты қажет ететін әрекеттерді қоспағанда, бәрін жасай алады, осылайша ол тіректі түзетуге, қозғалыс кодын бейімдеуге және жеңілдетуге арналған тест жасауға мүмкіндік береді. arduino порттарына кіру.

Осының барлығына қол жеткізілгенде, үстіңгі тақтаны аралықтармен бекітуге болады. Екі қосқыш, түйме, серво, дыбыстық сигнал және қақпақ жүйесі болып табылатын соңғы компоненттерді жинауды аяқтау үшін үстіңгі тақтаға бекітуге болады.

Тексеруге және түзетуге болатын соңғы нәрсе - қақпақты дұрыс ашу үшін серво бұрышы.

Шеткі датчиктердің табалдырығы үстелдің әр түрлі беттеріне арналған потенциометрмен (жалпақ бұрағыш көмегімен) бейімделуі керек. Ақ үстел, мысалы, қоңыр үстелге қарағанда төменгі табалдырыққа ие болуы керек. Датчиктердің биіктігі қажетті шекті деңгейге әсер етеді.

Бұл қадамның соңында құрастыру аяқталады, ал қалған бөлігі - жетіспейтін кодтар.

6 -қадам: кодтау: бәрін біріктіру

Роботтың жұмыс істеуіне қажетті барлық кодтар жүктелетін қысылған файлда. Ең маңыздысы - роботтың конфигурациясы мен функционалды циклін қамтитын «негізгі» код. Басқа функциялардың көпшілігі ішкі файлдарда жазылған (сонымен қатар қысылған қалтада). Бұл ішкі файлдар Arduino-ға жүктемес бұрын негізгі сценарий сияқты сол қалтада («негізгі» деп аталады) сақталуы керек.

Алдымен роботтың жалпы жылдамдығы «еске түсіру» айнымалысымен бірге анықталады. Бұл «еске салу» - бұл робот қай бағытта бұрылғанын еске түсіретін мән. Егер «еске түсіру = 1» болса, робот солға/бұрылды, егер «еске түсіру = 2» болса, робот оңға/бұрылды.

int жылдамдығы = 9; // Роботтың жалпы жылдамдығы

int еске салу = 1; // Бастапқы бағыт

Роботты орнатуда бағдарламаның әр түрлі ішкі файлдары инициализацияланады. Бұл қосалқы файлдарда қозғалтқыштарды, сенсорларды,… басқарудың негізгі функциялары жазылған. Оларды баптауда инициализациялау арқылы осы файлдардың әрқайсысында сипатталған функцияларды негізгі циклде қолдануға болады. R2D2 () функциясын іске қосқанда, робот Star Wars фильмінің франшизасындағы R2D2 роботы сияқты шу шығарады. ол басталады. Мұнда r2D2 () функциясы дыбыстық сигналдың тым көп ток түсірмеуі үшін өшірілген.

// Орнату @ қалпына келтіру // ----------------

void setup () {initialize_IR_sensors (); инициализациялау_кедергілер_және жиектер (); initialize_movement (); initialize_lid (); initialize_buzzer (); // r2D2 (); int еске салу = 1; // бастапқы бағыт Стартер (еске салу); }

Стартер (еске салу) функциясы алдымен баптауда шақырылады. Бұл функция роботты артқа бұруға және түймелердің бірінің IR сигналын іздеуге мәжбүр етеді. Түймені тапқаннан кейін, бағдарлама «cond» айнымалы мәнін жалғанға өзгерту арқылы Стартер функциясынан шығады. Роботтың айналуы кезінде оның қоршаған ортаны білуі қажет: ол шеттер мен кедергілерді анықтауы керек. Бұл айналуды жалғастырар алдында әр уақытта тексеріледі. Робот кедергіні немесе жиекті анықтағаннан кейін, бұл кедергілер мен жиектерді болдырмау хаттамасы орындалады. Бұл хаттамалар осы қадамнан кейін түсіндіріледі. Стартер функциясының бір айнымалысы бар, бұл бұрын талқыланған еске түсіру айнымалысы. Стартер функциясына еске салу мәнін бере отырып, робот түймені іздеу үшін қай бағытқа бұрылу керектігін біледі.

// Бастау циклы: бұрылып, батырманы іздеңіз // ------------------------------------ ----------------

void Бастауыш (int еске түсіру) {if (isedgeleft () || isedgeright ()) {// Edet edge ofDetected (еске салу); } else {bool cond = true; while (cond == true) {if (buttonleft () == false && buttonright () == false && isButtonDetected () == true) {cond = false; } else {if (еске салу == 1) {// Біз солға бұрылдық, егер (isobstacleleft ()) {stopspeed (); кедергіден аулақ болу (еске салу); } else if (isedgeleft () || isedgeright ()) {// Edet edge ofDetected (еске салу); } else {бұрылу (жылдамдық); }} else if (еске салу == 2) {if (isobstacleright ()) {stopspeed (); кедергіден аулақ болу (еске салу); } else if (isedgeleft () || isedgeright ()) {// Edet edge ofDetected (еске салу); } else {бұрылу (жылдамдық); }}}}}}

Егер робот түймені тапса, онда бірінші Стартер циклы шығады және роботтың негізгі, функционалды циклы басталады. Бұл негізгі цикл өте күрделі, өйткені робот оның алдында кедергінің немесе жиектің бар -жоғын анықтауы керек. Негізгі идея - робот түймені әр кезде тауып, жоғалту арқылы. Екі IR сенсорының көмегімен біз үш жағдайды ажыратуға болады:

  • сол және оң сенсор анықтайтын ИҚ шамының айырмашылығы белгілі бір шекті мәннен үлкен және түйме бар.
  • IR шамының айырмашылығы табалдырықтан кіші, ал роботтың алдында түйме бар.
  • IR шамының айырмашылығы табалдырықтан кіші, ал роботтың алдында NO түймесі жоқ.

Жолдың жұмыс тәртібі келесідей: түйме анықталған кезде робот бұрылған бағытқа бұрылып (еске түсіру айнымалысын қолдана отырып) түймеге қарай жылжиды және сол уақытта сәл алға жылжиды. Егер робот тым алысқа бұрылса, түйме қайтадан жоғалады және осы сәтте робот өзінің басқа бағытта бұрылуы керектігін есіне алады. Бұл сәл алға жылжу кезінде де жасалады. Осылайша робот үнемі солға және оңға бұрылады, бірақ бұл уақытта әлі де түймені басады. Робот түймені тапқан сайын, ол жоғалғанша бұрыла береді, бұл жағдайда ол басқа бағытта қозғала бастайды. «turnleft ()» немесе «turnright ()», ал негізгі циклде «moveleft ()» және «moveright ()» қолданылады. Оңға/солға жылжу функциялары роботты бұрып қана қоймайды, сонымен қатар оны бір уақытта алға жылжытады.

/ * Функционалды цикл ---------------------------- Мұнда тек трек тәртібі бар */

int жоғалды = 0; // Егер жоғалған = 0 болса, түйме табылады, жоғалса = 1 түйме жоғалады void loop () {if (isedgeleft () || isedgeright ()) {

if (! isobstacle ()) {

алға жылжу (жылдамдық); кешіктіру (5); } else {аулақ_қойнаудан (еске салу); } else {if (еске салу == 1 && lost == 1) {// Біз солға жылдамдықпен бұрылдық (); if (! isobstacleright ()) {moveright (жылдамдық); // Түймені табу үшін бұрыңыз} else {аулақ_қолданбау (еске салу); } еске салу = 2; } else if (еске салу == 2 && lost == 1) {stopspeed (); if (! isobstacleleft ()) {moveleft (жылдамдық); // Біз оңға бұрылдық} басқа {аулақ_қолданбау (еске салу); } еске салу = 1; } else if (жоғалған == 0) {if (еске салу == 1) {// Біз солға бұрылдық, егер (! isobstacleleft ()) {moveleft (speed); // Біз оңға бұрылдық} else {stopspeed (); кедергіден аулақ болу (еске салу); } //} else if (еске салу == 2) {if (! isobstacleright ()) {moveright (жылдамдық); // Түймені табу үшін бұрыңыз} else {stopspeed (); кедергіден аулақ болу (еске салу); }}} кешіктіру (10); жоғалған = 0; }} //}}

Енді ең күрделі екі тәртіпке шағын түсініктеме берілді:

Шеттерден аулақ болыңыз

Шеттерден аулақ болу хаттамасы «қозғалыс» ішкі файлында жазылған «edgeDetection ()» функциясында анықталады. Бұл протокол робот тек тағайындалған жерге жеткен кезде ғана шетке шығуы керек екеніне сүйенеді: түйме. Робот жиекті анықтағаннан кейін, ең алдымен, сәл шегініп, қауіпсіз қашықтықта болу керек. Бұл орындалғаннан кейін робот 2 секунд күтеді. Егер біреу осы екі секундта роботтың алдындағы түймені басса, робот оның майды алғысы келген адамға жеткенін біледі және май бөлігін ашып, майды ұсынады. Осы кезде біреу роботтан майды ала алады. Бірнеше секундтан кейін робот күтуден шаршайды және май қақпағын жабады. Қақпақ жабылғаннан кейін робот басқа түймені іздеу үшін Стартер циклін орындайды. Егер робот белгіленген жерге жетпес бұрын жиекпен кездессе және роботтың алдыңғы жағындағы түйме басылмаса, робот май қақпағын ашпайды және дереу Стартер ілмегін орындайды.

Кедергілерден аулақ болыңыз

Avoid_obstacle () функциясы «қозғалыс» ішкі файлында да орналасқан. Кедергілерден аулақ болудың қиын бөлігі - роботтың өте үлкен соқыр жерінің болуы. Ультрадыбыстық сенсор роботтың алдыңғы жағында орналасқан, яғни ол кедергілерді анықтай алады, бірақ оның қашан өткенін білмейді. Бұл мәселені шешу үшін келесі принцип қолданылады: робот кедергіге тап болғаннан кейін, басқа бағытқа бұрылу үшін реминг айнымалысын қолданады. Осылайша робот кедергілерге ұрынбайды. Робот ультрадыбыстық сенсор кедергі анықтамайынша бұрыла береді. Робот айналатын уақытта кедергі анықталмайынша есептегіш күшейтіледі. Бұл есептегіш кедергінің ұзындығының жуықтауын береді. Алға қарай жылжу және бір уақытта есептегішті төмендету арқылы кедергінің алдын алуға болады. Есептегіш 0 -ге жеткенде, түйменің орнын ауыстыру үшін Стартер функциясын қайтадан пайдалануға болады. Әрине, робот кедергілерге тап болғанға дейін есінде қалған бағытқа бұрылу арқылы Стартер функциясын орындайды (қайтадан еске түсіру айнымалысын қолдана отырып).

Енді сіз кодты толық түсінген соң, оны пайдалануға кірісе аласыз!

Шектерді қоршаған ортаға бейімдеуді ұмытпаңыз (мысалы, ақ кестелерде ИҚ шағылысуы жоғары) және әр түрлі параметрлерді сіздің қажеттіліктеріңізге бейімдеу. Сонымен қатар, әр түрлі модульдердің қуаттылығына үлкен назар аудару қажет. Серво қозғалтқыштары Arduino 5V портынан жұмыс жасамайтыны маңызды, өйткені олар көп ток алады (бұл микроконтроллерді зақымдауы мүмкін). Егер сенсорлар үшін серво серуендейтін қуат көзі пайдаланылса, кейбір өлшеу проблемалары туындауы мүмкін.

Ұсынылған: