Turinys:

Sviesto robotas: „Arduino“robotas su egzistencine krize: 6 žingsniai (su nuotraukomis)
Sviesto robotas: „Arduino“robotas su egzistencine krize: 6 žingsniai (su nuotraukomis)

Video: Sviesto robotas: „Arduino“robotas su egzistencine krize: 6 žingsniai (su nuotraukomis)

Video: Sviesto robotas: „Arduino“robotas su egzistencine krize: 6 žingsniai (su nuotraukomis)
Video: Robotic hand with Arduino 2024, Liepa
Anonim
Image
Image

Šis projektas sukurtas pagal animacinį serialą „Rikas ir Mortis“. Viename iš epizodų Rikas sukuria robotą, kurio vienintelis tikslas yra atnešti sviesto. Kaip studentai iš Bruface (Briuselio inžinerijos fakultetas), mes turime užduotį mechatronikos projektui - sukurti robotą pagal siūlomą temą. Šio projekto užduotis: Padarykite robotą, kuris patiekia tik sviestą. Gali kilti egzistencinė krizė. Žinoma, Riko ir Morty serijos robotas yra gana sudėtingas robotas, todėl reikia padaryti keletą supaprastinimų:

Kadangi vienintelis tikslas yra atnešti sviesto, yra paprastesnių alternatyvų. Vietoj to, kad robotas atrodytų ir griebtų sviestą, prieš atnešdamas jį tinkamam žmogui, robotas gali visą laiką nešti sviestą. Taigi pagrindinė idėja yra pagaminti vežimėlį, kuriuo sviestas gabenamas ten, kur reikia.

Be sviesto gabenimo, robotas turi žinoti, kur jam reikia atnešti sviesto. Serijoje Rikas savo balsu skambina ir liepia robotui. Tam reikia brangios balso atpažinimo sistemos ir tai būtų pernelyg sudėtinga. Vietoj to, visi prie stalo esantys žmonės gauna mygtuką: kai šis mygtukas yra įjungtas, robotas gali rasti šį mygtuką ir judėti link jo.

Norėdami pakartoti, robotas turi atitikti šiuos reikalavimus:

  • Jis turi būti saugus: jis turi vengti kliūčių ir neleisti sau nukristi nuo stalo;
  • Robotas turi būti mažas: vieta ant stalo yra ribota ir niekas nenorėtų roboto, kuris patiekia sviestą, bet yra perpus mažesnis už patį stalą;
  • Roboto darbas negali priklausyti nuo stalo dydžio ar formos, todėl jį galima naudoti ant skirtingų stalų;
  • Jis turi atnešti sviestą tinkamam žmogui prie stalo.

1 žingsnis: pagrindinė koncepcija

Ankstesni reikalavimai gali būti įvykdyti naudojant skirtingus metodus. Šiame etape paaiškinami sprendimai dėl pagrindinio dizaino. Išsamią informaciją apie tai, kaip šios idėjos įgyvendinamos, rasite atlikdami šiuos veiksmus.

Norėdami atlikti savo pareigą, robotas turi judėti, kol bus pasiektas tikslas. Atsižvelgiant į roboto pritaikymą, aišku, kad vietoj „vaikščiojančio“judesio geriau naudoti ratus, kad jis judėtų. Kadangi stalas yra lygus paviršius ir robotas nepasieks labai didelio greičio, du valdomi ratai ir vienas ratuko kamuolys yra paprasčiausias ir lengviausiai valdomas sprendimas. Varomieji ratai turi būti varomi dviem varikliais. Varikliai turi turėti didelį sukimo momentą, tačiau jie neturi pasiekti didelio greičio, todėl bus naudojami nenutrūkstami servo varikliai. Kitas servo variklių pranašumas yra paprastas naudojimas su „Arduino“.

