Current temperature express as coloured theme.

Dependencies:   N5110 TMP102 mbed

Fork of 2645_I2C_TMP102 by Craig Evans

Committer:
bonnyngangu
Date:
Mon May 09 12:17:15 2016 +0000
Revision:
2:3789998dde80
Parent:
1:dd5fb735acf1
Temperature reader with blinking LEDs.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 0:21a200b880d7 1 /*
bonnyngangu 2:3789998dde80 2 Joystick_Project
bonnyngangu 2:3789998dde80 3 Bonny Ngangu
bonnyngangu 2:3789998dde80 4 6 March 2016
bonnyngangu 2:3789998dde80 5 (c) Bonny Ngangu, University of Leeds, Feb 2016
eencae 0:21a200b880d7 6
eencae 0:21a200b880d7 7 */
eencae 0:21a200b880d7 8
eencae 0:21a200b880d7 9 #include "mbed.h"
eencae 1:dd5fb735acf1 10 // include the library header, ensure the library has been imported into the project
eencae 1:dd5fb735acf1 11 #include "TMP102.h"
bonnyngangu 2:3789998dde80 12 #include "N5110.h"
bonnyngangu 2:3789998dde80 13
bonnyngangu 2:3789998dde80 14
bonnyngangu 2:3789998dde80 15 //Joystick direction tolerance altering
bonnyngangu 2:3789998dde80 16 #define DIRECTION_TOLERANCE 0.1
bonnyngangu 2:3789998dde80 17
eencae 0:21a200b880d7 18
eencae 1:dd5fb735acf1 19 // Create TMP102 object
eencae 1:dd5fb735acf1 20 TMP102 tmp102(I2C_SDA,I2C_SCL);
eencae 0:21a200b880d7 21 // UART connection for PC
eencae 0:21a200b880d7 22 Serial pc(USBTX,USBRX);
eencae 0:21a200b880d7 23
eencae 0:21a200b880d7 24 // K64F on-board LEDs
eencae 0:21a200b880d7 25 DigitalOut r_led(LED_RED);
eencae 0:21a200b880d7 26 DigitalOut g_led(LED_GREEN);
eencae 0:21a200b880d7 27 DigitalOut b_led(LED_BLUE);
bonnyngangu 2:3789998dde80 28
bonnyngangu 2:3789998dde80 29 // VCC, SCE, RST, D/C, MOSI, SCLK, LED
bonnyngangu 2:3789998dde80 30 N5110 lcd (PTE26 , PTA0 , PTC4 , PTD0 , PTD2 , PTD1 , PTC3);
bonnyngangu 2:3789998dde80 31
bonnyngangu 2:3789998dde80 32
bonnyngangu 2:3789998dde80 33
eencae 0:21a200b880d7 34 // K64F on-board switches
eencae 0:21a200b880d7 35 InterruptIn sw2(SW2);
eencae 0:21a200b880d7 36 InterruptIn sw3(SW3);
eencae 0:21a200b880d7 37
eencae 0:21a200b880d7 38 // error function hangs flashing an LED
eencae 0:21a200b880d7 39 void error();
eencae 0:21a200b880d7 40 // setup serial port
eencae 0:21a200b880d7 41 void init_serial();
eencae 0:21a200b880d7 42 // set-up the on-board LEDs and switches
eencae 0:21a200b880d7 43 void init_K64F();
eencae 0:21a200b880d7 44
eencae 0:21a200b880d7 45 int main()
eencae 0:21a200b880d7 46 {
bonnyngangu 2:3789998dde80 47 // first need to initialise display
bonnyngangu 2:3789998dde80 48 lcd.init();
eencae 1:dd5fb735acf1 49 // initialise the board and serial port
eencae 0:21a200b880d7 50 init_K64F();
eencae 0:21a200b880d7 51 init_serial();
eencae 1:dd5fb735acf1 52 // call the sensor init method using dot syntax
eencae 1:dd5fb735acf1 53 tmp102.init();
eencae 0:21a200b880d7 54
eencae 0:21a200b880d7 55 while (1) {
eencae 0:21a200b880d7 56
bonnyngangu 2:3789998dde80 57 // these are default settings so not strictly needed
bonnyngangu 2:3789998dde80 58 lcd.normalMode(); // normal colour mode
bonnyngangu 2:3789998dde80 59 lcd.setBrightness(0.5); // put LED backlight on 50%
bonnyngangu 2:3789998dde80 60
bonnyngangu 2:3789998dde80 61 // can directly print strings at specified co-ordinates
bonnyngangu 2:3789998dde80 62 lcd.printString("Current Temp",0,0);
bonnyngangu 2:3789998dde80 63
eencae 0:21a200b880d7 64 // read temperature and print over serial port
eencae 1:dd5fb735acf1 65 float T = tmp102.get_temperature();
eencae 0:21a200b880d7 66 pc.printf("T = %f K\n",T);
bonnyngangu 2:3789998dde80 67
bonnyngangu 2:3789998dde80 68 char buffer[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
bonnyngangu 2:3789998dde80 69 // so can display a string of a maximum 14 characters in length
bonnyngangu 2:3789998dde80 70 // or create formatted strings - ensure they aren't more than 14 characters long
bonnyngangu 2:3789998dde80 71 int length = sprintf(buffer,"T = %.2f C",T); // print formatted data to buffer
bonnyngangu 2:3789998dde80 72 // it is important the format specifier ensures the length will fit in the buffer
bonnyngangu 2:3789998dde80 73 if (length <= 14) // if string will fit on display
bonnyngangu 2:3789998dde80 74 lcd.printString(buffer,0,2);
bonnyngangu 2:3789998dde80 75
eencae 0:21a200b880d7 76 // small delay - 1s to match the update rate of the sensor (1 Hz)
eencae 0:21a200b880d7 77 wait(1.0);
eencae 0:21a200b880d7 78
bonnyngangu 2:3789998dde80 79 if(T<27){
bonnyngangu 2:3789998dde80 80
bonnyngangu 2:3789998dde80 81 g_led = 0;
bonnyngangu 2:3789998dde80 82 lcd.printString("Fan OFF",0,4);
bonnyngangu 2:3789998dde80 83 }
bonnyngangu 2:3789998dde80 84
bonnyngangu 2:3789998dde80 85 if (T>=30){
bonnyngangu 2:3789998dde80 86
bonnyngangu 2:3789998dde80 87 r_led = 0;
bonnyngangu 2:3789998dde80 88 lcd.printString("Fan ON ",0,4);
bonnyngangu 2:3789998dde80 89 }
bonnyngangu 2:3789998dde80 90
eencae 0:21a200b880d7 91 }
eencae 0:21a200b880d7 92
eencae 0:21a200b880d7 93 }
eencae 0:21a200b880d7 94
eencae 0:21a200b880d7 95 void init_serial() {
eencae 0:21a200b880d7 96 // set to highest baud - ensure terminal software matches
eencae 0:21a200b880d7 97 pc.baud(115200);
eencae 0:21a200b880d7 98 }
eencae 0:21a200b880d7 99
eencae 0:21a200b880d7 100 void init_K64F()
eencae 0:21a200b880d7 101 {
eencae 0:21a200b880d7 102 // on-board LEDs are active-low, so set pin high to turn them off.
eencae 0:21a200b880d7 103 r_led = 1;
eencae 0:21a200b880d7 104 g_led = 1;
eencae 0:21a200b880d7 105 b_led = 1;
eencae 0:21a200b880d7 106
eencae 0:21a200b880d7 107 // since the on-board switches have external pull-ups, we should disable the internal pull-down
eencae 0:21a200b880d7 108 // resistors that are enabled by default using InterruptIn
eencae 0:21a200b880d7 109 sw2.mode(PullNone);
eencae 0:21a200b880d7 110 sw3.mode(PullNone);
eencae 0:21a200b880d7 111 }