Hrvatsko društvo za robotiku - Uvod u robotiku - vježbe

Prekidač

Cilj

Tipkalo omogućava brže pokretanje i zaustavljanje robota.

Slobodna tipka

	// Set buttons' actions.
	mrm_8x8a->actionSet(actionRCJLine, 0); // Button 0 starts RCJ Line.
	mrm_8x8a->actionSet(_actionLoop, 1); // Button 1 starts user ...
	//mrm_8x8a->actionSet(actionEvacuationZone, 2); // Button 2 starts
	mrm_8x8a->actionSet(actionStop, 3); // Stop the robot
Postoji više vrsta tipkala u našem robotu. U ovoj vježbi ćemo koristiti tipkalo pored 8x8 displeja. Uočimo ih 4. Pored svakog je broj: "SW1", "SW2",...

Pronađimo prvo slobodnu tipku. Tipke dobivaju svoje trajne funkcije u "mrm-robot-line.cpp" dijelu koda koji se izvršava uvijek na početku. Nađimo prvo taj dio, npr. putem Ctrl-F pa upisom "mrm_8x8a->actionSet(" u tražilicu, bez navodnika.

4 su linije. Svaka definira jednu tipku. Ako je linija komentirana, tipka se ne definira i ostaje slobodna. U našem primjeru je slobodna tipka broj 2 (3. tipka jer brojanje počinje od 0).

Želimo li osloboditi neku drugu tipku, upišemo "//" na početak linije, komentirajući ju. Na taj način naredba neće biti izvršena i tipka će ostati slobodna.

U loop-u

void RobotLine::loop() {
	if (button(2))
		print("Da\n\r");
	else
		print("Ne\n\r");
}
Za ovu vježbu se preporuča staviti robota na neku podlogu, tako da se kotači slobodno okreću u zraku, a robot se ne pokreće. Na taj je način lakše pritisnuti tipku.

Upišimo kod s lijeve strane u funkciju loop. Pokrenimo program.

Rezultat će biti ispisano "Da", ako je 3. tipkalo pritisnuto, "Ne" ako nije. button(2) vreća istiniti rezultat kad je tipkalo pritisnuto, neistiniti kad nije. Posljedično, "if" izvršava prvi ili drugi red.
Eksperti,

Zadatak: pauza u radu motora.

Pokrenite motore. Ako pritisnete tipkalo broj 3, motori trebaju stati i ostati u tom stanju, sve dok je tipkalo pritisnuto. Kad ga otpustite, motori trebaju opet krenuti.

Prilikom starta

void RobotLine::loop() {
	// Set buttons' actions.
	mrm_8x8a->actionSet(actionRCJLine, 0); // Button 0 starts RCJ Line.
	mrm_8x8a->actionSet(_actionLoop, 1); // Button 1 starts user ...
	//mrm_8x8a->actionSet(actionEvacuationZone, 2); // Button 2 starts
	mrm_8x8a->actionSet(actionStop, 3); // Stop the robot
}
Vratimo se na kod s početka vježbe. Na ovom se mjestu može definirati svaka od 4 tipke na način da pokreće bilo koju funkciju.

Još nećemo proučavati kako jer nem fali znanje iz jedne od sljedećih vježbi, ali možemo koristiti što je već programirano. Pogledajmo kako su sad definirane tipke: Pričekajte, doći će na red vježbe u kojoj ćemo opisati strukturu programa pa će tad postati jasno kako koristiti tipkala u općem slučaju.
Eksperti,

Primjedbe



Projekt "Uvod u robotiku" sufinanciran je iz Europskog socijalnog fonda, poziv "Jačanje kapaciteta organizacija civilnoga društva za popularizaciju STEM-a". Relevantne stranice: Sadržaj vježbe za virtualne radionice isključiva je odgovornost Hrvatskog društva za robotiku.