Kliūtis galima aptikti naudojant ultragarso jutiklį, kuris matuoja atstumą, pritvirtintą prie servo variklio, kad pasirinktų matavimo kryptį. Kraštai gali būti aptikti naudojant LDR jutiklius. Norint naudoti LDR jutiklius, reikės sukurti įrenginį, kuriame būtų ir šviesos diodas, ir LDR jutiklis. LDR jutiklis matuoja atspindėtą šviesą ir gali būti laikomas tam tikru atstumo jutikliu. Tas pats principas galioja ir infraraudonajai šviesai. Yra keletas infraraudonųjų spindulių artumo jutiklių, kurie turi skaitmeninį išėjimą: uždaryti arba ne uždaryti. Būtent to robotui reikia aptikti kraštus. Sujungdamas 2 briaunų jutiklius, išdėstytus kaip dvi vabzdžių antenos, ir vieną veikiantį ultragarsinį jutiklį, robotas turėtų sugebėti išvengti kliūčių ir kraštų.

Mygtuką taip pat galima aptikti naudojant IR jutiklius ir šviesos diodus. IR pranašumas yra tas, kad jis yra nematomas, todėl jo naudojimas netrukdo žmonėms prie stalo. Lazeriai taip pat gali būti naudojami, tačiau tada šviesa būtų matoma ir pavojinga, kai kas nors nukreipia lazerį į kito žmogaus akis. Be to, vartotojas turėtų nukreipti roboto jutiklius tik plonu lazerio spinduliu, o tai būtų gana erzina. Aprūpindamas robotą dviem IR jutikliais ir sukurdamas mygtuką su IR lempute, robotas žino, kuria kryptimi jis turi eiti, sekdamas IR šviesos intensyvumą. Kai nėra mygtuko, robotas gali apsisukti, kol vienas iš šviesos diodų užfiksuos vieno mygtuko signalą.

Sviestas dedamas į skyrių, esantį roboto viršuje. Šį skyrių gali sudaryti dėžutė ir atidaromas dangtelis. Norint atidaryti dangtį ir perkelti ultragarso jutiklį, kad būtų galima nuskaityti ir aptikti kliūtis, mums reikia dviejų variklių, todėl šiam tikslui nenutrūkstami servo varikliai yra labiau pritaikyti, nes varikliai turi būti tam tikroje padėtyje ir išlaikyti tokią padėtį.

Papildoma projekto savybė buvo bendrauti su išorine aplinka roboto balsu. Garsinis signalas yra paprastas ir pritaikytas šiam tikslui, tačiau jo negalima naudoti bet kuriuo metu, nes kietėjimo lygis yra didelis.

Pagrindiniai projekto sunkumai priklauso nuo kodavimo, nes mechaninė dalis yra gana paprasta. Į daugelį atvejų reikia atsižvelgti, kad robotas nebūtų įstrigęs ar darytų kažką nepageidaujamo. Pagrindinės problemos, kurias turime išspręsti, yra prarasti IR signalą dėl kliūties ir sustoti, kai jis pasiekia mygtuką!

2 žingsnis: medžiagos

Mechaninės dalys

  • 3D spausdintuvas ir pjovimo lazeriu mašina
    • PLA bus naudojamas 3D spausdinimui, bet taip pat galite naudoti ABS
    • Pjovimui lazeriu bus naudojama 3 mm beržo faneros plokštė, nes tai suteikia galimybę vėliau lengvai atlikti pakeitimus, taip pat galima naudoti organinio stiklo plokštes, tačiau jas pakeisti yra sunkiau, kai tik pjaunama lazeriu, nesunaikinant
  • Varžtai, veržlės, poveržlės

    Dauguma komponentų yra laikomi kartu naudojant M3 varžtų galvutes, poveržles ir veržles, tačiau kai kuriems iš jų reikalingas M2 arba M4 varžtų rinkinys. Varžtų ilgis yra 8-12 mm

  • PCB tarpikliai, 25 mm ir 15 mm
  • 2 servo varikliai su suderinamais ratais
  • Kai kurios storos metalinės vielos, kurių skersmuo apie 1-2 mm

