Sisällysluettelo:

Voi -robotti: Arduino -robotti eksistentiaalisen kriisin kanssa: 6 vaihetta (kuvilla)
Voi -robotti: Arduino -robotti eksistentiaalisen kriisin kanssa: 6 vaihetta (kuvilla)

Video: Voi -robotti: Arduino -robotti eksistentiaalisen kriisin kanssa: 6 vaihetta (kuvilla)

Video: Voi -robotti: Arduino -robotti eksistentiaalisen kriisin kanssa: 6 vaihetta (kuvilla)
Video: Bitcoin (BTC) News Today / Bitcoin (BTC) Price Prediction / Bitcoin (BTC) Technical Analysis 2024, Heinäkuu
Anonim
Image
Image

Tämä projekti perustuu animaatiosarjaan "Rick and Morty". Yhdessä jaksossa Rick tekee robotin, jonka ainoa tarkoitus on tuoda voita. Brufacen (Brysselin teknillinen tiedekunta) opiskelijoina meillä on tehtävä mekatroniikkaprojektille, jonka tarkoituksena on rakentaa robotti ehdotetun aiheen perusteella. Tämän projektin tehtävä on: Tee robotti, joka palvelee vain voita. Sillä voi olla eksistentiaalinen kriisi. Tietenkin Rick and Mortyn jakson robotti on melko monimutkainen robotti, ja joitakin yksinkertaistuksia on tehtävä:

Koska sen ainoa tarkoitus on tuoda voita, on olemassa yksinkertaisempia vaihtoehtoja. Sen sijaan, että saisi robotin näyttämään ja nappaamaan voin, ennen kuin se tuo sen oikealle henkilölle, robotti voi kantaa voita koko ajan. Pääidea on siis tehdä kärry, joka kuljettaa voin sinne, missä sen on oltava.

Voin kuljettamisen lisäksi robotin on tiedettävä, minne hänen on saatava voi. Jaksossa Rick soittaa ja käskee robottia äänellään. Tämä vaatii kalliita puheentunnistusjärjestelmiä ja olisi monimutkainen. Sen sijaan kaikki pöydässä olevat saavat painikkeen: kun tämä painike on aktivoitu, robotti voi paikantaa tämän painikkeen ja siirtyä sitä kohti.

Yhteenvetona, robotin on täytettävä seuraavat vaatimukset:

  • Sen on oltava turvallinen: sen on vältettävä esteitä ja estettävä itsensä putoamasta pöydältä;
  • Robotin on oltava pieni: pöydän tila on rajallinen, eikä kukaan haluaisi robottia, joka tarjoilee voita, mutta on puolet pöydän kokoisesta;
  • Robotin toiminta ei voi riippua pöydän koosta tai muodosta, joten sitä voidaan käyttää eri pöydissä;
  • Sen täytyy tuoda voi oikealle henkilölle pöydässä.

Vaihe 1: Pääkonsepti

Edellä mainitut vaatimukset voidaan täyttää eri tekniikoilla. Pääsuunnittelua koskevat päätökset selitetään tässä vaiheessa. Tietoja näiden ideoiden toteuttamisesta on seuraavissa vaiheissa.

Tehtävänsä suorittamiseksi robotin on liikuttava, kunnes määränpää on saavutettu. Kun otetaan huomioon robotin käyttö, on selvää, että pyörien käyttäminen "kävely" -liikkeen sijaan on parempi saada se liikkumaan. Koska pöytä on tasainen pinta ja robotti ei saavuta kovin suuria nopeuksia, kaksi käyttöpyörää ja yksi pyörä on yksinkertaisin ja helpoin hallita. Toimivilla pyörillä on oltava kaksi moottoria. Moottorilla on oltava suuri vääntömomentti, mutta niiden ei tarvitse saavuttaa suurta nopeutta, minkä vuoksi käytetään jatkuvia servomoottoreita. Toinen servomoottoreiden etu on helppokäyttöisyys Arduinon kanssa.

Esteiden havaitseminen voidaan tehdä käyttämällä ultraääni -anturia, joka mittaa etäisyyden, joka on kiinnitetty servomoottoriin mittauksen suunnan valitsemiseksi. Reunat voidaan tunnistaa LDR -antureilla. LDR -antureiden käyttäminen edellyttää laitteen rakentamista, joka sisältää sekä led -valon että LDR -anturin. LDR -anturi mittaa heijastuneen valon ja voidaan nähdä jonkinlaisena etäisyysanturina. Sama periaate pätee myös infrapunavaloon. Joissakin infrapuna -läheisyysantureissa on digitaalinen lähtö: lähellä tai ei lähellä. Tämä on juuri se, mitä robotti tarvitsee havaitakseen reunat. Yhdistämällä kaksi reuna -anturia, jotka on sijoitettu kahden hyönteisantennin tapaan, ja yhden toimivan ultraäänianturin, robotin pitäisi pystyä välttämään esteitä ja reunoja.

