Përmbajtje:

Roboti i Gjalpit: Roboti Arduino me krizë ekzistenciale: 6 hapa (me fotografi)
Roboti i Gjalpit: Roboti Arduino me krizë ekzistenciale: 6 hapa (me fotografi)

Video: Roboti i Gjalpit: Roboti Arduino me krizë ekzistenciale: 6 hapa (me fotografi)

Video: Roboti i Gjalpit: Roboti Arduino me krizë ekzistenciale: 6 hapa (me fotografi)
Video: КАК СДЕЛАТЬ ARDUINO РОБОТ МАШИНКУ КОТОРЫЙ ОБХОДИТ ПРЕПЯТСТВИЯ 2024, Korrik
Anonim
Image
Image

Ky projekt bazohet në serialin e animuar "Rick and Morty". Në një nga episodet, Rick bën një robot qëllimi i vetëm i të cilit është të sjellë gjalpë. Si studentë nga Bruface (Fakulteti Inxhinierik i Brukselit) ne kemi një detyrë për projektin e mekatronikës e cila është të ndërtojmë një robot bazuar në një temë të sugjeruar. Detyra për këtë projekt është: Bëni një robot që shërben vetëm gjalpë. Mund të ketë një krizë ekzistenciale. Sigurisht që roboti në episodin e Rick dhe Morty është një robot mjaft kompleks dhe duhen bërë disa thjeshtime:

Meqenëse qëllimi i tij i vetëm është të sjellë gjalpë, ka alternativa më të drejtpërdrejta. Në vend që ta bëjë robotin të duket dhe të kapë gjalpin, para se ta sjellë tek personi i duhur, roboti mund ta mbajë gjalpin gjatë gjithë kohës. Ideja kryesore është kështu që të bëni një karrocë që transporton gjalpin atje ku duhet të jetë.

Përveç transportimit të gjalpit, roboti duhet të dijë se ku duhet ta sjellë gjalpin. Në episod, Rick përdor zërin e tij për të thirrur dhe komanduar robotin. Kjo kërkon një sistem të shtrenjtë të njohjes së zërit dhe do të ishte shumë i ndërlikuar. Në vend të kësaj, të gjithë në tryezë marrin një buton: pasi të aktivizohet ky buton, roboti mund ta gjejë këtë buton dhe të lëvizë drejt tij.

Për të përmbledhur, roboti duhet të plotësojë kërkesat e mëposhtme:

  • Duhet të jetë i sigurt: duhet të shmangë pengesat dhe të parandalojë që të mos bjerë nga tryeza;
  • Roboti duhet të jetë i vogël: hapësira në tryezë është e kufizuar dhe askush nuk do të donte një robot që shërben gjalpë, por që është gjysma e madhësisë së vetë tryezës;
  • Puna e robotit nuk mund të varet nga madhësia ose forma e tryezës, në atë mënyrë mund të përdoret në tavolina të ndryshme;
  • Duhet të sjellë gjalpin tek personi i duhur në tryezë.

Hapi 1: Koncepti kryesor

Kërkesat e përmendura më parë mund të përmbushen duke përdorur teknika të ndryshme. Vendimet në lidhje me modelin kryesor që janë marrë shpjegohen në këtë hap. Detajet se si zbatohen këto ide mund të gjenden në hapat e mëposhtëm.

Për të përmbushur detyrën e tij, roboti duhet të lëvizë derisa të arrihet destinacioni. Duke marrë parasysh aplikimin e robotit është e drejtpërdrejtë që përdorimi i rrotave në vend të lëvizjes "ecëse" është më mirë për ta bërë atë të lëvizë. Meqenëse një tryezë është një sipërfaqe e sheshtë dhe roboti nuk do të arrijë shpejtësi shumë të mëdha, dy rrota të aktivizuara dhe një top rrëshqitës është zgjidhja më e thjeshtë dhe më e lehtë për tu kontrolluar. Rrotat e aktivizuara duhet të mundësohen nga dy motorë. Motorët duhet të kenë një çift rrotullues të madh, por nuk kanë nevojë të arrijnë një shpejtësi të madhe, prandaj do të përdoren servo motorë të vazhdueshëm. Një avantazh tjetër i motorëve servo është thjeshtësia e përdorimit me një Arduino.

