Ռոբոտներ arduino uno-ում. Պատրաստի Arduino ռոբոտներ. Ավարտված ռոբոտի կամ ռոբոտի շրջանակ

Բարեւ բոլորին. Այս հոդվածը կարճ պատմություն է այն մասին, թե ինչպես անելռոբոտ նրանց ձեռքեր. Ինչու՞ պատմություն, դուք հարցնում եք: Այս ամենը պայմանավորված է նրանով, որ նման արտադրության համար արհեստներանհրաժեշտ է օգտագործել զգալի քանակությամբ գիտելիքներ, ինչը շատ դժվար է ներկայացնել մեկ հոդվածում։ Մենք կանցնենք կառուցման գործընթացում, կնայենք ծածկագրին և, ի վերջո, կյանքի կկոչենք Սիլիկոնային հովտի ստեղծումը: Խորհուրդ եմ տալիս դիտել տեսանյութը, որպեսզի պատկերացում կազմեք, թե ինչ պետք է լինի վերջում։

Նախքան առաջ անցնելը, խնդրում ենք նշել հետևյալը, որ արտադրության մեջ արհեստներօգտագործել է լազերային կտրիչ: Սկսած լազերային կտրիչԿարող եք հրաժարվել՝ ունենալով ձեռքերով աշխատելու բավարար փորձ։ Ճշգրտությունը նախագիծը հաջողությամբ ավարտելու բանալին է:

Քայլ 1. Ինչպե՞ս է այն աշխատում:

Ռոբոտն ունի 4 ոտք, որոնցից յուրաքանչյուրի վրա կա 3 սերվո, որոնք թույլ են տալիս նրան շարժել վերջույթները 3 աստիճան ազատության պայմաններում։ Նա շարժվում է «սողացող քայլվածքով»։ Թող դա լինի դանդաղ, բայց ամենասահուններից մեկը:

Նախ պետք է ռոբոտին սովորեցնել շարժվել առաջ, հետ, ձախ և աջ, ապա ավելացնել ուլտրաձայնային սենսոր, որը կօգնի հայտնաբերել խոչընդոտները/խոչընդոտները, իսկ դրանից հետո՝ Bluetooth մոդուլ, որի շնորհիվ ռոբոտի կառավարումը նոր մակարդակի կհասնի։

Քայլ 2. Պահանջվող մասեր

Կմախքպատրաստված պլեքսիգլասից 2 մմ հաստությամբ։

Տնական արտադրանքի էլեկտրոնային մասը բաղկացած կլինի.

  • 12 սերվո;
  • arduino nano (կարելի է փոխարինել ցանկացած այլ arduino տախտակով);

  • Վահան servo հսկողության համար;
  • էլեկտրամատակարարում (նախագծում օգտագործվել է 5V 4A էլեկտրամատակարարման միավոր);

  • ուլտրաձայնային սենսոր;
  • hc 05 bluetooth մոդուլ;

