Projekt 2.3 - Udržování teploty čaje
8. Logování průběhu regulace
JAVA verze
import lejos.nxt.*;
import lejos.util.Datalogger;
import lejos.nxt.addon.RCXTemperatureSensor;
public class regulacelog
{
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
// 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();
// Čteme a zobrazujeme teplotu ve stupních celsia.
while (true) {
namerena = temp.getCelcius();
LCD.clear();
LCD.drawString("Namerena: " + Float.toString(namerena),0,2);
LCD.drawString("Zadana: " + Float.toString(zadana),0,3);
// Pokud stiskneme tlačítko ESCAPE, program skončí.
if (namerena < zadana) {
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