Zbulimi i pengesave mund të bëhet duke përdorur një sensor tejzanor që mat distancën, i bashkangjitur në një servo motor për të zgjedhur drejtimin e matjes. Skajet mund të zbulohen duke përdorur sensorë LDR. Përdorimi i sensorëve LDR do të kërkojë ndërtimin e një pajisjeje që përmban si një dritë led ashtu edhe një sensor LDR. Një sensor LDR mat dritën e reflektuar dhe mund të shihet si një lloj sensori në distancë. I njëjti parim ekziston me dritën infra të kuqe. Ekzistojnë disa sensorë të afërsisë me rreze infra të kuqe të cilët kanë dalje dixhitale: të afërt ose jo të afërt. Kjo është pikërisht ajo që i duhet robotit për të zbuluar skajet. Duke kombinuar 2 sensorë buzë të vendosur si dy antena insektesh dhe një sensor tejzanor të aktivizuar, roboti duhet të jetë në gjendje të shmangë pengesat dhe skajet.

Zbulimi i butonave gjithashtu mund të arrihet duke përdorur sensorë IR dhe led. Avantazhi i IR është se është i padukshëm, gjë që e bën përdorimin e tij jo shqetësues për njerëzit në tryezë. Laserët mund të përdoren gjithashtu, por atëherë drita do të ishte e dukshme dhe gjithashtu e rrezikshme kur dikush e vë lazerin në syrin e një personi tjetër. Gjithashtu, përdoruesi do të duhet të synojë sensorët në robot vetëm me një rreze të hollë lazer, e cila do të ishte mjaft e bezdisshme. Duke pajisur robotin me dy sensorë IR dhe duke ndërtuar butonin me një led IR, roboti e di se në cilin drejtim duhet të shkojë duke ndjekur intensitetin e dritës IR. Kur nuk ka asnjë buton, roboti mund të kthehet derisa një nga leds të kapë sinjalin nga një prej butonave.

Gjalpi vendoset në një ndarje në krye të robotit. Kjo ndarje mund të përbëhet nga një kuti dhe një kapak i aktivizuar për të hapur kutinë. Për të hapur kapakun dhe për të lëvizur sensorin tejzanor për të skanuar dhe zbuluar pengesat na duhen dy motorë dhe për këtë qëllim, servo motorët jo të vazhdueshëm janë më të përshtatur sepse motorët duhet të shkojnë në një pozicion të caktuar dhe të mbajnë atë pozicion.

Një tipar shtesë i projektit ishte bashkëveprimi me mjedisin e jashtëm me një zë robotik. Një zile është e thjeshtë dhe e përshtatur për këtë qëllim, por nuk mund të përdoret në çdo kohë sepse barazimi i korrentit është i lartë.

Vështirësitë kryesore të projektit mbështeten në kodimin, pasi pjesa mekanike është mjaft e drejtpërdrejtë. Shumë raste duhet të merren parasysh për të shmangur robotin të ngecur ose të bëjë diçka të padëshiruar. Problemet kryesore që duhet të zgjidhim janë humbja e sinjalit IR për shkak të një pengese dhe ndalimi kur të arrijë te butoni!

Hapi 2: Materialet

Pjesët mekanike

  • Printer 3D dhe makinë prerëse me lazer

    • PLA do të përdoret për printim 3D, por gjithashtu mund të përdorni ABS
    • Një pjatë me kompensatë thupre 3 mm do të përdoret për prerjen me lazer pasi ju jep mundësinë për të bërë modifikime më vonë me lehtësi, pleksiglas gjithashtu mund të përdoret, por është më e vështirë të modifikohet pasi të jetë prerë me lazer pa e shkatërruar atë
  • Bulona, arra, rondele

    Shumica e përbërësve mbahen së bashku duke përdorur bulona, rondele dhe arra të kokës, por disa prej tyre kërkojnë vendosjen e bulonave M2 ose M4. Gjatësia e bulonave është në rangun 8-12 mm

  • Hapësira PCB, 25 mm dhe 15 mm
  • 2 Servo motorë me rrota të pajtueshme
  • Disa tela metalikë të trashë rreth 1-2 mm në diametër