Painikkeiden tunnistus voidaan suorittaa myös käyttämällä IR -antureita ja led -valoja. IR: n etuna on, että se on näkymätön, joten sen käyttö ei häiritse pöydän ihmisiä. Lasereita voitaisiin myös käyttää, mutta silloin valo olisi näkyvissä ja myös vaarallista, kun joku osoittaa laserin toisen henkilön silmiin. Lisäksi käyttäjän olisi kohdistettava robotin anturit vain ohuella lasersäteellä, mikä olisi melko ärsyttävää. Varustamalla robotin kahdella IR-anturilla ja rakentamalla painikkeen IR-ledillä, robotti tietää mihin suuntaan hänen on mentävä seuraamalla IR-valon voimakkuutta. Kun painiketta ei ole, robotti voi kääntyä ympäri, kunnes yksi led -valoista kaappaa signaalin yhdestä painikkeesta.

Voi laitetaan lokeroon robotin päällä. Tämä osasto voi koostua laatikosta ja kannen avaamisesta. Kannen avaamiseksi ja ultraäänianturin siirtämiseksi esteiden skannaamiseen ja havaitsemiseen tarvitsemme kaksi moottoria, ja tähän tarkoitukseen ei -jatkuvat servomoottorit ovat paremmin mukautettuja, koska moottoreiden on mentävä tiettyyn asentoon ja säilytettävä tämä asento.

Projektin lisäominaisuus oli vuorovaikutus ulkoisen ympäristön kanssa robotin äänellä. Äänimerkki on yksinkertainen ja mukautettu tähän tarkoitukseen, mutta sitä ei voi käyttää milloin tahansa, koska kovettumaton on suuri.

Hankkeen suurimmat vaikeudet perustuvat koodaukseen, koska mekaaninen osa on melko yksinkertainen. Monet tapaukset on otettava huomioon, jotta robotti ei jää jumiin tai tekee jotain ei -toivottua. Suurimmat ongelmat, jotka meidän on ratkaistava, ovat IR -signaalin menettäminen esteen takia ja pysäytys, kun se saapuu painikkeeseen!

Vaihe 2: Materiaalit

Mekaaniset osat

  • 3D -tulostin ja laserleikkauskone

    • PLA: ta käytetään 3D -tulostukseen, mutta voit käyttää myös ABS: ää
    • Laserleikkauksessa käytetään 3 mm: n koivuvaneria, koska se antaa mahdollisuuden tehdä muutoksia myöhemmin helposti, myös pleksilasia voidaan käyttää, mutta sen leikkaaminen laserleikkauksen jälkeen on vaikeampaa
  • Pultit, mutterit, aluslevyt

    Suurin osa komponenteista pidetään kiinni M3 -napinpultteilla, aluslevyillä ja muttereilla, mutta osa vaatii M2- tai M4 -pultteja. Ruuvien pituus on 8-12 mm

  • Piirilevyvälilevyt, 25 mm ja 15 mm
  • 2 Servomoottoria yhteensopivilla pyörillä
  • Jotkut paksut metallilangat, joiden halkaisija on noin 1-2 mm

Elektroniset osat

  • Mikro -ohjain

    1 arduino UNO -levy

  • Servomoottorit

    • 2 Suuret servomoottorit: Feetech jatkuva 6 kg 360 astetta
    • 2 mikropalvelua: Feetech FS90
  • Anturit

    • 1 Ultraääni -anturi
    • 2 IR -läheisyysanturia
    • 2 IR -fotodiodia
  • Paristot

    • 1 9V paristopidike + akku
    • 1 4AA paristopidike + paristot
    • 1 9V paristokotelo + akku
  • Lisäkomponentit

    • Jotkut hyppyjohdot, johdot ja juotoslevyt
    • Jotkut vastukset
    • 1 IR -LED
    • 3 kytkintä
    • 1 summeri
    • 1 -painiketta
    • 1 Arduino - 9V akun liitin

Vaihe 3: Elektroniikan testaus

Elektroniikan testaus
Elektroniikan testaus
Elektroniikan testaus
Elektroniikan testaus

