void RobotLine::loop() {
if ((line(0) || line(8)) && pitch() < -10)
go(70, 70);
else if (line(0) && line(8))
go(70, 70), delayMs(500);
else if (line(8))
go(-90, 90);
else if (line(0))
go(90, -90);
else if (line(1))
go(70, -20);
else if (line(2))
go(60, 10);
else if (line(3))
go(50, 20);
else if (line(5))
go(20, 50);
else if (line(6))
go(10, 60);
else if (line(7))
go(-20, 70);
else
go(70, 70);
}
Problemi se javljaju zato što robot, kad se penje, i došao je na vrh rampe, odigne senzor linije od podloge, očitavši nepostojeću poprečnu liniju.
Budući da se penje, možemo koristi IMU, koji mjeri nagib funkcijom
pitch(). Prilikom penjanja je negativan.
Rješenje je, kad robot vidi liniju jednim od 2 krajnja senzora, da nastavi ići ravno, ako je na uzbrdici:
if ((line(0) || line(8)) && pitch() < -10)
go(70, 70);
Dodana je još jedna linije, koja prolazi ravno, ako robot naiđe na procijep između pločica, a ne spušta se:
else if (line(0) && line(8))
go(70, 70), delayMs(500);
Ova se situacija može dogoditi kad robot ide po visoravni i dođe po početka nizbrdice.