Pjesë elektronike

  • Mikrokontrollues

    1 bord arduino UNO

  • Servo motorët

    • 2 Servo motorë të mëdhenj: Ndizni vazhdimisht 6 kg 360 gradë
    • 2 mikro servo motorë: Feetech FS90
  • Sensorë

    • 1 Sensor tejzanor
    • 2 sensorë të afërsisë IR
    • 2 fotodiode IR
  • Bateri

    • 1 mbajtës baterie 9V + bateri
    • 1 mbajtës baterie 4AA + bateri
    • 1 kuti baterie 9V + bateri
  • Komponentë shtesë

    • Disa tela, tela dhe pllaka bashkimi
    • Disa rezistorë
    • 1 LED IR
    • 3 ndërprerës
    • 1 zile
    • 1 buton
    • 1 lidhës baterie Arduino në 9V

Hapi 3: Testimi i pajisjeve elektronike

Testimi i pajisjeve elektronike
Testimi i pajisjeve elektronike
Testimi i pajisjeve elektronike
Testimi i pajisjeve elektronike

Krijimi i butonit:

Butoni është bërë thjesht nga një ndërprerës, një LED infra të kuqe dhe një rezistencë 220 Ohm në seri, e mundësuar nga një bateri 9V. Kjo është vendosur në një paketë baterie 9V për një dizajn kompakt dhe të pastër.

Krijimi i moduleve të marrësit infra të kuqe:

Këto module janë bërë me dërrasa bashkimi me vrima, të cilat më vonë do të ngjiten me vida në robot. Qarqet për këto module janë përshkruar në skemat e përgjithshme. Parimi është të matni intensitetin e dritës infra të kuqe. Për të përmirësuar matjet, kolimatorët (të bërë me tuba të tkurrur) mund të përdoren për t'u përqëndruar në një drejtim të caktuar me interes.

Kërkesa të ndryshme të projektit duhet të përmbushen duke përdorur pajisje elektronike. Numri i pajisjeve duhet të jetë i kufizuar në mënyrë që të mbajë një kompleksitet relativisht të ulët. Ky hap përmban skemat e instalimeve elektrike dhe secilin kod për të testuar të gjitha pjesët veç e veç:

  • Servo motorë të vazhdueshëm;
  • Sensor tejzanor;
  • Servo motorë jo të vazhdueshëm;
  • Zile;
  • Zbulimi i drejtimit të butonit IR;
  • Zbulimi i skajeve nga sensorët e afërsisë;

Këto kode mund të ndihmojnë në kuptimin e përbërësve në fillim, por është gjithashtu shumë i dobishëm për korrigjimin e gabimeve në fazat e mëvonshme. Nëse shfaqet një problem i caktuar, defekti mund të zbulohet më lehtë duke testuar të gjithë përbërësit veç e veç.

Hapi 4: Dizajnimi i Copave të Shtypura 3D dhe Laser

Dizajn i copëzuar me printim 3D dhe me prerje me lazer
Dizajn i copëzuar me printim 3D dhe me prerje me lazer
Dizajn i copëzuar me printim 3D dhe me prerje me lazer
Dizajn i copëzuar me printim 3D dhe me prerje me lazer
Dizajn i copëzuar me printim 3D dhe me prerje me lazer
Dizajn i copëzuar me printim 3D dhe me prerje me lazer

Pjesë të prera me lazer

Asambleja është bërë nga tre pllaka kryesore horizontale të mbajtura së bashku nga ndarësit PCB për të marrë një dizajn të hapur që siguron qasje të lehtë në pajisje elektronike nëse është e nevojshme.

