Projekt 2.3 - Udržování teploty čaje
10. Nastavování žádané teploty tlačítky
JAVA verze
import lejos.nxt.*;
import lejos.util.Datalogger;
import lejos.nxt.addon.RCXTemperatureSensor;
public class regulacelogn
{
public static class Spinac {
// soukromé proměnné třídy:
private boolean _IsOn;
private static LightSensor light;
// Konstruktor třídy:
public Spinac() {
this.Off();
}
// Metoda zapni
public void On() {
LightSensor light = new LightSensor(SensorPort.S2);
Motor.A.forward();
while(light.getLightValue() < 60) {
}
Motor.A.stop();
_IsOn = true;
}
// metoda vypni
public void Off() {
LightSensor light = new LightSensor(SensorPort.S2);
Motor.A.forward();
while(light.getLightValue() > 70) {
}
Motor.A.stop();
_IsOn = false;
}
// metoda vracející stav spinace
public boolean IsOn() {
return _IsOn;
}
} // Konec třídy Spinac
// Vytvoříme třídu Nastaveni, jejíž metoda run poběží paralerně s hlavním programem.
// Ta bude sloužit pro nastavování teploty tlačítky vlevo a vpravo.
public static class Nastaveni extends Thread {
// soukromá proměnná třídy:
private float _zadana;
// Konstruktor třídy:
public Nastaveni() {
_zadana = 30;
}
// Metoda run (vlastní vlákno):
public void run() {
while (true) {
if (Button.LEFT.isPressed()) {
_zadana -= 1;
Sound.playTone(500,250,100);
Sound.pause(250);
LCD.drawString("Zadana: " + Float.toString(_zadana),0,3);
} // Konec podmínky if
if (Button.RIGHT.isPressed()) {
_zadana += 1;
Sound.playTone(500,250,100);
Sound.pause(250);
LCD.drawString("Zadana: " + Float.toString(_zadana),0,3);
} // Konec podmínky if
} // konec cyklu while
} // konec metody run
public float getZadana() {
return _zadana;
}
} // Konec třídy Nastaveni
// Hlavní program:
public static void main (String[] aArg)
throws Exception
{
// Deklarujeme proměnou zadana a namerena teplota:
float zadana = 30;
float namerena = 0;
// Vytvoříme novou instanci třídy Spinac:
Spinac sp = new Spinac();
// Vytvoříme novou instanci třídy RCXTemperatureSensor
// na portu 1.
RCXTemperatureSensor temp = new RCXTemperatureSensor(SensorPort.S1);
// Vytvoříme novou instanci třídy Datalogger
// (standardní velikost 512 hodnot, při kroku 5 sekund vystačí cca na 40 minut)
Datalogger d1 = new Datalogger();
// Deklarace objektu nastav:
Nastaveni nastav = new Nastaveni();
// Spuštění vlákna Nastaveni teploty:
nastav.start();
// Čteme a zobrazujeme teplotu ve stupních celsia.
while (true) {
namerena = temp.getCelcius();
LCD.drawString("Namerena: " + Float.toString(namerena),0,2);
// Pokud stiskneme tlačítko ESCAPE, program skončí.
if (namerena < nastav.getZadana()) {
sp.On();
LCD.drawString("TOPI",0,4);
}
else
sp.Off();
if (Button.ESCAPE.isPressed()) {
// odešli data do počítače:
d1.transmit();
//System.exit(1);
}
// zapis namerenou teplotu do logu:
d1.writeLog(namerena);
Thread.sleep(5000);
} // Konec sekvence příkazů nekonečného cyklu
} // konec metody main
} // konec třídy