Painikkeen luominen:

Painike tehdään yksinkertaisesti kytkimellä, infrapuna -LEDillä ja 220 ohmin sarjavastuksella, joka saa virtansa 9 V: n paristosta. Tämä on sijoitettu 9 V: n akkuun kompaktin ja puhtaan rakenteen takaamiseksi.

Infrapunavastaanotinmoduulien luominen:

Nämä moduulit on valmistettu läpimenevistä juotoslevyistä, jotka kiinnitetään myöhemmin ruuveilla robottiin. Näiden moduulien piirit on kuvattu yleisissä kaavioissa. Periaate on mitata infrapunavalon voimakkuus. Mittausten parantamiseksi voidaan käyttää kollimaattoreita (valmistettu kutisteputkista) keskittyä tiettyyn kiinnostavaan suuntaan.

Hankkeen erilaiset vaatimukset on täytettävä käyttämällä elektronisia laitteita. Laitteiden määrää tulisi rajoittaa suhteellisen alhaisen monimutkaisuuden säilyttämiseksi. Tämä vaihe sisältää kytkentäkaaviot ja jokaisen koodin kaikkien osien testaamiseksi erikseen:

  • Jatkuva servomoottorit;
  • Ultraääni -anturi;
  • Ei -jatkuvat servomoottorit;
  • Summeri;
  • IR -painikkeen suunnan tunnistus;
  • Reunan tunnistus läheisyysanturien avulla;

Nämä koodit voivat auttaa ymmärtämään komponentteja alussa, mutta ne ovat myös erittäin hyödyllisiä virheenkorjauksessa myöhemmissä vaiheissa. Jos tietty ongelma ilmenee, vika voidaan havaita helpommin testaamalla kaikki komponentit erikseen.

Vaihe 4: 3D -tulostettujen ja laserleikattujen kappaleiden suunnittelu

3D -tulostetut ja laserleikatut kappaleet
3D -tulostetut ja laserleikatut kappaleet
3D -tulostetut ja laserleikatut kappaleet
3D -tulostetut ja laserleikatut kappaleet
3D -tulostetut ja laserleikatut kappaleet
3D -tulostetut ja laserleikatut kappaleet

Laserleikatut kappaleet

Kokoonpano koostuu kolmesta vaakasuorasta päälevystä, joita PCB -välikappaleet pitävät yhdessä, jotta saadaan avoin muotoilu, joka mahdollistaa helpon pääsyn elektroniikkaan tarvittaessa.

Näille levyille on leikattava tarvittavat reiät välikappaleiden ja muiden osien ruuvaamiseksi lopullista kokoonpanoa varten. Pääasiassa kaikilla kolmella levyllä on reikiä samassa paikassa välikappaleita varten ja erityiset reiät elektroniikkaa varten kiinnitetty vastaavasti kuhunkin levyyn. Huomaa, että keskimmäisessä levyssä on reikä johtojen siirtämiseen keskellä.

Pienemmät kappaleet leikataan suuren servon mittojen mukaan kiinnittämään ne kokoonpanoon.

3D -painetut kappaleet

Laserleikkauksen lisäksi joitakin kappaleita on tulostettava 3D -muodossa:

  • Tuki ultraäänianturille, joka yhdistää sen yhteen mikroservomoottorivarteen
  • Tukipyörä ja kaksi IR -reuna -anturia. Infrapuna -antureiden kappaleen muotoisten päiden erityinen muotoilu toimii näyttönä, jotta vältetään häiriöt IR -signaalia lähettävän painikkeen ja infrapuna -antureiden välillä, joiden on keskityttävä vain maan päällä tapahtuvaan
  • Mikroservomoottorin tuki, joka avaa kannen
  • Ja lopuksi itse kansi, joka on valmistettu kahdesta osasta, joilla on suurempi käyttökulma välttäen törmäystä mikro -servomoottoriin, joka avaa kannen:

    • Alin, joka kiinnitetään ylälevyyn
    • Ja yläosa, joka on liitetty pohjaan saranalla ja jota servo käyttää paksulla metallilangalla. Päätimme lisätä robottiin hieman persoonallisuutta antamalla sille pään.

Kun kaikki palaset on suunniteltu ja tiedostot viety oikeassa muodossa käytettyjä koneita varten, kappaleet voidaan itse valmistaa. Huomaa, että 3D -tulostus vie paljon aikaa, etenkin kannen yläosan mitat. Saatat tarvita yhden tai kaksi päivää kaikkien kappaleiden tulostamiseen. Laserleikkaus on kuitenkin vain muutaman minuutin kysymys.