Ato pllaka duhet të kenë prerjen e vrimave të nevojshme në mënyrë që të vidhosin ndarësit dhe përbërësit e tjerë për montimin përfundimtar. Kryesisht, të tre pllakat kanë vrima në të njëjtin vend për ndarësit, dhe vrima specifike për pajisjet elektronike të fiksuara përkatësisht në secilën pllakë. Vini re se pllaka e mesme ka një vrimë për kalimin e telave në mes.

Pjesët më të vogla priten në dimensionet e servo -së së madhe për t'i fiksuar ato në montim.

Pjesë të printuara 3D

Përveç prerjes me lazer, disa pjesë do të duhet të printohen 3D:

  • Mbështetja për sensorin tejzanor, i cili e lidh atë me një krah motorik servo motorik
  • Mbështetja për rrotën e kastorit dhe dy sensorët e skajit IR. Dizajni i veçantë i llojit të skajeve në formë kuti të pjesës për sensorët IR vepron si një ekran për të shmangur ndërhyrjet midis sinjalit IR që lëshon butona dhe sensorëve IR të cilët duhet të përqëndrohen në atë që po ndodh vetëm në tokë
  • Mbështetja për mikro servo motorin që hap kapakun
  • Dhe së fundi vetë kapaku, i bërë nga dy pjesë për të pasur një kënd më të madh të funksionimit duke shmangur përplasjen me mikro servo motorin që hap kapakun:

    • Pjesa e poshtme e cila do të fiksohet në pllakën e sipërme
    • Dhe pjesa e sipërme e cila lidhet me pjesën e poshtme me një menteshë, dhe aktivizohet nga servo duke përdorur një tel të trashë metalik. Ne vendosëm t'i shtonim pak personalitet robotit duke i dhënë një kokë.

Pasi të jenë dizajnuar të gjitha pjesët dhe skedarët të eksportohen në formatin e duhur për makinat e përdorura, pjesët në të vërtetë mund të bëhen. Kini parasysh që printimi 3D kërkon shumë kohë, veçanërisht me dimensionet e pjesës së sipërme të kapakut. Ju mund të keni nevojë për një ose dy ditë për të printuar të gjitha pjesët. Prerja me lazer megjithatë është vetëm çështje minutash.

Të gjithë skedarët SOLIDWORKS mund të gjenden në dosjen e zipuar.

Hapi 5: Montimi dhe instalime elektrike

Image
Image
Montimi dhe instalime elektrike
Montimi dhe instalime elektrike
Montimi dhe instalime elektrike
Montimi dhe instalime elektrike
Montimi dhe instalime elektrike
Montimi dhe instalime elektrike

Asambleja do të jetë një përzierje e telave dhe vidhosjes së përbërësve së bashku, duke filluar nga poshtë në krye.

Pllaka e poshtme

Pllaka e poshtme është e montuar me paketën e baterisë 4AA, motorët servo, pjesën e printuar (bashkëngjitur rrotullës nën pllakë), dy sensorët e skajit dhe 6 ndarës meshkuj-femra.

Pjatë e mesme

Tjetra, pllaka e mesme mund të montohet, duke ngjeshur motorët servo midis dy pllakave. Kjo pllakë pastaj mund të fiksohet duke vendosur një grup tjetër ndarësish mbi të. Disa kabllo mund të kalojnë nëpër vrimën qendrore.

Moduli tejzanor mund t'i bashkëngjitet një servoje jo të vazhdueshme, e cila është e fiksuar në pllakën e mesme me Arduino, paketën e baterisë 9V (që fuqizon arduinon) dhe dy modulet e marrësit infra të kuqe në pjesën e përparme të robotit. Këto module janë bërë me pllaka bashkimi me vrima dhe janë bashkangjitur me vida në pllakë. Qarqet për këto module janë përshkruar në skemat e përgjithshme.

Pllaka e sipërme

Në këtë pjesë të montimit, çelsat nuk janë të fiksuar, por roboti tashmë mund të bëjë gjithçka përveç veprimeve që kërkojnë kapakun, kështu që na lejon të bëjmë një provë për të korrigjuar pragun, për të përshtatur kodin e lëvizjes dhe për të pasur një qasje në portet e arduino.

