Programiranje ruke
Cilj
Pokrenuti programski ruku.
Postojeće funkcije
void RobotLine::loop() {
...
void armCatch();
...
}
Ruka se pokreće sljedećim funkcijama, koje možete mijenjati ili parametrizirati:
- armCatch() - u donjem položaju, ruka je stisnula prste oko lopte,
- armCatch() - u donjem položaju, ruka ima raširene prste,
- armDrop() - u gornjem položaju, ruke ima raširene prste,
- armIdle() - donjem porložaju, ruka ima potpuno uvučene prste - pozicija kad npr. robot prati liniju,
- armUp() - u gornjem položaju, prsti oko lopte.
Parametriziranje funkcije
void RobotLine::armCatch() {
mrm_servo->write(LIFT_SERVO_DOWN, 0);
mrm_servo->write(CATCH_SERVO_L_CATCH, 1);
mrm_servo->write(CATCH_SERVO_R_CATCH, 2);
}
Nađimo, u "mrm-robo-line.cpp", funkciju "armCatch()".
Sastoji se od 3 naredbe. Prvi parametar, ispisan velikim slovima (npr. "LIFT_SERVO_DOWN", je kut na koji se servo pozicionira.
Drugi označava o kojem se servo motoru radi. 0 - veliki servo za podizanje ruke, 1 - lijevi prsti, 2 - desni prsti.
Želimo li mijenjati pozicije servo motora, moramo mijenjati kuteve, znači ove riječi ispisane velikim slovima ("konstante").
...
#define CATCH_SERVO_L_CATCH 40
#define CATCH_SERVO_L_CLOSE 0
#define CATCH_SERVO_L_OPEN 90
#define CATCH_SERVO_R_CATCH 60
#define CATCH_SERVO_R_CLOSE 90
#define CATCH_SERVO_R_OPEN 0
...
#define LIFT_SERVO_DOWN 130
#define LIFT_SERVO_IDLE 135
#define LIFT_SERVO_UP 230
...
}
Konstante se nalaze u "mrm-robot-line.h", blizu početka.
Npr., gornja konstatna, "LIFT_SERVO_DOWN", ima vrijednost 130 (stupnjeva).
Promijenimo li broj na 120 ili 140 stupnjeva, servo će se pomaknuti malo više gore ili dolje.
"#define" ima značenje: gdje god u programu nađeš riječ koja slijedi iza naredbe, zamijeni ju rječju koja je nakon nje. Npr.: LIFT_SERVO_DOWN zamijeni u 130.
Zadatak: hvatanje loptice.
Podesite parametre i pozivajte gornje funkcije tako da dobijete sekvencu: prsti otvoreni, loptica uhvaćena, loptica podignuta, loptica ispuštena, ruka se vratila u početni položaj.
Video
Hvatanje loptice.
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.