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.