Kur të arrihet e gjithë kjo, pllaka e sipërme mund të fiksohet me ndarës. Komponentët e fundit të cilët janë dy ndërprerës, butoni, servo, zile dhe sistemi i kapakut mund të fiksohen përfundimisht në pllakën e sipërme për të përfunduar montimin.

Gjëja e fundit për të provuar dhe korrigjuar është këndi i servo për të hapur saktë kapakun.

Pragu i sensorëve të skajit duhet të përshtatet me potenciometrin e përfshirë (duke përdorur një kaçavidë të sheshtë) për sipërfaqe të ndryshme të tryezës. Për shembull, një tryezë e bardhë duhet të ketë një prag më të ulët se një tavolinë kafe. Gjithashtu lartësia e sensorëve do të ndikojë në pragun e nevojshëm.

Në fund të këtij hapi, asambleja përfundon dhe pjesa e fundit e mbetur janë kodet që mungojnë.

Hapi 6: Kodimi: Vendosja e gjithçkaje së bashku

I gjithë kodi i nevojshëm për ta bërë robotin të funksionojë është në skedarin e zipuar që mund të shkarkohet. Më i rëndësishmi është kodi "kryesor" që përfshin lakun e konfigurimit dhe funksionimit të robotit. Shumica e funksioneve të tjera shkruhen në nën-skedarë (gjithashtu në dosjen e zipuar). Këto nën-skedarë duhet të ruhen në të njëjtën dosje (e cila quhet "kryesore") si skripti kryesor para se ta ngarkoni në Arduino

Së pari, shpejtësia e përgjithshme e robotit përcaktohet së bashku me ndryshoren "kujtoj". Ky "kujtesë" është një vlerë që kujton në cilin drejtim ishte duke u kthyer roboti. Nëse "kujtoj = 1", roboti ishte/po kthehet majtas, nëse "kujtoj = 2", roboti ishte/po kthehet djathtas.

int shpejtësia = 9; // Shpejtësia e përgjithshme e robotit

int kujtoj = 1; // Drejtimi fillestar

Në konfigurimin e robotit, nën-skedarët e ndryshëm të programit inicializohen. Në këto nën-skedarë, janë shkruar funksionet themelore mbi kontrollin e motorëve, sensorëve, … Duke i inicializuar ato në konfigurim, funksionet që përshkruhen në secilën prej këtyre skedarëve mund të përdoren në lakun kryesor. Duke aktivizuar funksionin r2D2 (), roboti do të bëjë një zhurmë si roboti R2D2 nga ekskluziviteti i filmit Star Wars kur fillon. Këtu funksioni r2D2 () është i çaktivizuar për të parandaluar që zilja të tërheqë shumë rrymë.

// Setup @ reset // ----------------

