Projekt 1.1 - Plnou parou vpřed !
7. Detekce překážky ultrazvukem 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_s
{
// 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 ultrasonic sensor - připojeném na vstupu 2:
UltrasonicSensor sonic = new UltrasonicSensor(SensorPort.S2);
//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 ultrazvukový senzor , až nadetekuje blízkou překážku, pokud je stisknuto tlačítko ESCAPE program se ukončí.
while(sonic.getRange() > 25) {
if (Button.ESCAPE.isPressed())
System.exit(1);
}
Motor.A.stop(); // zastaví motory
Motor.B.stop(); // zastaví motory
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