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

Displej nogometaša

Cilj

Ispisivati na 8x8 displeju stanja nogometaša.

Pohrana teksta

RobotSoccer::RobotSoccer(char name[]) : Robot(name) {
	...

	// LED Calibrate
	LEDSignText* signCalibrate = new LEDSignText(); // Here, a text will be ...
	strcpy(signCalibrate->text, "Calibr.");

	...
}
Iako postoje i druga rješenja, mi ćemo u našem prvo pohraniti sve znakove, koje želimo, u sam displej.

Znakovi mogu biti tekstualni ili bitmape.

Prvo primjer tekstualnog. Zašto su naredbe lijevo kakve jesu, sad nećemo proučavati. Prihvatimo da se tako u objekt "signCalibrate" upiše tekst "Calibr.".

Napredniji mogu proučiti klasu "LEDSign" i izvedene pa će shvatiti pozadinu.

Pohrana bitmapa

RobotSoccer::RobotSoccer(char name[]) : Robot(name) {
	...

	// LED Calibrate
	LEDSignText* signCalibrate = new LEDSignText(); // Here, a text will be ...
	strcpy(signCalibrate->text, "Calibr.");

	// LED approach opponent's goal
	LEDSignBitmap* signGoalApproach = new LEDSignBitmap();
	// Each "1" will turn on a single LED.
	signGoalApproach->green[0] = 0b01111110;
	signGoalApproach->green[1] = 0b01000010;
	signGoalApproach->green[2] = 0b00000000;
	signGoalApproach->green[3] = 0b00000000;
	signGoalApproach->green[4] = 0b00000000;
	signGoalApproach->green[5] = 0b00000000;
	signGoalApproach->green[6] = 0b00000000;
	signGoalApproach->green[7] = 0b00000000;

	...
}
Sad pohranimo jednu bitmapu u objekt "signGoalApproach".

Neke smo elemente ovih naredbi već obradili. Ostatak nećemo sad.

Uglavnom, gdje su jedinice, ti će LEDovi biti upaljeni u zelenoj boji.

Ovo je primjer iz koda koji dolazi s robotom. Nakon prve bitmape se definiraju i ostale, što nećemo prikazivati ovdje. Pronađite bitmape u kodu.

Korištenje spremljenih bitmapa i tekstova

RobotSoccer::RobotSoccer(char name[]) : Robot(name) {
	...

	actionCalibrate = new ActionSoccerCalibrate(this, signCalibrate);
	...
	actionGoalApproach = new ActionSoccerGoalApproach(this, signGoalApproach);

	...
}
Mogli bismo koristiti spremljene bitmpate i tekstove tako da ih svaki put eksplicitno pozovemo u kodu, kad izvršavanje prođe kroz željenu točku.

Tako smo radili i prijašnjim vježbama, ali u ovom slučaju postoji elegantnije rješenje.

Svaka od ovih oznaka označava jedno stanje robota ("akciju").

Lijevo je prikazan način kako znak pridružiti akciji.

Svaki put kad se akcija pokrene, automatski će se ispisati pripadajući znak.

Zadatak: centimetri

Umjesto zadane bitmape, ispisujte na displeju broj decimetara do protivničkog gola, kad robot ima loptu i ide prema golu.

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.