Elektroninės dalys

  • Mikrovaldiklis

    1 arduino UNO lenta

  • Servo varikliai

    • 2 dideli servo varikliai: nuolatinis 6 kg 360 laipsnių kampas
    • 2 mikro servo varikliai: Feetech FS90
  • Jutikliai

    • 1 Ultragarso jutiklis
    • 2 IR artumo jutikliai
    • 2 IR fotodiodai
  • Baterijos

    • 1 9V akumuliatoriaus laikiklis + baterija
    • 1 4AA baterijų laikiklis + baterijos
    • 1 9V akumuliatoriaus dėžutė + baterija
  • Papildomi komponentai

    • Kai kurie šokinėjantys laidai, laidai ir litavimo plokštės
    • Kai kurie rezistoriai
    • 1 IR šviesos diodas
    • 3 jungikliai
    • 1 garsinis signalas
    • 1 mygtukas
    • 1 „Arduino“į 9 V akumuliatoriaus jungtis

3 žingsnis: Elektronikos testavimas

Elektronikos testavimas
Elektronikos testavimas
Elektronikos testavimas
Elektronikos testavimas

Mygtuko sukūrimas:

Mygtuką paprasčiausiai sudaro jungiklis, infraraudonųjų spindulių šviesos diodas ir 220 omų rezistorius, maitinamas 9 V baterija. Jis yra įdėtas į 9 V bateriją, kad būtų kompaktiškas ir švarus.

Infraraudonųjų spindulių imtuvo modulių sukūrimas:

Šie moduliai yra pagaminti iš litavimo plokščių, kurios vėliau bus pritvirtintos varžtais prie roboto. Šių modulių grandinės pavaizduotos bendrosiose schemose. Principas yra išmatuoti infraraudonųjų spindulių intensyvumą. Norint pagerinti matavimus, kolimatoriai (pagaminti iš susitraukiančių vamzdžių) gali būti naudojami tam tikrai dominančiai krypčiai.

Įvairūs projekto reikalavimai turi būti įvykdyti naudojant elektroninius prietaisus. Įrenginių skaičius turėtų būti ribojamas, kad sudėtingumas būtų santykinai mažas. Šiame žingsnyje pateikiamos laidų schemos ir kiekvienas kodas, skirtas atskirai išbandyti visas dalis:

  • Nuolatiniai servo varikliai;
  • Ultragarsinis jutiklis;
  • Nenutrūkstami servo varikliai;
  • Garsinis signalas;
  • IR mygtuko krypties aptikimas;
  • Krašto aptikimas artumo jutikliais;

Šie kodai gali padėti suprasti komponentus pradžioje, tačiau taip pat labai naudingi derinant vėlesnius etapus. Jei iškyla tam tikra problema, klaidą galima lengviau aptikti atskirai išbandžius visus komponentus.

4 žingsnis: 3D spausdintų ir lazeriu supjaustytų kūrinių kūrimas

3D spausdintų ir lazeriu pjaustytų dalių dizainas
3D spausdintų ir lazeriu pjaustytų dalių dizainas
3D spausdintų ir lazeriu supjaustytų kūrinių dizainas
3D spausdintų ir lazeriu supjaustytų kūrinių dizainas
3D spausdintų ir lazeriu pjaustytų dalių dizainas
3D spausdintų ir lazeriu pjaustytų dalių dizainas

Pjaustyti lazeriu

Surinkimą sudaro trys pagrindinės horizontalios plokštės, laikomos kartu su PCB tarpikliais, kad būtų atviras dizainas, leidžiantis lengvai pasiekti elektroniką, jei reikia.

Šiose plokštėse turi būti išpjautos reikiamos skylės, kad būtų galima prisukti tarpiklius ir kitus komponentus galutiniam surinkimui. Visų pirma, visos trys plokštės turi skyles toje pačioje vietoje tarpikliams, o specialios skylės elektronikai yra atitinkamai pritvirtintos prie kiekvienos plokštės. Atkreipkite dėmesį, kad vidurinėje plokštėje yra skylė laidams perduoti viduryje.