Վահան պատրաստելու համար ձեզ հարկավոր է.

  • տպատախտակ (ցանկալի է հոսանքի և հողի ընդհանուր գծերով (ավտոբուսներով);
  • միջտախտակային փին միակցիչներ - 30 հատ;
  • վարդակներ մեկ տախտակի համար - 36 հատ;

  • մետաղալարեր.

Գործիքներ:

  • Լազերային կտրիչ (կամ հմուտ ձեռքեր);
  • Սուպեր սոսինձ;
  • Տաք սոսինձ.

Քայլ 3. Կմախք

Եկեք գրաֆիկական ծրագրի միջոցով նկարենք կմախքի բաղկացուցիչ մասերը։

Դրանից հետո ցանկացած մատչելի միջոցկտրեց ապագա ռոբոտի 30 մանրամասները:

Քայլ 4. հավաքում

Կտրելուց հետո հանեք պաշտպանիչ թղթի ծածկույթը պլեքսիգլասից:

Հաջորդը, անցեք ոտքերի հավաքմանը: Կմախքի մասերում կառուցված ամրացումներ: Մնում է միայն կտորները միացնել: Կապը բավականին ամուր է, բայց ավելի մեծ հուսալիության համար կարող եք մի կաթիլ սուպերսոսինձ քսել ամրացումների վրա:

Այնուհետև դուք պետք է փոփոխեք servos-ը (սոսնձեք պտուտակ, որը գտնվում է servo լիսեռների դիմաց):

Այս կատարելագործմամբ մենք ռոբոտին ավելի կայուն կդարձնենք: Զտումը պետք է կատարվի միայն 8 սերվոյի համար, մնացած 4-ը կկցվեն անմիջապես մարմնին:

Մենք ոտքերը կապում ենք միացնող տարրին (կոր հատված), իսկ այն, իր հերթին, մարմնի վրա գտնվող սերվոյին։

Քայլ 5. Վահանի պատրաստում

Տախտակը պատրաստելը բավականին պարզ է, եթե հետևեք քայլում ներկայացված լուսանկարներին։

Քայլ 6. Էլեկտրոնիկա

Ամրացրեք servo կապումները arduino տախտակի վրա: Եզրակացությունները պետք է կապված լինեն ճիշտ հաջորդականությունհակառակ դեպքում ոչինչ չի ստացվի!

Քայլ 7: Ծրագրավորում

Ժամանակն է կյանքի կոչել Ֆրանկենշտեյնը: Նախ բեռնեք legs_init ծրագիրը և համոզվեք, որ ռոբոտը գտնվում է նկարում պատկերված դիրքում։ Հաջորդը, բեռնեք quattro_test-ը՝ տեսնելու, թե արդյոք ռոբոտը արձագանքում է հիմնական շարժումներին, ինչպիսիք են՝ առաջ, հետ, ձախ և աջ:

ԿԱՐԵՎՈՐ. Դուք պետք է լրացուցիչ գրադարան ավելացնեք arduino IDE-ին: Գրադարանի հղումը տրված է ստորև.

Ռոբոտը պետք է անի 5 քայլ առաջ, 5 քայլ ետ, 90 աստիճանով շրջվի ձախ, 90 աստիճանով թեքվի աջ։ Եթե ​​Ֆրանկենշտեյնն ամեն ինչ ճիշտ է անում, մենք ճիշտ ուղղությամբ ենք շարժվում:

Պ. ՍՏեղադրեք ռոբոտը բաժակի վրա որպես հենարան, որպեսզի ամեն անգամ այն ​​չդնի սկզբնական կետին: Երբ թեստերը ցույց են տալիս ռոբոտի բնականոն աշխատանքը, մենք կարող ենք շարունակել փորձարկումը՝ այն դնելով գետնին/հատակին:

Քայլ 8. Հակադարձ կինեմատիկա

Հակադարձ կինեմատիկան այն է, ինչ իրականում կառավարում է ռոբոտը (եթե ձեզ չի հետաքրքրում այս նախագծի մաթեմատիկական կողմը և շտապում եք ավարտել նախագիծը, կարող եք բաց թողնել այս քայլը, բայց իմանալով, թե ինչ է մղում ռոբոտը, միշտ օգտակար կլինի):

Պարզ բառերով՝ հակադարձ կինեմատիկա կամ կրճատ ik՝ «մաս» եռանկյունաչափական հավասարումներ, որոնք որոշում են ոտքի սուր ծայրի դիրքը, յուրաքանչյուր սերվոյի անկյունը և այլն, որոնք, ի վերջո, որոշում են մի զույգ նախադրյալներ։ Օրինակ՝ ռոբոտի յուրաքանչյուր քայլի երկարությունը կամ այն ​​բարձրությունը, որի վրա մարմինը տեղակայվելու է շարժման/հանգստի ժամանակ: Օգտագործելով այս նախապես սահմանված պարամետրերը, համակարգը կհանի այն քանակությունը, որով յուրաքանչյուր սերվոն պետք է տեղափոխվի՝ ռոբոտին տրված հրամաններով կառավարելու համար:

Մեր սիրելի ընթերցողներ, բացում ենք Arduino-ի հիման վրա ռոբոտ ստեղծելու հոդվածների շարք։ Ենթադրվում է, որ ընթերցողը սկսնակ է և ունի միայն տարրական գիտելիքներ առարկայից: Մենք կփորձենք ամեն ինչ նշել հնարավորինս մանրամասն և հասկանալի։

Այսպիսով, ներածություն խնդրին.

Սկսենք հայեցակարգից. մենք ուզում ենք ռոբոտ, որը կարողանա ինքնուրույն շրջել սենյակում՝ միաժամանակ խուսափելով իր ճանապարհին հանդիպող բոլոր խոչընդոտներից: Խնդիր դրվեց.

Հիմա եկեք պարզենք, թե ինչ է մեզ անհրաժեշտ.

  1. Հարթակ (գործ): Այստեղ կան տարբերակներ՝ ամեն ինչ ինքներդ արեք, գնեք մասեր և հավաքեք դրանք, կամ գնեք պատրաստ։ Ընտրեք այն, ինչ ձեզ դուր է գալիս

Հավաքածուն սովորաբար գալիս է հարթակով և մեկ շարժիչով երկու շարժիչ անիվների համար (թրթուր) և մարտկոցի խցիկով: Կան տարբերակներ լիաքարշակ- շարժիչի վրա 4 անիվների վրա: Սկսնակների համար խորհուրդ ենք տալիս վերցնել տանկի տիպի հարթակներ

Երկու շարժիչ անիվ և երրորդ հենարան:

  1. Հաջորդը, մեզ անհրաժեշտ է միջակայքաչափ: Sonar (aka rangefinder, aka Ultrasonic module) Որպես հեռաչափ, սկզբում ընտրությունը եղել է ուլտրաձայնային և ինֆրակարմիրի միջև: Քանի որ ուլտրաձայնի բնութագրերը շատ ավելի լավն են (առավելագույն միջակայքը մոտ 4-5 մետր է, 30-60 սմ-ի դիմաց), իսկ գինը մոտավորապես նույնն է, ընտրությունը ընկավ Ultrasonic-ի վրա: Ամենատարածված մոդելը HC-SR04 է:

  1. Շարժիչի վարորդ.

Ինչպե՞ս լինել: Առաջին բանը, որ գալիս է մտքին, միկրոկոնտրոլերի ելքի վրա տրանզիստոր դնելն է և դրանից շարժիչները կերակրելը: Սա, անշուշտ, լավ է, բայց չի աշխատի, եթե մենք ուզում ենք շարժիչը գործարկել այլ ուղղությամբ… Բայց H-ն այս աշխատանքը լավ կկատարի՝ կամուրջը, որը մի փոքր ավելին է։ բարդ սխեմաքան զույգ տրանզիստորներ: Բայց այս դեպքում դրանք բավականին շատ են՝ պատրաստի ինտեգրալ սխեմաների տեսքով, այնպես որ, կարծում եմ, անիվը նորից հորինելու կարիք չկա՝ մենք պատրաստ ենք գնելու։ Բացի այդ, գինը ձեռնտու է՝ 2-3 դոլար... Անցնենք առաջ։ Այդ նպատակների համար մենք կգնենք L293D չիպ, կամ ավելի լավ՝ դրա հիման վրա Motor Shield:

Շարժիչային վահան L298N չիպի վրա

  1. Sound Generation - Piezo Buzzer

առավելապես պարզ տարբերակձայնի ստեղծումը պիեզո բզզերի օգտագործումն է:

Piezoceramic emitters (piezoelectric emitters) էլեկտրաակուստիկ ձայնի վերարտադրման սարքեր են, որոնք օգտագործում են պիեզոէլեկտրական էֆեկտը: (մեխանիկական լարումների ազդեցության տակ դիէլեկտրական բևեռացման առաջացման ազդեցությունը (ուղիղ պիեզոէլեկտրական էֆեկտ): Գոյություն ունի նաև հակադարձ պիեզոէլեկտրական էֆեկտ՝ մեխանիկական դեֆորմացիաների առաջացում էլեկտրական դաշտի ազդեցության տակ։

Ուղիղ պիեզո էֆեկտ՝ պիեզո կրակայրիչներում՝ ձեռք բերելու համար բարձր լարմանկալանչի վրա;

Հակադարձ պիեզոէլեկտրական էֆեկտ. պիեզոէլեկտրական արտանետիչներում (արդյունավետ են բարձր հաճախականություններում և ունեն փոքր չափսեր);

Պիեզո արտանետիչները լայնորեն օգտագործվում են տարբեր էլեկտրոնային սարքեր- Զարթուցիչներ, հեռախոսներ, էլեկտրոնային խաղալիքներ, Կենցաղային տեխնիկա. Պիեզոկերամիկական արտանետիչը բաղկացած է մետաղյա թիթեղից, որի վրա դրված է պիեզոէլեկտրական կերամիկայի շերտ՝ արտաքին կողմում ունենալով հաղորդիչ ծածկույթ։ Թիթեղը և ծածկույթը երկու շփում են: Պիեզո ազդանշանը կարող է օգտագործվել նաև որպես պիեզոէլեկտրական խոսափող կամ սենսոր:

Դա այն ամենն է, ինչ մեզ անհրաժեշտ է առաջին անգամ: Սկսելու համար, մենք առանձին դասերի տեսքով կքննարկենք, թե ինչպես կարելի է այս մասերը հավաքել և աշխատել առանձին:

Դաս 2

Դաս 3. Arduino և Motor Shield՝ հիմնված L298N-ի վրա

Դաս 4

Դաս 5

Լավ օր! Ձեր առջև, սիրելինե՛ր, գեղարվեստական ​​ռոբոտ է, որը կարող է նկարել տարբեր գնդաձև կամ ձվաձև առարկաներ՝ 4-ից 9 սմ չափսերով:

Այն պատրաստելու համար անհրաժեշտ է 3D տպիչ, ստանդարտ գործիքների հավաքածու + Arduino:

Նշում. Մի հրաժարվեք նախագծերից, որոնք օգտագործում են 3D տպիչ: Ցանկության դեպքում դուք միշտ կարող եք գտնել մի վայր կամ մեթոդ, որտեղ կարող եք պատվիրել նախագծի համար անհրաժեշտ մանրամասների տպագրությունը:

Քայլ 1. Մի փոքր ռոբոտի մասին

Գեղարվեստական ​​ռոբոտ՝ երկու առանցք տնական, որը կարող է տպել գնդաձև մակերեսների մեծ մասի վրա: Ռոբոտը կազմաձևված է որոշակի տեսակի օբյեկտի համար (պինգ-պոնգի գնդակներ, ամանորյա զարդեր, լամպեր և ձվեր (բադ, սագ, հավ ...):

Գնդաձև առարկան պտտելու և մանիպուլյատորը տեղափոխելու համար օգտագործվում են բարձր ճշգրտության աստիճանային շարժիչներ՝ բարձր ոլորող մոմենտով, իսկ բռնակի մեխանիզմը բարձրացնելու համար օգտագործվում է հանգիստ և հուսալի SG90 սերվո շարժիչ:

Քայլ 2. Պահանջվող մասեր

Անել ինքդ քեզ արհեստմեզ անհրաժեշտ կլինի՝

  • 2x առանցքակալներ 623;
  • Hairpin 3 մմ տրամագծով և 80-90 մմ երկարությամբ;
  • 1x զսպանակ (երկարությունը 10 մմ և տրամագիծը 4,5 մմ);
  • 2x NEMA 17 stepper շարժիչներ (ոլորող մոմենտ 4,4 կգ/սմ);
  • Մալուխներ շարժիչների համար (երկարությունը 14 + 70 սմ);
  • USB մալուխ;
  • 1x SG90 servo;
  • Արդուինո Լեոնարդո;
  • վահան JJRobots;

  • 2xA4988 stepper motor drivers;
  • Էլեկտրամատակարարում 12V / 2A;
  • 11x M3 6 մմ պտուտակներ;
  • 4x M3 16 մմ պտուտակներ;
  • 4x ընկույզ M3;
  • 2 x 20 մմ ներծծող բաժակներ;
  • 1x թեւավոր ընկույզ M3;
  • 1x մարկեր;

Քայլ 3. Ընդհանուր սխեմա

Որպես «խաբեության թերթիկ», կարող եք օգտագործել այս սխեման:

Քայլ 4. Եկեք սկսենք:

Ռոբոտը շարժում է մանիպուլյատորը, որի վրա ամրացված է մարկեր, որը շարժվում է քայլային շարժիչով։ Մեկ այլ քայլային շարժիչ պատասխանատու է առարկայի պտտման համար, որի վրա կիրառվում է նկարը (ձու, գնդակ ...): Նյութը տեղում պահելու համար օգտագործվում են երկու ներծծող գավաթներ, որոնցից մեկը ամրացված է ստեպպերի շարժիչին, իսկ մյուսը հակառակ կողմըառարկա. Մի փոքրիկ զսպանակ կսեղմի ներծծող բաժակի վրա, որպեսզի օգնի նրան պահել իրը: SG90 servo-ն օգտագործվում է մարկերը բարձրացնելու/իջեցնելու համար:

Քայլ 5. Մանիպուլյատոր

Տեղադրեք ընկույզը դրա համար պատրաստված անցքի մեջ և ամրացրեք 16 մմ պտուտակը: Եկեք նույնն անենք ապրանքի տիրոջ համար (վերևի նկարի աջ կողմում): Մանիպուլյատորի համար ծխնի ստեղծելիս օգտագործվել են 2 16 մմ պտուտակ: Պտուտակները սեղմելուց հետո այս կրունկը պետք է ազատ պտտվի:

Քայլ 6. Ծծիչներ

Տեղադրեք ներծծող բաժակներից մեկը իրերի պահարանի անցքի ներսում:

Քայլ 7. Stepper Motors-ի միացում

Երկու քայլային շարժիչներն էլ ամրացրեք հիմնական շրջանակին 8 պտուտակով:

Քայլ 8. Պտտման առանցք

Եկեք տեղադրենք բոլոր տարրերը, ինչպես ցույց է տրված վերևի նկարում:

  • Ծծող;
  • Պտուտակ;
  • Վերին մաս;
  • Գարուն;
  • առանցքակալ 623 (պետք է ներկառուցված լինի ձախ գավաթում);
  • Ձախ բաժակ;
  • Ազատ տարածք հիմնական շրջանակի համար;
  • Ճիշտ բաժակ;
  • առանցքակալ 623;
  • Տարանջատող օղակ;
  • Թևի ընկույզ (M3):

Քայլ 9. Ամեն ինչ իր տեղում դնելը

Տեղադրեք հավաքված մանիպուլյատորը քայլային շարժիչի առանցքի վրա:

Տեղադրեք ձախ հենարանը քայլային շարժիչի առանցքի վրա:

Մարկերը և ձուն դրված են որպես օրինակ (հիմա պետք չէ դրանք տեղադրել):

ԾԱՆՈԹՈՒԹՅՈՒՆ. Սերվոն կպահանջի ճշգրտումներ: Կալիբրացիայի գործընթացում ձեզ հարկավոր է նորից սահմանել դրա անկյունը:

Քայլ 10. Էլեկտրոնիկա

Հիմնական շրջանակի հետևի մասում էլեկտրոնիկան ամրացրեք պտուտակներով (2-ը բավարար կլինի):

Եկեք միացնենք մալուխները:

Եթե ​​դուք հակադարձում եք բևեռականությունը քայլային շարժիչները միացնելիս, նրանք պարզապես կպտտվեն հակառակ ուղղությամբ, բայց սերվոյի դեպքում իրավիճակն այնքան էլ անվնաս չէ: Այսպիսով, միանալուց առաջ կրկնակի ստուգեք բևեռականությունը:

Քայլ 11. Arduino Leonardo-ի ծրագրավորում

Եկեք ծրագրավորենք Arduino Leonardo-ն՝ օգտագործելով Arduino IDE ծրագրային միջավայրը (v 1.8.1):

  • Ներբեռնեք Arduino IDE (v 1.8.1) և տեղադրեք ծրագիրը;
  • Եկեք վազենք ծրագրային ապահովում. «Tools->board» ընտրացանկից ընտրեք Arduino Leonardo տախտակը և համապատասխան COM-PORT-ը;
  • Եկեք բացենք և ներբեռնենք Sphere-O-Bot կոդը։ Եկեք բացենք բոլոր ֆայլերը մեկ թղթապանակում և այն անվանենք «Ejjduino_ARDUINO»:

Քայլ 12. Art Robot-ը պատրաստ է ստեղծել արվեստի գործեր

Քայլ 13. Ռոբոտների կառավարում

Ծրագրային ապահովում inkscape.Ներբեռնեք և տեղադրեք Inkscape ծրագրաշարը (խորհուրդ եմ տալիս կայուն տարբերակ 0.91):

Ներբեռնեք և տեղադրեք EggBot Control ընդլայնումը (2.4.0 տարբերակը լիովին փորձարկված է):

EggBot Control-ի ընդլայնումը Inkscape-ի համար գործիք է, որն օգտագործվում է EggBot-ը փորձարկելու և չափաբերելու և գծագրերը ձվին փոխանցելու ժամանակ: Նախ անհրաժեշտ է գործարկել Inkscape-ը: Inkscape-ը գործարկելուց հետո կհայտնվի «Extensions» ընտրացանկը, որի մեջ արդեն պետք է ընտրել «Eggbot» ենթամենյուն։ Եթե ​​դուք չեք տեսնում Eggbot ենթամենյուն, ապա դուք ճիշտ չեք տեղադրել ընդլայնումները: Կրկնօրինակեք և ուշադիր հետևեք ընդլայնումների տեղադրման հրահանգներին:

Այսքանը, շնորհակալություն ուշադրության համար:)

Այսօրվա հոդվածում ես ձեզ կպատմեմ, թե ինչպես կարելի է ձեր սեփական ձեռքերով Arduino միկրոկառավարիչի հիման վրա շրջանցող խոչընդոտները ռոբոտ պատրաստել։



Տանը ռոբոտ պատրաստելու համար ձեզ հարկավոր է միկրոկոնտրոլերի տախտակ և ուլտրաձայնային սենսոր: Եթե ​​սենսորը հայտնաբերում է խոչընդոտ, ապա սերվոն թույլ կտա նրան շրջանցել խոչընդոտը: Աջ և ձախ տարածությունը սկանավորելով՝ ռոբոտը կընտրի խոչընդոտը շրջանցելու առավել նախընտրելի ճանապարհը։

Codebender-ը բրաուզերի վրա հիմնված IDE է, այն ձեր ռոբոտը բրաուզերից ծրագրավորելու ամենահեշտ միջոցն է: Պետք է սեղմել «Run on Arduino» կոճակը և վերջ, ոչ մի տեղ ավելի հեշտ չէ:

Տեղադրեք մարտկոցը խցիկում և մեկ անգամ սեղմեք ֆունկցիայի կոճակը, և ռոբոտը առաջ կգնա: Շարժումը դադարեցնելու համար կրկին սեղմեք կոճակը:

/* Arduino Obstacle Avoiding Robot servo motor-ով և ուլտրաձայնային ցուցիչով HC-SR04 LED և buzzer */ //Libraries #include #include "Ultrasonic.h" //Constants const int button = 2; // Կոճակի քորոց դեպի կապում 2 const int led = 3; // LED փին (ռեզիստորի միջոցով) 3 կոնտ int buzzer = 4; //Buzzer pin to pin 4 const int motorA1= 6; //դրական (+) շարժիչ A pin to pin 6 (PWM) (L298 մոդուլից!) const int motorA2= 9; //Ա շարժիչի բացասական քորոցը (-) մինչև 9-ը (PWM) const int motorB1=10; // դրական (+) շարժիչ B քորոց դեպի 10 (PWM) const int motorB2=11; // բացասական քորոց (-) շարժիչի B-ից մինչև 11-ը (PWM) Ուլտրաձայնային ուլտրաձայնային (A4 ,A5); //Ստեղծել օբյեկտ ուլտրաձայնային (trig pin,echo pin) Servo myservo; //Ստեղծել Servo օբյեկտ՝ սերվոները կառավարելու համար //Variables int distance; //Փոփոխական՝ օբյեկտի հեռավորությունը պահպանելու համար int checkRight; int checkLeft; int ֆունկցիա=0; //Փոփոխական ռոբոտի ֆունկցիան պահելու համար՝ «1»՝ շարժում կամ «0»՝ դադարեցված։ Դադարեցված է լռելյայն int buttonState=0; //Փոփոխական՝ կոճակի վիճակը պահելու համար: Լռելյայն «0» int pos=90; //փոփոխական՝ սերվոյի դիրքը պահելու համար: Լռելյայնորեն 90 աստիճան - սենսորը կանդրադառնա int flag=0; //օգտակար դրոշակ պահելու համար կոճակի վիճակը, երբ կոճակը բաց է թողնվել, void setup() ( myservo.attach(5); //Servo pin միացված է 5 pin-ին myservo.write(pos); // սերվոյին ասում է գնալ « pos» փոփոխականում տեղադրելու համար pinMode (կոճակ, INPUT_PULLUP); pinMode (led, OUTPUT); pinMode (buzzer, OUTPUT); pinMode (motorA1, OUTPUT); pinMode (motorA2, OUTPUT); pinMode (motorB1, OUTPUT); pinMode (motorB2,OUTPUT); շարժվում է), երբ կոճակը սեղմվում է, եթե (կոճակըState = = LOW) (//Եթե կոճակը սեղմվում է մեկ անգամ... ուշացում (500); եթե (դրոշ == 0) (գործառույթ = 1; դրոշ=1; //փոխել դրոշակ փոփոխականը ) else if (դրոշ == 1)( / /Եթե կոճակը երկու անգամ սեղմված է ֆունկցիան = 0; դրոշ=0; //փոխել դրոշի փոփոխականը նորից) ) if (գործառույթ == 0)( //Եթե կոճակը բաց է թողնվում կամ սեղմվում երկու անգամ, այնուհետև՝ myservo.write(90); //սահմանել servo 90 աստիճանի համար - սենսորը սպասում է կանգառին(); //ռոբոտը մնում է անշարժ noTone(buzzer); //զնգոցն անջատված է թվային Գրեք(led, HIGH);// իսկ դիոդը միացված է) այլապես (գործառույթ == 1)(//Եթե կոճակը սեղմված է, ապա՝ //Կարդացեք հեռավորությունը... հեռավորությունը = ուլտրաձայնային .Ranging(CM); //Խորհուրդ. Օգտագործեք «CM» սանտիմետրերի համար և «INC»՝ դյույմերի համար //Ստուգեք օբյեկտների համար: .. եթե (հեռավորություն > 10) ( առաջ(); //Ամեն ինչ պարզ է, առաջ շարժվում ենք:<=10){ stop(); //Обнаружен объект! Останавливаемся и проверяем слева и справа лучший способ обхода! tone(buzzer,500); // издаём звук digitalWrite(led,HIGH); // включаем светодиод //Начинаем сканировать... for(pos = 0; pos =0; pos-=1){ //идём от 180 градусов к 0 myservo.write(pos); // говорим серво пройти на позицию в переменной "pos" delay(10); // ждём 10 мс, пока сервопривод достигнет нужной позиции } checkRight= ultrasonic.Ranging(CM); myservo.write(90); // Датчик снова смотрит вперёд //Принимаем решение – двигаться влево или вправо? if (checkLeft checkRight){ right(); delay(400); // задержка, меняем значение при необходимости, чтобы заставить робота повернуться. } else if (checkLeft <=10 && checkRight <=10){ backward(); //Дорога перекрыта... возвращаемся и идём налево;) left(); } } } } void forward(){ digitalWrite(motorA1, HIGH); digitalWrite(motorA2, LOW); digitalWrite(motorB1, HIGH); digitalWrite(motorB2, LOW); } void backward(){ digitalWrite(motorA1, LOW); digitalWrite(motorA2, HIGH); digitalWrite(motorB1, LOW); digitalWrite(motorB2, HIGH); } void left(){ digitalWrite(motorA1, HIGH); digitalWrite(motorA2, LOW); digitalWrite(motorB1, LOW); digitalWrite(motorB2, HIGH); } void right(){ digitalWrite(motorA1, LOW); digitalWrite(motorA2, HIGH); digitalWrite(motorB1, HIGH); digitalWrite(motorB2, LOW); } void stop(){ digitalWrite(motorA1, LOW); digitalWrite(motorA2, LOW); digitalWrite(motorB1, LOW); digitalWrite(motorB2, LOW); }

Սեղմելով «Խմբագրել» կոճակը, դուք կարող եք խմբագրել էսքիզը ձեր կարիքների համար:

Օրինակ, չափված հեռավորության «10» արժեքը փոխելով խոչընդոտի սմ-ով, դուք կնվազեցնեք կամ կմեծացնեք այն հեռավորությունը, որը Arduino ռոբոտը սկանավորելու է խոչընդոտ փնտրելու համար:

Եթե ​​ռոբոտը չի շարժվում, այն կարող է փոխել էլեկտրական շարժիչների կոնտակտները (motorA1 և motorA2 կամ motorB1 և motorB2):

Քայլ 7. Ավարտված ռոբոտ

Ձեր տնական ռոբոտը, որը խուսափում է Arduino միկրոկառավարիչի վրա հիմնված խոչընդոտներից, պատրաստ է:



 
Հոդվածներ Ըստթեմա:
Ջրհոսի աստղագուշակը մարտի դ հարաբերությունների համար
Ի՞նչ է ակնկալում 2017 թվականի մարտը Ջրհոս տղամարդու համար: Մարտ ամսին Ջրհոս տղամարդկանց աշխատանքի ժամանակ դժվար կլինի։ Գործընկերների և գործընկերների միջև լարվածությունը կբարդացնի աշխատանքային օրը։ Հարազատները ձեր ֆինանսական օգնության կարիքը կունենան, դուք էլ
Ծաղրական նարնջի տնկում և խնամք բաց դաշտում
Ծաղրական նարինջը գեղեցիկ և բուրավետ բույս ​​է, որը ծաղկման ժամանակ յուրահատուկ հմայք է հաղորդում այգուն: Այգու հասմիկը կարող է աճել մինչև 30 տարի՝ առանց բարդ խնամքի պահանջելու: Ծաղրական նարինջը աճում է բնության մեջ Արևմտյան Եվրոպայում, Հյուսիսային Ամերիկայում, Կովկասում և Հեռավոր Արևելքում:
Ամուսինը ՄԻԱՎ ունի, կինը առողջ է
Բարի օր. Իմ անունը Թիմուր է։ Ես խնդիր ունեմ, ավելի ճիշտ՝ վախ խոստովանել ու կնոջս ասել ճշմարտությունը։ Վախենում եմ, որ նա ինձ չի ների և կթողնի ինձ։ Նույնիսկ ավելի վատ, ես արդեն փչացրել եմ նրա և իմ աղջկա ճակատագիրը: Կնոջս վարակել եմ վարակով, կարծում էի անցել է, քանի որ արտաքին դրսևորումներ չեն եղել
Այս պահին պտղի զարգացման հիմնական փոփոխությունները
Հղիության 21-րդ մանկաբարձական շաբաթից հղիության երկրորդ կեսը սկսում է իր հետհաշվարկը։ Այս շաբաթվա վերջից, ըստ պաշտոնական բժշկության, պտուղը կկարողանա գոյատևել, եթե ստիպված լինի լքել հարմարավետ արգանդը։ Այս պահին երեխայի բոլոր օրգաններն արդեն սֆո են