Example code how to get temperature from the TMP102 temperature sensor

Dependencies:   mbed TMP102

Committer:
eencae
Date:
Fri Feb 05 17:25:03 2016 +0000
Revision:
1:dd5fb735acf1
Parent:
0:21a200b880d7
Initial commit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 0:21a200b880d7 1 /*
eencae 0:21a200b880d7 2
eencae 1:dd5fb735acf1 3 2645_I2C_TMP102_Library
eencae 0:21a200b880d7 4
eencae 0:21a200b880d7 5 Sample code from ELEC2645 Week 17 Lab
eencae 0:21a200b880d7 6
eencae 1:dd5fb735acf1 7 Demonstrates how to re-factor the TMP102 code into a library
eencae 0:21a200b880d7 8
eencae 0:21a200b880d7 9 (c) Craig A. Evans, University of Leeds, Feb 2016
eencae 0:21a200b880d7 10
eencae 0:21a200b880d7 11 */
eencae 0:21a200b880d7 12
eencae 0:21a200b880d7 13 #include "mbed.h"
eencae 1:dd5fb735acf1 14 // include the library header, ensure the library has been imported into the project
eencae 1:dd5fb735acf1 15 #include "TMP102.h"
eencae 0:21a200b880d7 16
eencae 1:dd5fb735acf1 17 // Create TMP102 object
eencae 1:dd5fb735acf1 18 TMP102 tmp102(I2C_SDA,I2C_SCL);
eencae 0:21a200b880d7 19 // UART connection for PC
eencae 0:21a200b880d7 20 Serial pc(USBTX,USBRX);
eencae 0:21a200b880d7 21
eencae 0:21a200b880d7 22 // K64F on-board LEDs
eencae 0:21a200b880d7 23 DigitalOut r_led(LED_RED);
eencae 0:21a200b880d7 24 DigitalOut g_led(LED_GREEN);
eencae 0:21a200b880d7 25 DigitalOut b_led(LED_BLUE);
eencae 0:21a200b880d7 26 // K64F on-board switches
eencae 0:21a200b880d7 27 InterruptIn sw2(SW2);
eencae 0:21a200b880d7 28 InterruptIn sw3(SW3);
eencae 0:21a200b880d7 29
eencae 0:21a200b880d7 30 // error function hangs flashing an LED
eencae 0:21a200b880d7 31 void error();
eencae 0:21a200b880d7 32 // setup serial port
eencae 0:21a200b880d7 33 void init_serial();
eencae 0:21a200b880d7 34 // set-up the on-board LEDs and switches
eencae 0:21a200b880d7 35 void init_K64F();
eencae 0:21a200b880d7 36
eencae 0:21a200b880d7 37 int main()
eencae 0:21a200b880d7 38 {
eencae 1:dd5fb735acf1 39 // initialise the board and serial port
eencae 0:21a200b880d7 40 init_K64F();
eencae 0:21a200b880d7 41 init_serial();
eencae 1:dd5fb735acf1 42 // call the sensor init method using dot syntax
eencae 1:dd5fb735acf1 43 tmp102.init();
eencae 0:21a200b880d7 44
eencae 0:21a200b880d7 45 while (1) {
eencae 0:21a200b880d7 46
eencae 0:21a200b880d7 47 // read temperature and print over serial port
eencae 1:dd5fb735acf1 48 float T = tmp102.get_temperature();
eencae 0:21a200b880d7 49 pc.printf("T = %f K\n",T);
eencae 0:21a200b880d7 50 // small delay - 1s to match the update rate of the sensor (1 Hz)
eencae 0:21a200b880d7 51 wait(1.0);
eencae 0:21a200b880d7 52
eencae 0:21a200b880d7 53 }
eencae 0:21a200b880d7 54
eencae 0:21a200b880d7 55 }
eencae 0:21a200b880d7 56
eencae 0:21a200b880d7 57 void init_serial() {
eencae 0:21a200b880d7 58 // set to highest baud - ensure terminal software matches
eencae 0:21a200b880d7 59 pc.baud(115200);
eencae 0:21a200b880d7 60 }
eencae 0:21a200b880d7 61
eencae 0:21a200b880d7 62 void init_K64F()
eencae 0:21a200b880d7 63 {
eencae 0:21a200b880d7 64 // on-board LEDs are active-low, so set pin high to turn them off.
eencae 0:21a200b880d7 65 r_led = 1;
eencae 0:21a200b880d7 66 g_led = 1;
eencae 0:21a200b880d7 67 b_led = 1;
eencae 0:21a200b880d7 68
eencae 0:21a200b880d7 69 // since the on-board switches have external pull-ups, we should disable the internal pull-down
eencae 0:21a200b880d7 70 // resistors that are enabled by default using InterruptIn
eencae 0:21a200b880d7 71 sw2.mode(PullNone);
eencae 0:21a200b880d7 72 sw3.mode(PullNone);
eencae 0:21a200b880d7 73
eencae 0:21a200b880d7 74 }