Projekt 2.1 - Přechod pro chodce

9. Rozšíření programu o zobrazení času

JAVA verze

import lejos.nxt.*;

public class semafory2
{
  // Nadefinujeme si třídu Lamp pro ovládání světel.
  // Využijeme třídy MotorPort k ovládání světla.
  // Konkrétně metodu controlMotor, která má parametry (power,mode).
  //     power - power from 0-100
  //      mode - 1=forward, 2=backward, 3=stop, 4=float
  public static class Lamp {
	// soukromé proměnné třídy:
	private MotorPort _M = MotorPort.A;	
	private boolean _IsLighting;
	// Konstruktor třídy: 
	public Lamp(MotorPort M) {
		_M = M;
		_M.controlMotor(0,1);
		_IsLighting = false;
	}
	// Metoda zapni
	public void On() {
		_M.controlMotor(100,1);
		_IsLighting = true;
	}
	// metoda vypni
	public void Off() {
		_M.controlMotor(0,1);
		_IsLighting = false;
	}
	// metoda vracející stav lampy
	public boolean IsLighting() {
		return _IsLighting;
	}
  } // Konec třídy Lamp

  public static void main (String[] aArg)
  throws Exception
  {
	// Vytvoříme tři nové instance třídy Lamp pro jednotlivé barvy:
 	Lamp zelena = new Lamp(MotorPort.B);
	Lamp cervena = new Lamp(MotorPort.A);
	Lamp zluta = new Lamp(MotorPort.C);
	// Vytvoříme novou instanci třídy touch sensor - připojeném na vstupu 1:
	TouchSensor touch1 = new TouchSensor(SensorPort.S1);
	// Vlastní nekonečný cyklus pro řízení přechodu:
	while (true) {
		zelena.On();
		// Č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);				
     		}
		// V cyklu, ktery bezi 10x zobrazujeme i (cislo pruchodu):
  		for (int i = 16; i >= 6; i--)
  		{
		  LCD.drawString(Integer.toString(i),2,2);
		  Thread.sleep(1000);		  
  		}
		zelena.Off();
		zluta.On();
		// V cyklu, ktery bezi 5x zobrazujeme i (cislo pruchodu):
  		for (int i = 5; i >= 0; i--)
  		{
		  LCD.drawString(Integer.toString(i),2,2);
		  Thread.sleep(1000);		  
  		}
		zluta.Off();
		cervena.On(); 
		Thread.sleep(10000);
		cervena.Off();
		zluta.On();
   		Thread.sleep(5000);
		zluta.Off();
	} // konec sekvence příkazů nekonečného cyklu
  } // konec metody main
} // konec třídy