Mažesni gabalai supjaustomi pagal didelio servo matmenis, kad būtų pritvirtinti prie mazgo.

3D spausdinti kūriniai

Be pjovimo lazeriu, kai kuriuos gabalus reikės atspausdinti 3D:

  • Ultragarsinio jutiklio, kuris susieja jį su viena mikro servo variklio svirtimi, palaikymas
  • Ratuko rato ir dviejų IR krašto jutiklių atrama. Konkretus dėžutės formos gabalas, skirtas IR jutikliams, veikia kaip ekranas, kad būtų išvengta trikdžių tarp mygtuko, skleidžiančio IR signalą, ir IR jutiklių, kuriems reikia sutelkti dėmesį tik į tai, kas vyksta ant žemės
  • Mikro servo variklio atrama, atidaranti dangtį
  • Ir galiausiai pats dangtis, pagamintas iš dviejų dalių, kad būtų didesnis veikimo kampas, išvengiant susidūrimo su mikro servo varikliu, atidarančiu dangtį:

    • Apatinis, kuris bus pritvirtintas prie viršutinės plokštės
    • Ir viršuje, kuri yra sujungta su apačia vyriais, o servo valdoma naudojant storą metalinę vielą. Mes nusprendėme robotui suteikti šiek tiek asmenybės, suteikdami jam galvą.

Kai visi kūriniai yra suprojektuoti ir failai eksportuojami tinkamu formatu, atsižvelgiant į naudojamas mašinas, gabalus iš tikrųjų galima padaryti. Atminkite, kad 3D spausdinimas užima daug laiko, ypač atsižvelgiant į viršutinio dangčio gabalo matmenis. Visiems kūriniams atspausdinti gali prireikti vienos ar dviejų dienų. Tačiau pjovimas lazeriu trunka tik kelias minutes.

Visi SOLIDWORKS failai yra aplanke su užtrauktuku.

5 žingsnis: Surinkimas ir prijungimas

Image
Image
Montavimas ir laidai
Montavimas ir laidai
Montavimas ir laidai
Montavimas ir laidai
Montavimas ir laidai
Montavimas ir laidai

Surinkimas bus laidų sujungimas ir komponentų sukimas, pradedant nuo apačios iki viršaus.

Apatinė lėkštė

Apatinė plokštė surenkama su 4AA baterijų bloku, servo varikliais, atspausdinta dalimi (pritvirtinta rutulinė ratuko apačioje po plokšte), dviem kraštų jutikliais ir 6 tarpikliu.

Vidurinė plokštė

Tada galima sumontuoti vidurinę plokštę, suspaudžiant servo variklius tarp dviejų plokščių. Šią plokštę galima pritvirtinti ant jos uždėjus kitą tarpiklių komplektą. Kai kurie kabeliai gali būti praleisti per centrinę angą.

Ultragarso modulį galima pritvirtinti prie nenutrūkstamo servo, kuris yra pritvirtintas prie vidurinės plokštės su „Arduino“, 9 V baterija (maitinanti „arduino“) ir dviem infraraudonųjų spindulių imtuvo moduliais, esančiais roboto priekyje. Šie moduliai yra pagaminti iš litavimo plokščių su skylėmis ir pritvirtinami varžtais prie plokštės. Šių modulių grandinės pavaizduotos bendrosiose schemose.

Viršutinė plokštė

Šioje surinkimo dalyje jungikliai nėra fiksuoti, tačiau robotas jau gali padaryti viską, išskyrus veiksmus, kuriems reikia dangčio, todėl tai leidžia atlikti tam tikrus bandymus, kad ištaisytume slenkstį, pritaikytume judesio kodą ir būtų lengva prieiga prie arduino uostų.