Kaikki SOLIDWORKS-tiedostot löytyvät pakatusta kansiosta.

Vaihe 5: Asennus ja johdotus

Image
Image
Asennus ja johdotus
Asennus ja johdotus
Asennus ja johdotus
Asennus ja johdotus
Asennus ja johdotus
Asennus ja johdotus

Kokoonpano on yhdistelmä johdotusta ja komponenttien ruuvaamista yhteen alhaalta ylöspäin.

Pohjalevy

Pohjalevy sisältää 4AA-paristopaketin, servomoottorit, painetun osan (kuulapyörän kiinnittäminen levyn alle), kaksi reuna-anturia ja 6 uros-naarasvälikappaletta.

Keskilevy

Seuraavaksi voidaan asentaa keskilevy puristamalla servomoottorit kahden levyn väliin. Tämä levy voidaan sitten kiinnittää asettamalla toinen välikappale sen päälle. Jotkut kaapelit voidaan viedä keskireiän läpi.

Ultraäänimoduuli voidaan kiinnittää epäjatkuvaan servoon, joka on kiinnitetty keskilevyyn Arduinolla, 9 V: n akulla (virransyöttö arduinolle) ja kahdella infrapunavastaanottimoduulilla robotin etuosassa. Nämä moduulit on valmistettu läpimenevistä juotoslevyistä ja kiinnitetty ruuveilla levyyn. Näiden moduulien piirit on kuvattu yleisissä kaavioissa.

Päällimmäinen lautanen

Tässä kokoonpanon osassa kytkimet eivät ole kiinteitä, mutta robotti voi jo tehdä kaiken paitsi kansi vaativat toiminnot, joten sen avulla voimme tehdä jonkin testin kynnyksen korjaamiseksi, liikkeen koodin mukauttamiseksi ja helposti pääsy arduinon satamiin.

Kun kaikki tämä on saavutettu, ylälevy voidaan kiinnittää välikappaleilla. Viimeiset osat, jotka ovat kaksi kytkintä, painike, servo, summeri ja kansijärjestelmä, voidaan lopulta kiinnittää ylälevyyn asennuksen viimeistelemiseksi.

Viimeinen asia, joka on testattava ja korjattava, on servon kulma kannen avaamiseksi oikein.

Reuna -antureiden kynnys on sovitettava mukana tulevalla potentiometrillä (litteällä ruuvimeisselillä) erilaisille pöytäpinnoille. Valkoisen pöydän kynnyksen pitäisi olla alempi kuin esimerkiksi ruskean pöydän. Myös antureiden korkeus vaikuttaa tarvittavaan kynnykseen.

Tämän vaiheen lopussa kokoonpano on valmis ja viimeinen jäljellä oleva osa on puuttuvat koodit.

Vaihe 6: Koodaus: Kaikki yhteen

Kaikki tarvittava koodi robotin toimimiseksi on ladattavassa zip -tiedostossa. Tärkein niistä on "pääkoodi", joka sisältää robotin asetukset ja toiminnallisen silmukan. Suurin osa muista toiminnoista on kirjoitettu alitiedostoihin (myös pakattuun kansioon). Nämä alitiedostot on tallennettava samaan kansioon (jonka nimi on "pää") kuin pääskripti ennen niiden lataamista Arduinolle

Ensin määritetään robotin yleinen nopeus yhdessä muuttujan "muistuta" kanssa. Tämä "muistutus" on arvo, joka muistaa mihin suuntaan robotti kääntyi. Jos "muistuta = 1", robotti kääntyi vasemmalle, jos "muistuta = 2", robotti kääntyi/kääntyy oikealle.

int nopeus = 9; // Robotin yleinen nopeus

int muistuta = 1; // Alkuperäinen suunta

Robotin asetuksissa alustetaan ohjelman eri alitiedostot. Näihin alitiedostoihin on kirjoitettu moottorien, antureiden,… ohjauksen perustoiminnot. Kun ne alustetaan asetuksissa, kussakin näistä tiedostoista kuvattuja toimintoja voidaan käyttää pääsilmukassa. Aktivoimalla toiminnon r2D2 (), robotti aiheuttaa melua kuin Star Wars -elokuvasarjan R2D2 -robotti se käynnistyy. Tässä r2D2 () -toiminto on poistettu käytöstä, jotta summeri ei ota liikaa virtaa.

// Asennus @ nollaus // ----------------

