Current temperature express as coloured theme.

Dependencies:   N5110 TMP102 mbed

Fork of 2645_I2C_TMP102 by Craig Evans

Revision:
1:dd5fb735acf1
Parent:
0:21a200b880d7
Child:
2:3789998dde80
--- a/main.cpp	Fri Feb 05 16:23:38 2016 +0000
+++ b/main.cpp	Fri Feb 05 17:25:03 2016 +0000
@@ -1,30 +1,21 @@
 /* 
 
-2645_I2C_TMP102
+2645_I2C_TMP102_Library
 
 Sample code from ELEC2645 Week 17 Lab
 
-Demonstrates how to read the temperature from an I2C sensor
+Demonstrates how to re-factor the TMP102 code into a library
 
 (c) Craig A. Evans, University of Leeds, Feb 2016
 
 */ 
 
 #include "mbed.h"
-
-// addresses for ADD0 connected to GND
-#define TMP102_ADD      0x48
-#define TMP102_R_ADD    0x91
-#define TMP102_W_ADD    0x90
+// include the library header, ensure the library has been imported into the project
+#include "TMP102.h"
 
-// register addresses
-#define TEMP_REG    0x00
-#define CONFIG_REG  0x01
-#define THIGH_REG   0x02
-#define TLOW_REG    0x03
-
-// I2C peripheral for temperature sensor
-I2C tmp102(I2C_SDA,I2C_SCL);  
+// Create TMP102 object
+TMP102 tmp102(I2C_SDA,I2C_SCL);  
 // UART connection for PC
 Serial pc(USBTX,USBRX);
 
@@ -42,22 +33,19 @@
 void init_serial();
 // set-up the on-board LEDs and switches
 void init_K64F();
-// initialisation function for temperature sensor
-void init_TMP102();
-// function to read temperature from sensor (in degrees C)
-float get_temperature();
 
 int main()
 {
-    // initialise the board, serial port and sensor
+    // initialise the board and serial port
     init_K64F();
     init_serial(); 
-    init_TMP102();
+    // call the sensor init method using dot syntax
+    tmp102.init();
     
     while (1) {
         
         // read temperature and print over serial port
-        float T = get_temperature();
+        float T = tmp102.get_temperature();
         pc.printf("T = %f K\n",T);
         // small delay - 1s to match the update rate of the sensor (1 Hz)
         wait(1.0);
@@ -84,67 +72,3 @@
     sw3.mode(PullNone);
 
 }
-
-void error()
-{
-    while(1) {  // if error, hang while flashing error message
-        r_led = 0;
-        wait(0.2);
-        r_led = 1;
-        wait(0.2);    
-    }    
-}
-
-void init_TMP102()
-{    
-    tmp102.frequency(400000); // set bus speed to 400 kHz
-
-    int ack;  // used to store acknowledgement bit
-    char config_data[2];  // array for data
-    char reg = CONFIG_REG;  // register address
-     
-    //////// Read current status of configuration register ///////
-        
-    ack = tmp102.write(TMP102_W_ADD,&reg,1);  // send the slave write address and the configuration register address
-    if (ack)
-        error();  // if we don't receive acknowledgement, flash error message
-            
-    ack = tmp102.read(TMP102_R_ADD,config_data,2);  // read default 2 bytes from configuration register and store in array
-    if (ack)
-        error();  // if we don't receive acknowledgement, flash error message
-
-    ///////// Configure the register //////////
-
-    // set conversion rate to 1 Hz - CR1 and CR2 are in the second data byte
-    config_data[1] |= (1 << 6);    // set bit 6  
-    config_data[1] &= ~(1 << 7);    // clear bit 7  
-       
-    //////// Send the configured register value to the slave config register ////////////
-    
-    // create data packet
-    char data_packet[3] = {reg,config_data[0],config_data[1]};
-        
-    ack = tmp102.write(TMP102_W_ADD,data_packet,3);  // send the data packet to the slave write address
-    if (ack)
-        error();  // if we don't receive acknowledgement, flash error message
-    
-}
-
-float get_temperature()
-{
-    int ack;  // used to store acknowledgement bit
-    char data[2];  // array for data
-    char reg = TEMP_REG;  // temperature register address
-
-    ack = tmp102.write(TMP102_W_ADD,&reg,1);  // send temperature register address
-    if (ack)
-        error();  // if we don't receive acknowledgement, flash error message
-
-    ack = tmp102.read(TMP102_R_ADD,data,2);  // read 2 bytes from temperature register and store in array
-    if (ack)
-        error();  // if we don't receive acknowledgement, flash error message
-
-    int temperature = (data[0] << 4) | (data[1] >> 4);
-
-    return temperature*0.0625;
-}
\ No newline at end of file