Kai visa tai pasiekiama, viršutinę plokštę galima pritvirtinti tarpikliais. Paskutiniai komponentai, kurie yra du jungikliai, mygtukas, servo, garsinis signalas ir dangčio sistema, galiausiai gali būti pritvirtinti prie viršutinės plokštės, kad būtų baigtas surinkimas.

Paskutinis dalykas, kurį reikia išbandyti ir pataisyti, yra servo kampas, skirtas tinkamai atidaryti dangtį.

Krašto jutiklių slenkstis turi būti pritaikytas prie komplektuojamo potenciometro (naudojant plokščią atsuktuvą) skirtingiems stalo paviršiams. Baltas stalas turi turėti žemesnę ribą nei, pavyzdžiui, rudas stalas. Taip pat jutiklių aukštis paveiks reikiamą slenkstį.

Šio etapo pabaigoje surinkimas baigiamas, o paskutinė likusi dalis yra trūkstami kodai.

6 žingsnis: kodavimas: viską sudėkite

Visas reikalingas kodas, kad robotas veiktų, yra ZIP faile, kurį galima atsisiųsti. Svarbiausias yra „pagrindinis“kodas, apimantis roboto sąranką ir funkcinę kilpą. Dauguma kitų funkcijų yra įrašytos į papildomus failus (taip pat ir į aplankus su užtrauktuku). Prieš įkeldami jį į „Arduino“, šie antriniai failai turėtų būti išsaugoti tame pačiame aplanke (kuris vadinamas „pagrindiniu“) kaip pagrindinis scenarijus

Pirmiausia apibrėžiamas bendras roboto greitis kartu su kintamuoju „priminti“. Šis „priminimas“yra vertybė, prisimenanti, kuria kryptimi robotas pasuko. Jei „priminti = 1“, robotas sukosi į kairę, jei „priminti = 2“, robotas suko į dešinę.

int greitis = 9; // Bendras roboto greitis

int priminti = 1; // Pradinė kryptis

Nustatant robotą, inicijuojami skirtingi programos antriniai failai. Šiuose daliniuose failuose parašytos pagrindinės variklių, jutiklių valdymo funkcijos. Inicijuojant juos sąrankoje, kiekvienoje iš šių failų aprašytos funkcijos gali būti naudojamos pagrindinėje kilpoje. Suaktyvindamas funkciją r2D2 (), robotas skleis triukšmą, kaip R2D2 robotas iš „Žvaigždžių karų“filmo franšizės. tai prasideda. Čia r2D2 () funkcija išjungta, kad garsinis signalas nesukeltų per daug srovės.

// Sąranka @ atstatymas // ----------------

