Ultrazvučni senzor i premještanje predmeta

Isprogramirajte svog Robotic Arm Tanka da se pomoću ultrazvučnog senzora zaustavi ispred nekog predmeta te ga neprestano premješta na novo mjesto u lijevu stranu.

Na prednju stranu Robotic Arm Tanka dodajte ultrazvučni senzor. U kutiji s dijelovima uzmite potrebne dijelove i pričvrstite senzor. Mi smo upotrijebili: jedan Bracket 3×3, jedan Beam0824-032, četiri 50xScrew M4x8, dva 46xScrew M4x14 i dva 47xNut M4. Pričvrstili smo senzor naopačke kao na slici kako bismo nesmetano mogli spojiti robot s USB kabelom te kako bi se ruka mogla spustiti bez ometanja senzora. Kabelom 6P6C RJ25 od 35 cm spojite senzor na port 6 na upravljačkoj pločici.

U izradi ovoga programa uz naredbe za kretanje robota, podizanje i spuštanje ruke te otvaranje i zatvaranje hvataljke, koristit ćemo forever i repeat petlju, operator usporedbe i definirati varijablu za detekciju udaljenosti ultrazvučnog senzora od prepreke.

Pisanje programa započnite MegaPi Program naredbom iz kategorije Robots. Nakon toga iz dijela Control dodajte forever petlju unutar koje će biti smješten ostatak kôda jer želimo da robot neprestano ponavlja radnju.

Želimo da se robot kreće unaprijed sve dok preko senzora ne naiđe na prepreku. Za to će nam poslužiti naredba repeat until iz kategorije Control. Tom naredbom definiramo da se neka radnja odvija dok se uvjet te naredbe ne ostvari. U ovom zadatku želimo da se robot kreće unaprijed (radnja koja se odvija) sve dok robot ne naiđe na prepreku (uvjet).

Unutar repeat petlje postavite naredbu za kretanje unaprijed. Iz Robotsrun forward at speed 0 i umjesto 0 odaberite brzinu 100.

Sad ćemo definirati uvjet. Uvjet neka bude da ultrazvučni senzor detektira prepreku na udaljenosti manjoj od 12 cm. Iz kategorije Operators odaberite usporedbu manje i smjestite ju u argument naredbe repeat until.

Iz kategorije Robots odaberite varijablu ultrasonic sensor Port7 distance. Smjestite ju s lijeve strane usporedbe i klikom na crnu strelicu Port7 promijenite u Port6 jer je na tom portu spojen senzor robota.

S desne strane upišite broj 12 cm.

Na kraju dodajte naredbu za prestanak kretanja (iz Robots, run forward at speed 0 ). Time smo odredili da se robot kreće dok ne naiđe na prepreku te da nakon toga stane.

Slijedi spuštanje ruke. Početni položaj ruke robota je u našem slučaju skroz gore te je hvataljka otvorena. Iz kategorije Robots odaberite naredbu set encoder motor Port1 speed 180 rpm. Promijenite Port1 u Port3 te brzinu u 50 rpm. Dodajte vrijeme 3 sekunde (iz kategorije Control, naredba wait 1 secs) i za kraj dodajte naredbu za zaustavljanje rada motora ruke (set encoder motor Port3 speed 0 rpm). Ruka se prema ovom kôdu spušta hvataljkom oko predmeta koji će maknuti. Svi argumenti ove naredbe ovise o visini na kojoj se predmet nalazi i samoj visini predmeta te to možete prema svojim potrebama definirati sami.

Hvataljka će primiti predmet naredbom set motor 4B speed 150. Iz kategorije Robots odaberite naredbu set motor Port1A speed 0. Klikom na crnu strelicu odaberite port 4B i promijenite brzinu na 150 (kliknite u prostor gdje piše 0 i ručno unesite brojku). Dodajte vrijeme za zatvaranje hvataljke (Control – wait naredba).

Na kraju za zaustavljanje rada motora dodajte naredbu set motor 4B speed 0.

Nakon što je hvataljka primila predmet robot će ga podići kako bi ga premjestio. Za podizanje ruke koristimo isti blok naredbi kao i za spuštanje, samo u rotaciji postavite negativan broj čime će se motor okretati u suprotnom smjeru od kazaljke na satu i na taj način podići ruku. Brzinu i vrijeme podizanja možete definirati sami ovisno o tome koliko brzo i visoko želite da ruka podigne predmet.

Nakon podizanja predmeta neka robot skrene lijevo. Iz kategorije Robots odaberite naredbu run forward at speed 0. Klikom na strlicu uz run forward odaberite turn left. Postavite brzinu i dodajte vrijeme za okretanje ulijevo.

Na kraju dodajte naredbu run forward at speed 0.

S obzirom da želimo da robot neprestano premješta predmet, moramo u kôdu ponovno dodati repeat until petlju. Možete kopirati petlju s početka kôda s naredbom za zaustavljanje i naredbom za spuštanje ruke. Time smo odredili u program da se robot kreće naprijed do nove prepreke na koju će spustiti predmet.

Da bi robot otpustio predmet, ponovite postupke iz koraka za hvatanje predmeta, ali brzinu promijenite u negativan broj kako bi se motor kretao u drugom smjeru, tj. otvorio hvataljku.

Nakon toga neka se robot kretanjem unatrag odmakne od prepreke i predmeta i podigne ruku. Time smo ga postavili u početni položaj kao na početku programa.

S obzirom da su sve naredbe smještene u forever petlju cijelu radnju će robot ponavljati sve dok ga ne isključimo.

Pokušajte sami izraditi nove programe po ovom primjeru na način da robot premješta predmete u različitim smjerovima, različitim brzinama i na drugačijim visinama u odnosu na podlogu po kojoj se on kreće.