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