void setup () {initialize_IR_sensors (); initialize_obstacles_and_edges (); initialize_movement (); initialize_lid (); initialize_buzzer (); // r2D2 (); int muistuta = 1; // alkusuunta Käynnistin (muistutus); }

Käynnistys (muistutus) -toimintoa käytetään ensin asetuksissa. Tämä toiminto saa robotin kääntymään ympäri ja etsimään jonkin painikkeen IR -signaalia. Kun ohjelma on löytänyt painikkeen, ohjelma poistuu käynnistystoiminnosta muuttamalla muuttujan 'cond' arvoksi false. Robotin pyörimisen aikana sen on oltava tietoinen ympäristöstään: sen on tunnistettava reunat ja esteet. Tämä tarkistetaan aina ennen kuin se kääntyy. Kun robotti havaitsee esteen tai reunan, protokolla näiden esteiden tai reunojen välttämiseksi suoritetaan. Nämä protokollat selitetään myöhemmin tässä vaiheessa. Aloitustoiminnossa on yksi muuttuja, joka on muistutusmuuttuja, josta keskusteltiin aiemmin. Antamalla muistutusarvon käynnistystoiminnolle robotti tietää mihin suuntaan sen täytyy kääntyä etsimään painiketta.

// Aloitussilmukka: Käänny ympäri ja etsi painiketta // ------------------------------------ ----------------

void Starter (int muistutus) {if (isedgeleft () || isedgeright ()) {// Tunnista reunat edgeDetected (muistuta); } else {bool cond = true; while (cond == true) {if (buttonleft () == false && buttonright () == false && isButtonDetected () == true) {cond = false; } else {if (muistuta == 1) {// Olimme kääntymässä vasemmalle, jos (isobstacleleft ()) {stoppeed (); välttämään_esto (muistuta); } else if (isedgeleft () || isedgeright ()) {// Tunnista reunat edgeDetected (muistuta); } else {käännös vasemmalle (nopeus); }} else if (muistuta == 2) {if (isobstacleright ()) {pysäytysnopeus (); välttämään_esto (muistuta); } else if (isedgeleft () || isedgeright ()) {// Tunnista reunat edgeDetected (muistuta); } else {turnright (nopeus); }}}}}}

Jos robotti löytää painikkeen, ensimmäinen käynnistyssilmukka poistuu ja robotin tärkein toiminnallinen silmukka alkaa. Tämä pääsilmukka on melko monimutkainen, koska robotin on joka kerta tunnistettava, onko sen edessä este tai reuna. Pääidea on, että robotti seuraa painiketta ja löytää sen ja menettää sen joka kerta. Käyttämällä kahta infrapuna -anturia voimme erottaa kolme tilannetta:

  • vasemman ja oikean tunnistimen havaitseman infrapunavalon ero on suurempi kuin tietty kynnys, ja siinä on painike.
  • IR -valon ero on pienempi kuin kynnys, ja robotin edessä on painike.
  • IR -valon ero on pienempi kuin kynnys, eikä robotin edessä ole EI -painiketta.

Seuraamisrutiini toimii seuraavasti: kun painike havaitaan, robotti liikkuu painiketta kohti kääntämällä samaan suuntaan kuin se käänsi (muistutusmuuttujan avulla) ja siirtyy samalla hieman eteenpäin. Jos robotti kääntyy liian pitkälle, painike häviää uudelleen, ja tässä vaiheessa robotti muistaa, että hänen on käännyttävä toiseen suuntaan. Tämä tehdään myös hieman eteenpäin mentäessä. Tällä tavalla robotti kääntyy jatkuvasti vasemmalle ja kääntyy oikealle, mutta sillä välin etenee edelleen painiketta kohti. Joka kerta, kun robotti löytää painikkeen, se vain pyörii, kunnes se on menettänyt sen, jolloin se alkaa liikkua toiseen suuntaan. "turnleft ()" tai "turnright ()", kun taas pääsilmukka käyttää "moveleft ()" ja "moveright ()". Siirtymisvasen/oikea -toiminnot eivät ainoastaan saa robottia kääntymään, vaan myös saamaan hänet liikkumaan eteenpäin samanaikaisesti.

/ * Toiminnallinen silmukka ---------------------------- Täällä on vain jälkirutiini */

int menetetty = 0; // Jos kadonnut = 0, painike löytyy, jos kadonnut = 1, painike katoaa void loop () {if (isedgeleft () || isedgeright ()) {

jos (! isobstacle ()) {

eteenpäin (nopeus); viive (5); } else {vältä_obstacle (muistuta); } else {if (muistuta == 1 && lost == 1) {// Olimme kääntymässä vasemmalle stoppeed (); if (! isobstacleright ()) {moveright (nopeus); // Käänny ympäri löytääksesi painikkeen} else {välttämään_obstacle (muistuta); } muistuta = 2; } else if (muistuta == 2 && lost == 1) {stoppeed (); if (! isobstacleleft ()) {moveleft (nopeus); // Olimme kääntymässä oikealle} else {välttämään_obstacle (muistuta); } muistuta = 1; } else if (lost == 0) {if (muistuta == 1) {// Olimme kääntymässä vasemmalle, jos (! isobstacleleft ()) {moveleft (speed); // Olimme kääntymässä oikealle} else {stoppeed (); välttämään_esto (muistuta); } //} muu if (muistuta == 2) {if (! isobstacleright ()) {moveright (nopeus); // Käänny ympäri löytääksesi painikkeen} else {stoppeed (); välttämään_esto (muistuta); }}} viive (10); menetetty = 0; }} //}}

Nyt annetaan pieni selitys kahdesta monimutkaisimmasta rutiinista:

Vältä reunoja

Reunojen välttämisen protokolla määritetään "edgeDetection ()" -funktiossa, joka on kirjoitettu "motion" -alitiedostoon. Tämä protokolla perustuu siihen tosiseikkaan, että robotin tulisi kohdata reuna vasta, kun se on saavuttanut määränpäänsä: painikkeen. Kun robotti havaitsee reunan, ensimmäinen asia, jonka se tekee, on siirtyä hieman taaksepäin ollakseen turvallisella etäisyydellä reunasta. Kun tämä on tehty, robotti odottaa 2 sekuntia. Jos joku painaa robotin edessä olevaa painiketta näiden kahden sekunnin aikana, robotti tietää, että se on saavuttanut voin haluavan henkilön ja avaa voin lokeron ja esittelee voin. Tässä vaiheessa joku voi ottaa voita robotilta. Muutaman sekunnin kuluttua robotti kyllästyy odottamiseen ja sulkee vain voin kannen. Kun kansi on suljettu, robotti suorittaa käynnistyssilmukan etsimään uutta painiketta. Jos tapahtuu, että robotti kohtaa reunan ennen kuin se saavuttaa määränpäänsä ja robotin etuosassa olevaa painiketta ei paineta, robotti ei avaa voin kantta ja suorittaa heti käynnistyssilmukan.

Vältä esteitä

Vältä_obstacle () -toiminto sijaitsee myös "liike" -alitiedostossa. Vaikea osa esteiden välttämistä on se, että robotilla on melko suuri sokea piste. Ultraäänianturi on sijoitettu robotin etuosaan, mikä tarkoittaa, että se voi havaita esteitä, mutta ei tiedä, milloin hänet ohitetaan. Tämän ratkaisemiseksi käytetään seuraavaa periaatetta: Kun robotti kohtaa esteen, se käyttää reming -muuttujaa kääntymään toiseen suuntaan. Näin robotti välttää osumasta esteeseen. Robotti kääntyy, kunnes ultraäänianturi ei enää havaitse estettä. Kun robotti pyörii, laskuria lisätään, kunnes estettä ei enää havaita. Tämä laskuri antaa sitten likimääräisen esteen pituuden. Este voidaan välttää siirtymällä eteenpäin ja samalla laskemalla laskuria. Kun laskuri saavuttaa 0, käynnistystoimintoa voidaan käyttää uudelleen painikkeen siirtämiseen. Tietenkin robotti suorittaa käynnistystoiminnon kääntämällä suuntaan, jonka se muisti menneensä ennen kuin hän kohtasi esteen (jälleen käyttämällä muistutusmuuttujaa).

Nyt kun ymmärrät koodin täysin, voit alkaa käyttää sitä!

Muista mukauttaa kynnysarvot ympäristösi mukaan (IR -heijastus on suurempi esimerkiksi valkoisilla pöydillä) ja sopeuta eri parametrit tarpeisiisi. Lisäksi on kiinnitettävä paljon huomiota eri moduulien virransyöttöön. On erittäin tärkeää, että servomoottorit eivät saa virtaa Arduino 5V -portista, koska ne vievät paljon virtaa (tämä voi vahingoittaa mikro -ohjainta). Jos antureissa käytetään samaa virtalähdettä kuin servojen virtalähteenä, saattaa ilmetä joitakin mittausongelmia.

Suositeltava: