A small test program
The usage of the class LM75 will be demonstrated by a small testprogram, which reads the temperature value via this class and displays it on the LCD. The program is very simple and may roughly be described in three parts:
-
The constructor (line 29) creates an instance of the class
LM75, which thereupon is stored in the local variable lm75. The used slave address is set to the deviceAddress stated in line 15. The address (0x90 in hexadecimal) corresponds to the shown circuitry of the LM75.
-
The determination of the measured value takes place in line 35. The value returned by the method
lm75.getTemp() is temporarily stored in the integer-type variable temp. The readout occurs inside of a so-called try-catch-block to catch and displays errors if necessary (lines 34-38).
-
The formatted output happens in lines 39-46. The measured value stored in
temp is displayed via a console (class jcontrol.comm.DisplayConsole) on the LCD.
| 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
Note: The character string "\u00b0C" in line 46 represents "°C". The sequence "\u00b0" is the UTF-8 notation of the degree character. This is used, because some editors modify the (special) character "°" while saving the according file, so that the character will not be displayed properly on a JControl device.
Figure 3 shows the above program while running in the simulator of the JControl/IDE. The temperature value is fixed to 0°, because the connection to the external temperature sensor LM75 can not be simulated. But if everything is working properly, the real measured temperature value would be displayed here.

Figure 3: Screenshot of the LM75 test program (JControl/Simulator)