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