Projekt 1.1 - Plnou parou vpřed !
7. Detekce překážky dotekem a její objetí
JAVA verze
// Kromě standardních knihoven potřebujeme i třídy knihovny navigation:
import lejos.nxt.*;
import lejos.robotics.navigation.*;
public class Jizda_prekazka_t
{
// Třída Pilot využivá jednotky délky Inch (palec)
// Přepočet je delka_v_palcich = delka_v_cm * 0.394
// K tomu si vytvoříme pomocnou metodu:
public static float cm_na_palce (float delka_v_cm)
{
return delka_v_cm * 0.394f;
}
public static void main (String[] aArg)
throws Exception
{
// Vytvoříme novou instanci třídy Tachopilot a nastavíme parametry robota
// (průměr kola v palcích, vzdálenost kol v palcích, levý motor, pravý motor, reverze otáček)
Pilot pilot = new TachoPilot(cm_na_palce(5.5f), cm_na_palce(11.7f), Motor.A, Motor.B, false);
// Jízda rovně metodou travel (vzdálenost v placích)
// a rotace robota metodou rotate (úhel otočení ve stupních)
// Dále vytvoříme novou instanci třídy touch sensor - připojeném na vstupu 1:
TouchSensor touch1 = new TouchSensor(SensorPort.S1);
//zahájíme nekonečný cyklus:
while (true) {
Motor.A.setSpeed(720);
Motor.B.setSpeed(720);
Motor.A.forward();
Motor.B.forward(); // krok 1 neomezená jízda vpřed.
// Čekáme na dotyk senzoru touch1, pokud je stisknuto tlačítko ESCAPE program se ukončí.
while(!touch1.isPressed()) {
if (Button.ESCAPE.isPressed())
System.exit(1);
}
Motor.A.stop(); // zastaví motory
Motor.B.stop(); // zastaví motory
pilot.travel(cm_na_palce(-10)); // kousek couvne
pilot.rotate(-90); // krok 2
pilot.travel(cm_na_palce(30)); // krok 3
pilot.rotate(90); // krok 4
pilot.travel(cm_na_palce(60)); // krok 5
pilot.rotate(90); // krok 6
pilot.travel(cm_na_palce(30)); // krok 7
pilot.rotate(-90); // krok 8
} // konec sekvence příkazů nekonečného cyklu
} // konec metody main
} // konec třídy