void setup () {initialize_IR_sensors (); initialize_obstacles_and_edges (); initialize_movement (); initialize_lid (); initialize_buzzer (); // r2D2 (); int priminti = 1; // pradinė kryptis Starteris (priminti); }

Sąrankoje pirmiausia naudojama „Starter“(priminimo) funkcija. Ši funkcija priverčia robotą apsisukti ir ieškoti vieno mygtuko IR signalo. Suradusi mygtuką, programa išeis iš „Starter“funkcijos ir pakeis kintamąjį „cond“į false. Sukantis robotui, jis turi žinoti savo aplinką: ji turi aptikti kraštus ir kliūtis. Tai tikrinama kiekvieną kartą prieš tęsiant apsisukimą. Kai robotas aptiks kliūtį ar kraštą, bus vykdomas šių kliūčių ar kraštų išvengimo protokolas. Šie protokolai bus paaiškinti vėliau šiame žingsnyje. „Starter“funkcija turi vieną kintamąjį, kuris yra priminimo kintamasis, apie kurį buvo kalbėta anksčiau. Suteikdamas priminimo vertę „Starter“funkcijai, robotas žino, kuria kryptimi jis turi pasukti, kad galėtų ieškoti mygtuko.

// Pradžios kilpa: apsisukite ir ieškokite mygtuko // ------------------------------------ ----------------

void Starter (int prim) {if (isedgeleft () || isedgeright ()) {// Aptikti kraštus edgeDetected (priminti); } else {bool cond = tiesa; while (cond == true) {if (buttonleft () == false && buttonright () == false && isButtonDetected () == tiesa) {cond = false; } else {if (priminti == 1) {// Mes sukome į kairę, jei (isobstacleleft ()) {stoppeed (); išvengti_stotelės (priminti); } else if (isedgeleft () || isedgeright ()) {// Aptikti kraštus edgeDetected (priminti); } else {posūkis į kairę (greitis); }} else if (priminti == 2) {jei (isobstacleright ()) {stoppeed (); išvengti_stotelės (priminti); } else if (isedgeleft () || isedgeright ()) {// Aptikti kraštus edgeDetected (priminti); } else {posūkis (greitis); }}}}}}

Jei robotas randa mygtuką, tada išjungiama pirmoji starterio kilpa ir prasideda pagrindinė, funkcinė roboto kilpa. Ši pagrindinė kilpa yra gana sudėtinga, nes kiekvieną kartą robotas turi aptikti, ar priešais yra kliūtis ar kraštas. Pagrindinė mintis yra ta, kad robotas seka mygtuką, jį surasdamas ir kiekvieną kartą pamesdamas. Naudodami du IR jutiklius, galime atskirti tris situacijas:

  • skirtumas tarp kairės ir dešinės jutiklio aptiktos IR šviesos yra didesnis nei tam tikra riba, ir yra mygtukas.
  • IR šviesos skirtumas yra mažesnis už slenkstį, o priešais robotą yra mygtukas.
  • IR šviesos skirtumas yra mažesnis už slenkstį, o priešais robotą nėra mygtuko.

Sekimo tvarka veikia taip: kai aptinkamas mygtukas, robotas juda link mygtuko, pasukdamas ta pačia kryptimi, kuria sukosi (naudodamas priminimo kintamąjį), ir tuo pačiu šiek tiek pajudėja į priekį. Jei robotas pasuks per toli, mygtukas vėl bus pamestas, ir šiuo metu robotas prisimena, kad jam reikia pasukti kita kryptimi. Tai taip pat daroma šiek tiek judant į priekį. Tai darydamas robotas nuolat sukasi į kairę ir sukasi į dešinę, tačiau tuo tarpu vis tiek juda link mygtuko. Kiekvieną kartą, kai robotas randa mygtuką, jis tik sukasi tol, kol jį praranda, tokiu atveju jis pradeda judėti kita kryptimi. Atkreipkite dėmesį į skirtumus tarp funkcijų, kurios naudojamos starterio kilpoje ir pagrindinėje kilpoje: „turnleft ()“arba „turnright ()“, o pagrindinė kilpa naudoja „moveleft ()“ir „moveright ()“. Judėjimo kairėn/dešinėn funkcijos ne tik priverčia robotą apsisukti, bet ir verčia judėti į priekį tuo pačiu metu.

/ * Funkcinė kilpa ---------------------------- Čia yra tik sekimo tvarka */

int prarastas = 0; // Jei pamestas = 0 mygtukas rastas, jei pamestas = 1, mygtukas prarastas void loop () {if (isedgeleft () || isedgeright ()) {

jei (! isobstacle ()) {

judėti pirmyn (greitis); vėlavimas (5); } else {išvengti_obstacle (priminti); } else {if (priminti == 1 && prarado == 1) {// Mes sukomės į kairę stop greitis (); if (! isobstacleright ()) {moveright (greitis); // Pasukite, kad surastumėte mygtuką} else {išvengti_obstacle (priminti); } priminti = 2; } else if (priminti == 2 && prarasti == 1) {stoppeed (); if (! isobstacleleft ()) {moveleft (greitis); // Buvome sukę į dešinę} else {išvengti_obstacle (priminti); } priminti = 1; } else if (lost == 0) {if (priminti == 1) {// Mes sukome į kairę, jei (! isobstacleleft ()) {moveleft (greitis); // Sukome į dešinę} else {stoppeed (); išvengti_stotelės (priminti); } //} else if (priminti == 2) {if (! isobstacleright ()) {moveright (greitis); // Pasukite, kad surastumėte mygtuką} else {stoppeed (); išvengti_stotelės (priminti); }}} uždelsimas (10); pralaimėta = 0; }} //}}

Dabar pateikiamas nedidelis dviejų sudėtingiausių procedūrų paaiškinimas:

Venkite kraštų

Kraštų vengimo protokolas yra apibrėžtas funkcijoje „edgeDetection ()“, kuri įrašoma į „motion“antrinį failą. Šis protokolas remiasi tuo, kad robotas turėtų susidurti su kraštu tik tada, kai jis pasiekia savo tikslą: mygtuką. Kai robotas aptinka kraštą, pirmas dalykas, kurį jis daro, yra šiek tiek atsitraukti, kad būtų saugiai nutolęs nuo krašto. Kai tai bus padaryta, robotas laukia 2 sekundes. Jei per tas dvi sekundes kas nors paspaudžia mygtuką, esantį roboto priekyje, robotas žino, kad jis pasiekė sviesto norintį asmenį, atidaro sviesto skyrių ir pateikia sviestą. Šiuo metu kažkas gali paimti sviestą iš roboto. Po kelių sekundžių robotas pavargs laukti ir tiesiog uždarys sviesto dangtį. Kai dangtelis bus uždarytas, robotas atliks starterio kilpą ir ieškos kito mygtuko. Jei atsitinka taip, kad robotas susiduria su kraštu, kol nepasiekia paskirties vietos, o roboto priekyje esantis mygtukas nėra paspaustas, robotas neatidarys sviesto dangtelio ir iš karto atliks starterio kilpą.

Venkite kliūčių

Funkcija išvengti_obstacle () taip pat yra „judėjimo“antrinėje byloje. Sunkiausia išvengti kliūčių yra tai, kad robotas turi gana didelę aklą vietą. Ultragarso jutiklis yra roboto priekyje, o tai reiškia, kad jis gali aptikti kliūtis, bet nežino, kada jį pralenkia. Norėdami tai išspręsti, naudojamas toks principas: Kai robotas susiduria su kliūtimi, jis naudoja reming kintamąjį, kad pasuktų kita kryptimi. Taip robotas išvengs smūgio į kliūtį. Robotas sukasi tol, kol ultragarso jutiklis nebepajunta kliūties. Kol robotas sukasi, skaitiklis didinamas, kol kliūtis nebebus aptinkama. Tada šis skaitiklis pateikia apytikslį kliūties ilgį. Judant į priekį ir tuo pačiu sumažinant skaitiklį, galima išvengti kliūčių. Kai skaitiklis pasiekia 0, mygtukas „Starter“vėl gali būti naudojamas. Žinoma, robotas atlieka „Starter“funkciją, pasukdamas ta kryptimi, kuria prisiminė, kad eina prieš susidurdamas su kliūtimi (dar kartą naudodamas priminimo kintamąjį).

Dabar, kai visiškai suprantate kodą, galite pradėti jį naudoti!

Būtinai pritaikykite slenksčius prie savo aplinkos (pavyzdžiui, baltos spalvos lentelėse IR atspindys yra didesnis) ir pritaikykite skirtingus parametrus savo poreikiams. Be to, didelis dėmesys turėtų būti skiriamas įvairių modulių maitinimui. Labai svarbu, kad servo varikliai nebūtų maitinami iš „Arduino 5V“prievado, nes jie sunaudoja daug srovės (tai gali sugadinti mikrovaldiklį). Jei jutikliams naudojamas tas pats maitinimo šaltinis, kuris maitina servoservis, gali kilti tam tikrų matavimo problemų.

Rekomenduojamas: