Rev 1.6 - Sample Period Work in progress

Dependencies:   mbed Bitmap N5110 TMP102 Joystick

Committer:
louismarr
Date:
Fri Jan 07 09:21:20 2022 +0000
Revision:
8:9c5ef970de26
Parent:
7:ef1dab708752
Child:
9:77a6ea988e01
Rev 1.6 Sample Period - Commented out

Who changed what in which revision?

UserRevisionLine numberNew contents of line
louismarr 5:138a91e25e1c 1 /*
louismarr 5:138a91e25e1c 2
louismarr 7:ef1dab708752 3 Acknowledgements to (c) Craig A. Evans, University of Leeds, Feb 2016 for Temp Library
louismarr 7:ef1dab708752 4 Acknowledgements to (c) Dr. Edmond Nurellari, University of Lincoln, Dec 2021 for Classes used
louismarr 5:138a91e25e1c 5
louismarr 7:ef1dab708752 6 Using Various Libraries & Functions in order to create a
louismarr 7:ef1dab708752 7 Temperature Based Health Assistive Smart Device
louismarr 0:f8a8c6a8a5c3 8 */
louismarr 0:f8a8c6a8a5c3 9
louismarr 7:ef1dab708752 10 /*
louismarr 7:ef1dab708752 11 ======================== Library Imports =======================================
louismarr 7:ef1dab708752 12 Importing the Header Files from the Class Libraries into the main.cpp
louismarr 7:ef1dab708752 13 */
louismarr 7:ef1dab708752 14 #include "mbed.h" // Mbed OS Library
louismarr 7:ef1dab708752 15 #include "TMP102.h" // TMP102 Header File
louismarr 7:ef1dab708752 16 #include "N5110.h" // N5110 Header File
louismarr 7:ef1dab708752 17 #include "Bitmap.h" // Bitmap Header File
louismarr 7:ef1dab708752 18
louismarr 0:f8a8c6a8a5c3 19
louismarr 7:ef1dab708752 20 /*
louismarr 7:ef1dab708752 21 ========================== Vairable Setup ======================================
louismarr 7:ef1dab708752 22 Pre-Determining the various Variable names to hardware pins on the K64F Board
louismarr 7:ef1dab708752 23 */
louismarr 0:f8a8c6a8a5c3 24
louismarr 7:ef1dab708752 25 TMP102 tmp102(I2C_SDA,I2C_SCL); // Create TMP102 object
louismarr 7:ef1dab708752 26 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); // Create lcd objec
louismarr 7:ef1dab708752 27 Serial serial(USBTX,USBRX); // CoolTerm TX, RX Comms Setup for Debug
louismarr 7:ef1dab708752 28 AnalogIn SP(PTB2); // Potentiometer for Setpoint
louismarr 8:9c5ef970de26 29 Timer timer(); // USE FOR LOGGING BETWEEN 0-10s
louismarr 7:ef1dab708752 30
louismarr 7:ef1dab708752 31 DigitalOut RED_led(LED_RED); // On-board K64F LED'S
louismarr 7:ef1dab708752 32 DigitalOut GRN_led(LED_GREEN);
louismarr 7:ef1dab708752 33 DigitalOut BLU_led(LED_BLUE);
louismarr 7:ef1dab708752 34
louismarr 7:ef1dab708752 35 InterruptIn sw2(SW2); // On-board K64F Switches
louismarr 5:138a91e25e1c 36 InterruptIn sw3(SW3);
louismarr 0:f8a8c6a8a5c3 37
louismarr 8:9c5ef970de26 38
louismarr 7:ef1dab708752 39 /*======================= Void Declaration ===================================*/
louismarr 7:ef1dab708752 40 void error(); // Error Hang Code Function
louismarr 7:ef1dab708752 41 void init_serial(); // Setup serial port Function
louismarr 7:ef1dab708752 42 void init_K64F(); // K64F Disabling Onboard Components Function
louismarr 1:5cdfc8d78097 43
louismarr 7:ef1dab708752 44 /*======================== Main Function =====================================*/
louismarr 0:f8a8c6a8a5c3 45 int main()
louismarr 0:f8a8c6a8a5c3 46 {
louismarr 6:117edd5dc0a0 47
louismarr 7:ef1dab708752 48 init_K64F(); // Initialise K64F Board
louismarr 7:ef1dab708752 49 init_serial(); // Initialise Serial Port
louismarr 7:ef1dab708752 50 tmp102.init(); // Initialise Temp Sensor
louismarr 7:ef1dab708752 51 lcd.init(); // Initialise LCD
louismarr 7:ef1dab708752 52
louismarr 6:117edd5dc0a0 53 lcd.setContrast(0.4);
louismarr 0:f8a8c6a8a5c3 54
louismarr 0:f8a8c6a8a5c3 55 while (1) {
louismarr 0:f8a8c6a8a5c3 56
louismarr 8:9c5ef970de26 57 //timer.start();
louismarr 8:9c5ef970de26 58 //for(i = 0; i < 10; i++){
louismarr 5:138a91e25e1c 59 // read temperature and print over serial port
louismarr 5:138a91e25e1c 60 float T = tmp102.get_temperature();
louismarr 5:138a91e25e1c 61 serial.printf("T = %f C\n",T);
louismarr 8:9c5ef970de26 62 //serial.printf("%2.2fs: %3.1f deg C\n\r", timer.read(), T);
louismarr 8:9c5ef970de26 63 //timer.end();
louismarr 6:117edd5dc0a0 64
louismarr 5:138a91e25e1c 65 // small delay - 1s to match the update rate of the sensor (1 Hz)
louismarr 6:117edd5dc0a0 66 lcd.clear(); // clear buffer at start of every loop
louismarr 6:117edd5dc0a0 67 // can directly print strings at specified co-ordinates (must be less than 84 pixels to fit on display)
louismarr 7:ef1dab708752 68 lcd.printString("Temperature",0,0);
louismarr 6:117edd5dc0a0 69
louismarr 7:ef1dab708752 70 char buffer[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14 Max amound of Characters)
louismarr 6:117edd5dc0a0 71 // or create formatted strings - ensure they aren't more than 14 characters long
louismarr 6:117edd5dc0a0 72
louismarr 6:117edd5dc0a0 73 int length = sprintf(buffer,"T=%.2F 'C",T); // print formatted data to buffer
louismarr 6:117edd5dc0a0 74 // it is important the format specifier ensures the length will fit in the buffer
louismarr 6:117edd5dc0a0 75 if (length <= 14) // if string will fit on display (assuming printing at x=0)
louismarr 7:ef1dab708752 76 lcd.printString(buffer,0,1); // display on screen
louismarr 6:117edd5dc0a0 77
louismarr 7:ef1dab708752 78 float Set = 100 * SP;
louismarr 6:117edd5dc0a0 79 length = sprintf(buffer,"SP=%.2F 'C",Set);
louismarr 6:117edd5dc0a0 80 if (length <= 14) // if string will fit on display (assuming printing at x=0)
louismarr 7:ef1dab708752 81 lcd.printString(buffer,0,2); // display on screen
louismarr 6:117edd5dc0a0 82 serial.printf(" SP = %f", Set);
louismarr 7:ef1dab708752 83
louismarr 6:117edd5dc0a0 84
louismarr 7:ef1dab708752 85 if (Set < T){
louismarr 7:ef1dab708752 86 lcd.clear();
louismarr 7:ef1dab708752 87 lcd.printString("Over Heating",3,2);
louismarr 7:ef1dab708752 88 //serial.printf("OverTemp");
louismarr 7:ef1dab708752 89 }
louismarr 6:117edd5dc0a0 90 lcd.refresh();
louismarr 5:138a91e25e1c 91 wait(1.0);
louismarr 0:f8a8c6a8a5c3 92
louismarr 0:f8a8c6a8a5c3 93 }
louismarr 5:138a91e25e1c 94
louismarr 1:5cdfc8d78097 95 }
louismarr 7:ef1dab708752 96 /*
louismarr 7:ef1dab708752 97 =========================== Void Setup =========================================
louismarr 7:ef1dab708752 98 Custom Function's are called Void's, which are called upon inside the of the
louismarr 7:ef1dab708752 99 Main Function Code
louismarr 7:ef1dab708752 100 */
louismarr 0:f8a8c6a8a5c3 101
louismarr 0:f8a8c6a8a5c3 102 void init_serial() {
louismarr 7:ef1dab708752 103 // Baud Rate Communication for CoolTerm Debugging
louismarr 7:ef1dab708752 104 serial.baud(9600);
louismarr 0:f8a8c6a8a5c3 105 }
louismarr 0:f8a8c6a8a5c3 106
louismarr 5:138a91e25e1c 107 void init_K64F()
louismarr 0:f8a8c6a8a5c3 108 {
louismarr 7:ef1dab708752 109 // on-board LEDs are active when 0, so setting the pin to 1 turns them off.
louismarr 7:ef1dab708752 110 RED_led = 1;
louismarr 7:ef1dab708752 111 GRN_led = 1;
louismarr 7:ef1dab708752 112 BLU_led = 1;
louismarr 5:138a91e25e1c 113
louismarr 7:ef1dab708752 114 /* since the on-board switches have external pull-ups, disable the
louismarr 7:ef1dab708752 115 * internal pull-down resistors that are enabled by default using
louismarr 7:ef1dab708752 116 * the InterruptIn Command */
louismarr 5:138a91e25e1c 117 sw2.mode(PullNone);
louismarr 5:138a91e25e1c 118 sw3.mode(PullNone);
louismarr 0:f8a8c6a8a5c3 119
louismarr 0:f8a8c6a8a5c3 120 }
louismarr 7:ef1dab708752 121 /* void init_BP()
louismarr 7:ef1dab708752 122 {
louismarr 7:ef1dab708752 123
louismarr 7:ef1dab708752 124 }