void setup () {initialize_IR_sensors (); inicializo_obstacles_and_edges (); fillimi_lëvizja (); initialize_lid (); initialize_buzzer (); // r2D2 (); int kujtoj = 1; // drejtimi fillestar Starter (kujtoj); }

Funksioni Starter (kujtesë) së pari thirret në konfigurim. Ky funksion e bën robotin të kthehet dhe të kërkojë sinjalin IR të njërit prej butonave. Pasi të ketë gjetur butonin, programi do të dalë nga funksioni Starter duke ndryshuar ndryshoren 'cond' në false. Gjatë rrotullimit të robotit duhet të jetë i vetëdijshëm për mjedisin e tij: duhet të zbulojë skajet dhe pengesat. Kjo kontrollohet çdo herë para se të vazhdojë të kthehet. Pasi roboti të zbulojë një pengesë ose një avantazh, protokolli për të shmangur këto pengesa ose skajet do të ekzekutohet. Këto protokolle do të shpjegohen më vonë në këtë hap. Funksioni Starter ka një ndryshore e cila është ndryshorja e kujtesës që u diskutua më parë. Duke i dhënë vlerën e kujtesës funksionit Starter, roboti e di në cilin drejtim duhet të kthehet për të kërkuar butonin.

// Loop Starter: Kthehuni dhe kërkoni butonin // ------------------------------------ ----------------

void Starter (int kujtoj) {if (isedgeleft () || isedgeright ()) {// Zbuloni skajet e skajeveDetected (kujtoj); } else {bool cond = e vërtetë; ndërsa (cond == true) {if (buttonleft () == false && buttonright () == false && isButtonDetected () == true) {cond = false; } else {if (kujtoj == 1) {// Po ktheheshim majtas nëse (isobstacleleft ()) {stoppeed (); shmang pengesën (kujtoj); } else if (isedgeleft () || isedgeright ()) {// Zbuloni skajet e skajeveDetected (kujtoj); } else {kthese (shpejtësia); }} tjetër nëse (kujtoj == 2) {nëse (isobstacleright ()) {stoppeed (); shmang pengesën (kujtoj); } else if (isedgeleft () || isedgeright ()) {// Zbuloni skajet e skajeveDetected (kujtoj); } else {nga ana e djathtë (shpejtësia); }}}}}}

Nëse roboti gjen butonin, atëherë del lakja e parë Starter dhe fillon laku kryesor, funksional i robotit. Ky lak kryesor është mjaft kompleks pasi çdo herë, roboti duhet të zbulojë nëse ka apo jo një pengesë ose një avantazh para tij. Ideja kryesore është që roboti ndjek butonin duke e gjetur atë dhe duke e humbur atë çdo herë. Duke përdorur dy sensorë IR, ne mund të dallojmë tre situata:

  • ndryshimi midis dritës IR të zbuluar nga sensori i majtë dhe i djathtë është më i madh se një prag i caktuar, dhe ka një buton.
  • ndryshimi në dritën IR është më i vogël se pragu, dhe ka një buton para robotit.
  • diferenca në dritën IR është më e vogël se pragu, dhe NUK ka buton para robotit.

Mënyra se si funksionon rutina e pista është si më poshtë: kur zbulohet butoni, roboti lëviz drejt butonit duke u kthyer në të njëjtin drejtim që ishte duke u kthyer (duke përdorur ndryshoren e kujtesës) dhe në të njëjtën kohë lëviz pak përpara. Nëse roboti kthehet shumë larg, butoni do të humbet përsëri, dhe në këtë pikë roboti kujton se duhet të kthehet në drejtimin tjetër. Kjo bëhet edhe kur ecni pak përpara. Duke e bërë këtë, roboti kthehet vazhdimisht majtas dhe kthehet djathtas, por ndërkohë ende përparon drejt butonit. Sa herë që roboti gjen butonin, ai vetëm vazhdon të kthehet derisa ta ketë humbur, në këtë rast fillon të lëvizë në drejtimin tjetër. Vini re ndryshimin në funksionet që përdoren në lakin Starter dhe lakun kryesor: lak Starter përdor "turnleft ()" ose "turnright ()", ndërsa laku kryesor përdor "moveleft ()" dhe "moveright ()". Funksionet e lëvizjes majtas/djathtas jo vetëm që e bëjnë robotin të kthehet, por gjithashtu e bëjnë atë të ecë përpara në të njëjtën kohë.

/ * Cikli funksional ---------------------------- Këtu, ekziston vetëm rutina e pista */

int humbur = 0; // Nëse humbet = 0 butoni gjendet, nëse humbet = 1 butoni humbet void loop () {if (isedgeleft () || isedgeright ()) {

nëse (! isobstacle ()) {

lëviz përpara (shpejtësia); vonesa (5); } else {shmang_ pengesën (kujtoj); } else {if (kujtoj == 1 && humbi == 1) {// Po ktheheshim majtas me shpejtësi (); nëse (! isobstacleright ()) {lëvizës (shpejtësia); // Kthehuni për të gjetur butonin} else {shmang_obsstacle (kujtoj); } kujtoj = 2; } else if (kujto == 2 && humbi == 1) {stoppeed (); if (! isobstacleleft ()) {moveleft (shpejtësia); // Ne po ktheheshim djathtas} tjetër {evito_obstacle (kujtoj); } kujtoj = 1; } else if (humbur == 0) {if (kujtoj == 1) {// Po ktheheshim majtas nëse (! isobstacleleft ()) {moveleft (shpejtësia); // Po ktheheshim djathtas} else {stoppeed (); shmang pengesën (kujtoj); } //} tjetër nëse (kujtoj == 2) {nëse (! isobstacleright ()) {lëvizëse (shpejtësia); // Kthehuni për të gjetur butonin} else {stoppeed (); shmang pengesën (kujtoj); }}} vonesa (10); humbur = 0; }} //}}

Tani, jepet një shpjegim i vogël i dy rutinave më komplekse:

Shmangni skajet

Protokolli për të shmangur skajet përcaktohet në një funksion të quajtur "edgeDetection ()" i cili është shkruar në nën-skedarin "lëvizje". Ky protokoll mbështetet në faktin se roboti duhet të hasë në një avantazh vetëm kur të ketë arritur në destinacionin e tij: butonin. Sapo roboti të zbulojë një skaj, gjëja e parë që bën është të lëvizë pak mbrapa për të qenë në një largim të sigurt nga buza. Pasi të bëhet kjo, roboti pret për 2 sekonda. Nëse dikush shtyp butonin në pjesën e përparme të robotit në ato dy sekonda, roboti e di që ka arritur tek personi që dëshiron gjalpin dhe hap ndarjen e gjalpit dhe paraqet gjalpin. Në këtë pikë, dikush mund të marrë gjalpë nga roboti. Pas disa sekondash roboti do të lodhet duke pritur dhe do të mbyllë kapakun e gjalpit. Pasi të jetë mbyllur kapaku, roboti do të ekzekutojë lakun Starter për të kërkuar një buton tjetër. Nëse ndodh që roboti të hasë në një avantazh para se të arrijë në destinacionin e tij dhe butoni në pjesën e përparme të robotit të mos shtypet, roboti nuk do të hapë kapakun e gjalpit dhe do të ekzekutojë menjëherë lakin Starter.

Shmangni pengesat

Funksioni shmangie_obstacle () ndodhet gjithashtu në nën-skedarin "lëvizje". Pjesa më e vështirë e shmangies së pengesave është fakti se roboti ka një pikë mjaft të madhe të verbër. Sensori tejzanor është vendosur në pjesën e përparme të robotit, që do të thotë se mund të zbulojë pengesa, por nuk e di kur i kalohet. Për të zgjidhur këtë, përdoret parimi i mëposhtëm: Sapo roboti të hasë një pengesë, ai përdor variablin reming për t'u kthyer në drejtimin tjetër. Në këtë mënyrë roboti shmang goditjen e pengesës. Roboti vazhdon të kthehet derisa sensori tejzanor nuk zbulon më pengesën. Gjatë kohës që roboti po kthehet, një numërues rritet derisa pengesa të mos zbulohet më. Ky numërues jep një përafrim të gjatësisë së pengesës. Duke ecur pastaj përpara dhe në të njëjtën kohë duke zvogëluar banakun, pengesa mund të shmanget. Pasi numëruesi arrin 0, funksioni Starter mund të përdoret përsëri për të zhvendosur butonin. Sigurisht që roboti bën funksionin Starter duke u kthyer në drejtimin që kujtoi se po shkonte para se të ndeshej me pengesën (përsëri duke përdorur ndryshoren e kujtesës).

Tani që e keni kuptuar plotësisht kodin, mund të filloni ta përdorni!

Sigurohuni që të përshtatni pragjet me mjedisin tuaj (reflektimi IR është më i lartë në tavolinat e bardha për shembull) dhe të përshtatni parametrat e ndryshëm sipas nevojave tuaja. Gjithashtu, vëmendje e madhe duhet t'i kushtohet fuqizimit të moduleve të ndryshme. Ofshtë me rëndësi kryesore që motorët servo të mos mundësohen nga porta Arduino 5V, pasi ato marrin shumë rrymë (kjo mund të dëmtojë mikrokontrolluesin). Nëse i njëjti burim energjie përdoret për sensorët si ai për furnizimin me energji të servove, mund të hasen në disa probleme të matjes.

Recommended: