Ein kleines Testprogramm

Um die Klasse LM75 zu benutzen, wird nun ein kleines Testprogramm gezeigt, das die Temperaturdaten über diese Klasse ausliest und auf dem Display ausgibt. Das Programm ist sehr einfach und läßt sich im Groben in drei Teilen beschreiben:

  • Der Konstruktor (Zeile 29) legt eine Instanz der Klasse LM75 in der lokalen Variablen lm75 an. Dabei wird die Slave-Adresse mit der in Zeile 15 angegebenen Adresse eingestellt (deviceAddress). Diese entspricht mit 0x90 (im Hexadezimalsystem) der in diesem Tutorial gezeigten Beschaltung des LM75.
  • Die Meßwertbestimmung erfolgt in Zeile 35. Dabei wird der von der Methode lm75.getTemp() zurückgegebene Meßwert in der Integer-Variablen temp zwischengespeichert. Das Auslesen erfolgt in einem sog. try-catch-Block um ggf. einen Fehler abfangen und anzeigen zu können (Zeilen 34-38).
  • Die formatierte Ausgabe erfolgt in den Zeilen 39-46. Der in temp zwischengespeicherte Meßwert wird hier über die Konsole (Klasse jcontrol.comm.DisplayConsole) auf dem Display ausgegeben.

1    import java.io.IOException;
2    import jcontrol.comm.DisplayConsole;
3    import jcontrol.lang.ThreadExt;
4    
5    /**
6     * <p>LM75Test shows how to read the LM75 temperature
7     * detector class of the jcontrol.bus.i2c library.</p>
8     *
9     * <p>(C) DOMOLOGIC Home Automation GmbH 2003-2005</p>
10     */
11    public class LM75Test {
12    
13      /** DisplayConsole */
14      DisplayConsole console;
15      int deviceAddress = 0x90;
16    
17      /**
18       * Application Constructor.
19       */
20      public LM75Test() {
21    
22        // init DisplayConsole
23        console = new DisplayConsole();
24    
25        // display startup message
26        console.println("LM75 Test Program.");
27        console.println();
28     
29        LM75 lm75 = new LM75(deviceAddress);
30    
31        for (;;) {
32          int temp = 0;
33          for (;;) {
34            try{
35              temp = lm75.getTemp();//get temperature value
36            }catch(IOException e){
37              console.println("Error: Sensor not responding!");
38            }
39            console.print("Read: ".concat(String.valueOf(temp)));
40            //temperature resolution is 1/10 centigrade
41            int whole = temp/10;
42            int parts = temp%10;
43            console.println(" = ".concat(Integer.toString(whole))
44                                 .concat(".")
45                                 .concat(Integer.toString(parts))
46                                 .concat("\u00b0C"));     
47            try{
48              ThreadExt.sleep(500);//do nothing for 500 msecs
49            }catch(InterruptedException e) {}
50          }
51        }
52      }
53    
54    
55      /**
56       * Main method. Program execution starts here.
57       */
58      public static void main(String[] args) {
59        new LM75Test();// start measuring
60      }
61    }
Listing 2: LM75Test.java

Anmerkung: Die Zeichenkette "\u00b0C" in Zeile 46 steht für "°C". Bei der Sequenz "\u00b0" handelt es sich um die hexadezimale UTF-8-Schreibweise des Grad-Zeichens. Wir verwenden diese, da manche Editoren das (Sonder-)Zeichen "°" beim Abspeichern modifizieren und es dann auf dem JControl-Gerät nicht mehr korrekt dargestellt wird.

Bild 3 zeigt obiges Programm während es im Simulator der JControl/IDE ausgeführt wird. Der Temperaturwert liegt hier natürlich bei 0, da in der Simulation die Verbindung zu einem externen Temperatursensor LM75 nicht hergestellt werden kann. Aber wenn alles richtig funktioniert, dann stünde hier in der Realität der gemessene Temperaturwert.

Bild 3: Screenshot des LM75Test-Programms (JControl/Simulator)